Какой у вас опыт самостоятельного написания Ansible-плейбуков?

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

Ответ

Мой опыт включает проектирование и написание плейбуков для автоматизации развертывания инфраструктуры, конфигурации серверов и оркестрации приложений. Я активно использовал:

  • Роли для создания переиспользуемых и модульных компонентов.
  • Шаблоны Jinja2 для генерации конфигурационных файлов (nginx, systemd, приложения).
  • Управление переменными через group_vars, host_vars и ansible-vault для секретов.
  • Динамический инвентарь, генерируемый из облачных провайдеров (AWS EC2, Yandex Cloud).

Пример плейбука для настройки веб-сервера с Nginx и деплоя статического приложения:

---
- name: Configure web server and deploy app
  hosts: webservers
  become: yes
  vars:
    app_version: "1.0.0"
  tasks:
    - name: Install Nginx and required tools
      apt:
        name:
          - nginx
          - unzip
        state: present
        update_cache: yes

    - name: Deploy application artifact
      unarchive:
        src: "https://internal-artifactory/app-{{ app_version }}.zip"
        dest: /var/www/html/
        remote_src: yes
        owner: www-data
        group: www-data

    - name: Configure Nginx with template
      template:
        src: nginx.conf.j2
        dest: /etc/nginx/sites-available/default
      notify: Restart Nginx

  handlers:
    - name: Restart Nginx
      service:
        name: nginx
        state: restarted

Также интегрировал плейбуки в CI/CD пайплайны для выполнения проверок (ansible-lint) и тестирования в staging-среде перед продом.