Был ли у вас опыт работы с Ansible Galaxy?

«Был ли у вас опыт работы с Ansible Galaxy?» — вопрос из категории Ansible, который задают на 24% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, активно использую Ansible Galaxy в своей работе. Это центральный репозиторий для поиска, повторного использования и совместного использования ролей Ansible.

Как я его применяю:

  1. Поиск и использование готовых ролей:

    • Для стандартных задач (развертывание Nginx, настройка Docker, управление пользователями) я сначала ищу проверенные роли на Galaxy, чтобы не изобретать велосипед.
    • Например, для быстрого развертывания веб-сервера использовал роль geerlingguy.nginx.
    # Установка роли из Galaxy
    ansible-galaxy install geerlingguy.nginx
    # playbook.yml - Использование установленной роли
    - hosts: webservers
      become: yes
      roles:
        - role: geerlingguy.nginx
          vars:
            nginx_http_template_enable: true
            nginx_vhosts:
              - listen: "80"
                server_name: "example.com"
                root: "/var/www/html"
  2. Оценка и управление зависимостями:

    • Для проектов создаю файл requirements.yml, в котором явно указываю версии используемых ролей. Это обеспечивает воспроизводимость и контроль.
    # requirements.yml
    roles:
      - src: geerlingguy.docker
        version: "7.0.0"
      - src: geerlingguy.postgresql
        version: "2.3.0"
    ansible-galaxy install -r requirements.yml
  3. Создание и публикация собственных ролей:

    • Разрабатывал внутренние роли для стандартизации развертывания нашего стека приложений (Java-сервисы + PostgreSQL + Redis).
    • Структурировал роли по best practices: tasks/, handlers/, defaults/, vars/, templates/, meta/.
    • В файле meta/main.yml добавлял зависимости, информацию об авторе и поддерживаемых платформах.
    • Публиковал внутренние роли в приватном Git-репозитории, подключая их через requirements.yml по SSH-ссылке.

Преимущества подхода: Значительная экономия времени, повышение надежности за счет использования сообществом протестированного кода и стандартизация инфраструктуры.