Ansible — это инструмент для автоматизации управления серверами, развертывания приложений и оркестрации. Он подходит для повседневных задач администрирования и позволяет централизованно управлять инфраструктурой с одной управляющей машины.
В этой инструкции рассмотрим базовую настройку Ansible: установку на Ubuntu, подготовку SSH-доступа, создание inventory-файла, запуск первого playbook и настройку файла ansible.cfg.
Что потребуется
- управляющая машина с Ubuntu;
- один или несколько удалённых серверов;
- доступ по SSH к управляемым хостам;
- права на установку пакетов.
Шаг 1. Установка Ansible на Ubuntu
Установка выполняется на управляющую машину — локальный компьютер или VPS с Ubuntu, с которого будет происходить подключение к другим серверам.
Сначала обновите список пакетов:
sudo apt update
Затем установите Ansible из стандартных репозиториев Ubuntu:
sudo apt install ansible
Проверьте, что установка завершилась успешно:
ansible --version
Если команда выводит информацию о версии, Ansible установлен корректно.
При необходимости Ansible можно установить и через pip, если требуется альтернативный способ управления пакетами Python.
Шаг 2. Настройка SSH-доступа к управляемым серверам
Ansible использует SSH для подключения к удалённым серверам. Чтобы не вводить пароль при каждом действии, рекомендуется настроить авторизацию по SSH-ключу.
Если SSH-ключ ещё не создан, сгенерируйте его на управляющей машине:
ssh-keygen -t rsa
В большинстве случаев достаточно нажимать Enter, чтобы принять параметры по умолчанию.
После этого скопируйте публичный ключ на удалённый сервер:
ssh-copy-id ваш_пользователь@ip_адрес_сервера
Замените ваш_пользователь и ip_адрес_сервера на реальные значения.
После выполнения команды ключ будет добавлен в файл authorized_keys на удалённом хосте, и Ansible сможет подключаться без запроса пароля.
Шаг 3. Создание inventory-файла
Inventory — это файл со списком серверов, которые будет обслуживать Ansible. Для удобства хосты можно объединять в группы.
Создайте файл inventory.ini в директории проекта:
[web_servers]
webserver1.example.com
webserver2.example.com
[db_servers]
dbserver.example.com
В этом примере:
- web_servers — группа веб-серверов;
- db_servers — группа серверов баз данных.
Названия групп можно задавать произвольно, в зависимости от структуры вашей инфраструктуры.
Чтобы проверить доступность всех хостов из inventory-файла, выполните команду:
ansible all -i inventory.ini -m ping
Если подключение настроено корректно, для каждого сервера будет получен ответ SUCCESS.
Шаг 4. Создание первого playbook
Playbook — это сценарий на YAML, в котором описываются задачи, выполняемые на целевых серверах.
Создайте файл first_playbook.yml со следующим содержимым:
---
- name: Обновление кэша apt на веб-серверах
hosts: web_servers
become: yes
tasks:
- name: Обновить кэш apt
ansible.builtin.apt:
update_cache: yes
Этот playbook обновляет кэш пакетов apt на всех серверах из группы web_servers.
Запустите сценарий командой:
ansible-playbook -i inventory.ini first_playbook.yml
После запуска Ansible подключится к серверам и выполнит задачу автоматически.
Шаг 5. Настройка файла ansible.cfg
Для упрощения работы можно создать конфигурационный файл ansible.cfg в директории проекта. Ansible автоматически обнаружит его и применит заданные параметры по умолчанию.
Пример минимальной конфигурации:
[defaults]
inventory = ./inventory.ini
host_key_checking = False
gathering = explicit
roles_path = ./roles
Назначение параметров:
- inventory = ./inventory.ini — указывает путь к inventory-файлу;
- host_key_checking = False — отключает проверку SSH-ключей при первом подключении;
- gathering = explicit — отключает автоматический сбор фактов о системе, если он не требуется;
- roles_path = ./roles — задаёт путь к директории с ролями.
Такая базовая конфигурация позволяет сократить количество параметров в командах и упростить повседневную работу с playbook.
Результат
- установлен Ansible на управляющей машине;
- настроен SSH-доступ к серверам;
- создан inventory-файл;
- подготовлен и запущен первый playbook;
- добавлен базовый файл ansible.cfg.
Этого достаточно, чтобы начать автоматизировать типовые операции и постепенно переходить к более сложным сценариям управления инфраструктурой.