Ручное развёртывание и настройка серверов быстро превращается в хаос. 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.
1.1
18 January 2026 в 10:25