Как установить и настроить Ansible на Ubuntu 23.04
Хотя для систем Linux выпущено много популярных инструментов управления конфигурациями, в том числе Chef и Puppet, эти инструменты сложнее, чем требуется большинству людей. Система Ansible — отличная альтернатива этим инструментам, поскольку имеет простую архитектуру, не требует установки на узлы специального программного обеспечения, использует SSH для выполнения задач автоматизации и файлы YAML для определения деталей выделения ресурсов.
Установка Ansible на Ubuntu
Итак перейдем к установке, для начала обновим индексы пакетов:
sudo apt update
Установим Ansible:
sudo apt install ansible
Проверьте версию Ansible:
ansible --version
Это должно вывести информацию о версии установленного Ansible.
Теперь Ansible установлен на вашем сервере Ubuntu. Вы можете начать использовать его для управления конфигурациями и автоматизации задач.
Настройка Ansible
Откройте файл конфигурации Ansible:
sudo nano /etc/ansible/ansible.cfg
**Раскомментируйте (уберите знак # в начале строки) и измените параметры по необходимости. Например, установите inventory (файл, описывающий ваши серверы) и remote_user (имя пользователя для подключения к удаленным серверам).
[defaults]
inventory = /etc/ansible/hosts
remote_user = ваш_пользователь
private_key_file = /путь/к/вашему/ключу.pem
Замените ваш_пользователь на имя вашего пользователя и укажите путь к вашему ключу (private_key_file).
Создание Inventory файла
Создайте файл Inventory (например, /etc/ansible/hosts):
sudo nano /etc/ansible/hosts
Добавьте IP-адреса или имена хостов в файл. Пример:
[servers]
сервер_1 ansible_host=IP_адрес_1
сервер_2 ansible_host=IP_адрес_2
Замените сервер_1, сервер_2, IP_адрес_1, IP_адрес_2 на ваши значения.
Проверка файла инвентаризации:
ansible-inventory --list -y
Проверка подключения
Выполните команду для проверки подключения к вашим серверам:
ansible all -m ping
Если все настроено правильно, вы должны получить успешные ответы от ваших серверов.
Создание простого Ansible Playbook
Давайте начнем с создания и запуска нашего первого сборника Ansible playbook. На управляющем узле создайте простой файл YAML в каталоге /etc/ansible/ следующим образом:
sudo vim /etc/ansible/playbook-01.yml
Теперь заполните файл playbook следующим кодом:
---
- name: A simple playbook file
hosts: all
tasks:
- name: Print a sample message
debug:
msg: Hello World. Welcome to Ansible playbooks!
--- обозначает начало файла YAML.
В первом экземпляре name директивы указывается название playbook. Во втором экземпляре указывается название задачи.
hosts Директива определяет целевые хосты, на которых будет выполняться playbook. В этом примере playbook будет выполняться на всех хостах, указанных в файле инвентаря. Чтобы настроить таргетинг на конкретный хост, укажите IP-адрес хоста или доменное имя.
tasks Директива представляет собой список задач, которые должны выполняться на целевом хосте. В этом сборнике у нас есть одна задача, которая выводит инструкцию в стандартный вывод.
debug Ключевое слово — это встроенный модуль, который поставляется с Ansible и печатает инструкции во время выполнения Playbook. Кроме того, оно удобно при отладке инструкций и переменных без остановки playbook. debug Модуль поставляется с некоторыми опциями, такими как msg и var. msg Опция указывает строку для стандартного вывода.
Выполнить Ansible Playbook
Чтобы запустить сборник playbook, используйте ansible-playbook команду, как показано ниже:
ansible-playbook /path/to/playbook_file
В нашем примере вам следует выполнить следующую команду:
ansible-playbook /etc/ansible/playbook-01.yml
Во время выполнения playbook вы должны увидеть следующий вывод:
Обратите внимание, что были выполнены две задачи, хотя в файле Playbook мы определили только одну.
Первая задача собирает факты об управляемом узле. Факты Ansible относятся к системным данным, относящимся к конкретному узлу, которые представлены в формате JSON, таким как информация BIOS, системная дата и время, тип и версия операционной системы и IP-адрес. Он также включает аппаратные данные, такие как блочные устройства, центральный процессор, оперативная память и пространство подкачки, и это лишь некоторые из них.
Вторая задача выводит простое сообщение в стандартный вывод, как указано в файле playbook. ok=2 Указывает, что две задачи были успешно выполнены.