Рутина на сервере съедает часы? Ansible поможет автоматизировать всё — от установки сервисов до обновлений. Разбираемся, как настроить его с нуля и не наломать дров.

Когда число серверов растёт, любые действия начинают повторяться: те же команды, те же настройки, те же баги, если что-то сделать не в том порядке. А теперь представьте, что всё это можно задать один раз в тексте. Такая возможность существует. Ansible аккуратно разложит команды по всем нужным серверам — особенно удобно, если вы управляете инфраструктурой на VPS и хотите сократить рутину.
В материале рассказали, как установить Ansible на Ubuntu, что такое плейбуки и почему автоматизация сэкономит не только время, но и нервы.
Установка Ansible на Ubuntu
Чтобы перейти от ручных команд к автоматизации, первым делом нужно установить сам инструмент Ansible. Он ставится на управляющую машину, то есть туда, откуда вы будете отдавать приказы остальным серверам. Это может быть локальный ПК или VPS с Ubuntu.
Начнём с обновления системного списка пакетов:
sudo apt update
Теперь поставьте сам Ansible:
sudo apt install ansible
Проверьте, всё ли встало как надо:
ansible --version
Если увидите номер версии, значит установка прошла успешно. В стандартных репозиториях Ubuntu обычно доступна рабочая, но не самая свежая версия. Если нужна новее, можно подключить официальный PPA от разработчиков и переустановить пакет уже оттуда. Но для начала будет достаточно и текущей версии, она полностью рабочая.
Настройка SSH-доступа и инвентарного файла
Для Ansible важно одно: уметь без преград заходить на серверы. Всё происходит по SSH, поэтому первым делом настраиваем доступ по ключу, чтобы потом не вводить пароль на каждом шаге.
Если ключей ещё нет, создайте их:
ssh-keygen -t rsa
Можно просто нажать Enter на всех шагах, не меняя настройки. Если хочется, можно задать фразу-пароль. Для этого в процессе генерации ключа, когда появится запрос Enter passphrase (empty for no passphrase), введите надёжный пароль и подтвердите его. Это добавит дополнительный уровень защиты на случай, если приватный ключ попадёт в чужие руки.
Теперь скопируйте ключ на нужный сервер:
ssh-copy-id user@server_ip
Замените user и server_ip на реальные значения. После этого Ansible сможет подключаться к серверу без пароля, через ключ.
Чтобы не получать запрос «Are you sure you want to continue connecting?» при первом подключении, в конфигурации Ansible можно отключить проверку ключа хоста. В файле ansible.cfg (глобальном или локальном) добавьте:
[defaults]
host_key_checking = False
Важно
Это удобно в тестовой среде, но в боевой лучше оставить проверку включённой. Так безопаснее.
Теперь опишем, какие серверы будут под управлением. Для этого создайте инвентарный файл. Зачастую он расположен по пути /etc/ansible/hosts, но удобнее хранить его рядом с плейбуками, например, просто в файле hosts.
Пример содержимого:
[webservers]
192.168.0.101 ansible_user=admin ansible_ssh_private_key_file=/home/admin/.ssh/id_rsa
Что здесь происходит:
- [webservers] — имя группы серверов;
- 192.168.0.101 — это пример IP-адреса, обязательно замените его на IP вашего сервера (внешний или внутренний в зависимости от среды);
- ansible_user — пользователь, под которым подключаемся;
- ansible_ssh_private_key_file — путь к приватному ключу (локально).
Можно создать сколько угодно групп: webservers, dbservers, appservers — и задавать переменные для каждой группы или всей инфраструктуры.
Проверим, всё ли настроено правильно. Запустите команду:
ansible all -m ping -i hosts
Если в ответ получите SUCCESS от каждого IP, значит SSH-канал работает и можно двигаться дальше. Ansible отправил ping, серверы ответили — всё работает корректно.
Если где-то вылезла ошибка, скорее всего:
- ключ не скопирован или указан не тот путь,
- порт SSH закрыт,
- пользователь не совпадает.
Проверяйте детали. Ansible требует аккуратности.
Пишем плейбук: автоматизируем установку Nginx
Ansible работает по сценариям, и эти сценарии называются плейбуками. Благодаря этому файлу можно настроить хоть сотню серверов за пару минут. Плейбук пишется в формате YAML — важно соблюдать отступы. Используйте только пробелы (обычно по два), табуляция приведёт к ошибкам.
Создадим простой плейбук, который:
- обновит список пакетов,
- установит Nginx,
- включит его автозапуск.
Создайте файл install_nginx.yml и добавьте в него:
---
- name: Установка и запуск Nginx
hosts: webservers
become: yes
tasks:
- name: Обновление кеша APT
apt:
update_cache: yes
cache_valid_time: 3600
- name: Установка пакета Nginx
apt:
name: nginx
state: present
- name: Запуск и включение сервиса Nginx
service:
name: nginx
state: started
enabled: true
Что тут происходит:
- hosts: webservers — укажите, на какие сервера применяется сценарий. Название должно совпадать с группой из инвентарного файла.
- become: yes — даёт Ansible право выполнять команды от имени root.
- Внутри tasks идёт пошаговое описание: сначала обновить пакеты, потом установить Nginx, затем включить его и запустить.
Чтобы применить плейбук, запустите команду:
ansible-playbook -i hosts install_nginx.yml
Если всё указано верно, Ansible сам выполнит все действия по порядку. Не нужно ничего копировать, не нужно заходить по SSH, всё произойдёт автоматически. А если серверов десять или двадцать? Ровно столько же строк в терминале, и ни одной ошибки из-за «забыл перезапустить сервис».
Безопасность и порядок: как не превратить автоматизацию в хаос
Когда управление серверами переходит в руки Ansible, соблазн сделать побыстрее и попроще велик. Но автоматизация — это не только про скорость. Это ещё и про надёжность. Чем раньше вы выстроите порядок, тем меньше будете тратить времени на устранение неожиданных последствий.
Начать стоит с основ. Вместо паролей лучше сразу использовать SSH-ключи. Обязательно отключите вход по паролю, а если есть возможность, запретите root-доступ. Приватный ключ храните в безопасном месте, задав права 600, чтобы к нему не смог подобраться никто лишний.
Второй шаг — разделение окружений. Отдельные файлы инвентаря для продакшена, стейджинга и теста помогут избежать ошибок. Если нужно, добавьте переменные для групп или хостов. Весь проект становится более прозрачным и безопасным.
Конфиденциальные данные вроде паролей, токенов или API-ключей не должны лежать в открытом YAML-файле. Для этого существует Ansible Vault. Он шифрует переменные, и расшифровка возможна только по ключу или паролю.
Когда проект разрастается, один плейбук перестаёт справляться. Здесь на помощь приходит структура: каталоги roles/, group_vars/, host_vars/ помогают навести порядок и переиспользовать задачи без копипаста. Такой подход позволяет легко вносить изменения и развивать систему без каши в сценариях.
И, конечно, не забывайте про контроль версий. Храните все плейбуки и конфиги в Git, описывайте изменения, тестируйте на отдельных машинах. Это простое правило, но оно спасает от ошибок, которые в спешке сложно отследить.
Используйте become: yes только там, где действительно нужно, и избегайте постоянной работы от имени root. Чем меньше прав, тем меньше последствий, если что-то пойдёт не так.
Следите за обновлениями и самого Ansible, и используемых ролей, и системных пакетов. Уязвимости появляются постоянно, и от устаревших модулей может быть больше вреда, чем пользы.
Не забывайте логировать. Сохраняйте выводы, просматривайте журналы, настраивайте уведомления. Это помогает не только вовремя отследить проблему, но и понять, как её избежать в будущем.
Если внедрить эти принципы с самого начала, автоматизация станет не точкой риска, а опорой в управлении инфраструктурой. Ansible не только разгружает руки, но и дисциплинирует.
Итоги
Ansible — это не просто способ автоматизировать установку Nginx. Это инструмент, который даёт контроль, помогает масштабировать инфраструктуру и снимает с администратора повторяющиеся задачи. Он не заменит человека, но освободит время и внимание для того, что действительно важно. Всё, что можно чётко описать в виде шагов, можно доверить Ansible и больше не держать в голове каждый раз одни и те же команды.
Читайте в блоге:
- Как установить и настроить Apache, PHP и MariaDB (LAMP-стек) в Ubuntu 22.04
- Продвинутая настройка брандмауэра: гибкость, автоматизация, масштабируемость
- Гайд по установке Mosquitto на Ubuntu 24.04