Автоматизация развёртывания с Ansible: базовый плейбук

Автоматизация развёртывания с Ansible: базовый плейбук

Ручное развёртывание и настройка серверов быстро превращается в хаос. Ansible позволяет описать состояние инфраструктуры в виде кода и применять его к десяткам серверов одной командой. В этой статье напишем базовый плейбук для установки и настройки nginx. Установка Ansible На управляющей машине (control node), например, на вашей рабочей станции или отдельном сервере: sudo apt-get updatesudo apt-get install -y ansibleansible --version Настройка inventory Создадим каталог проекта: mkdir -p ~/ansible-democd ~/ansible-demo Файл hosts.ini: [web]web1 ansible_host=192.168.1.10web2 ansible_host=192.168.1.11[web:vars]ansible_user=rootansible_ssh_private_key_file=~/.ssh/id_rsa Проверим соединение: ansible -i hosts.ini web -m ping Если всё настроено, увидите pong. Первый плейбук для установки nginx Создаём файл site.yml: - name: Configure web servers hosts: web become: yes tasks: - name: Ensure nginx is installed ansible.builtin.apt: name: nginx state: present update_cache: yes - name: Ensure nginx is running and enabled ansible.builtin.service: name: nginx state: started enabled: yes Запускаем: ansible-playbook -i hosts.ini site.yml Ansible сам подключится к каждому серверу из группы web, установит nginx и включит автозапуск. Настройка собственного конфигурационного файла nginx Добавим шаблон и задачу для его развёртывания. Создадим директорию для шаблонов: mkdir templates Файл templates/nginx.conf.j2: user www-data;worker_processes auto;pid /run/nginx.pid;events { worker_connections 1024;}http { sendfile on; server_tokens off; server { listen 80; server_name {{ inventory_hostname }}; location / { return 200 'Hello from {{ inventory_hostname }}!'; } }} Расширим site.yml: - name: Configure web servers hosts: web become: yes tasks: - name: Ensure nginx is installed ansible.builtin.apt: name: nginx state: present update_cache: yes - name: Deploy nginx config ansible.builtin.template: src: templates/nginx.conf.j2 dest: /etc/nginx/nginx.conf owner: root group: root mode: "0644" notify: - reload nginx - name: Ensure nginx is running and enabled ansible.builtin.service: name: nginx state: started enabled: yes handlers: - name: reload nginx ansible.builtin.service: name: nginx state: reloaded Повторно запускаем плейбук: ansible-playbook -i hosts.ini site.yml После выполнения на всех веб‑серверах будет одинаковый, задекларированный в коде конфиг nginx.

Комментарии (5)
  • 1
    1.1
    18 January 2026 в 10:25
    Ответить

    1.1

  • 1
    1
    18 January 2026 в 10:25
    Ответить

    1

    • 2
      2
      18 January 2026 в 10:25
      Ответить

      2

      • 3
        3
        18 January 2026 в 10:26
        Ответить

        3

    • 2
      2.1
      18 January 2026 в 10:26
      Ответить

      2.1

Оставить комментарий

Ваш комментарий будет опубликован после проверки модератором.