Оглавление |
---|
Информация |
---|
Ansible — система управления конфигурациями. Написана на Python, использует декларативный язык разметки для описания конфигураций. Используется для автоматизации настройки и массового развёртывания программного обеспечения. Работает с Linux-узлами (SSH-соединение), также поддерживает Windows (WinRM соединение). |
Информация | ||
---|---|---|
| ||
|
Установка пакета
Пакет ansible доступен в репозитории Astra Linux Common Edition и в дистрибутиве Astra Linux Special Edition. Установить пакет можно с помощью графического менеджера пакетов (см. Графический менеджер пакетов synaptic) или из командной строки командой
Command |
---|
sudo apt install ansible |
Настройка пакета
При установке пакета создаётся каталог /etc/ansible, содержащий два конфигурационных файла:
- /etc/ansible/hosts - список компьютеров (хостов), с которыми работает ansible;
- /etc/ansible/ansible.cfg - файл настроек ansible.
Файл конфигурации /etc/ansible/hosts
В файле /etc/ansible/hosts указывается список хостов, с которыми должен работать ansible.
Файл снабжен достаточно подробными комментариями:
Раскрыть |
---|
# Это файл ansible 'hosts', установленный по умолчанию. # Пример 1: Хосты без групп должны быть перечислены до первого заголовка группы. #green.example.com #[webservers] # Пример 2: После заголовка [webservers] начался список хостов, входящих в группу 'webservers' #alpha.example.org # Применение шаблонов для определения нескольких хостов # здесь всё ещё группа 'webservers' #[dbservers] # Пример 3: После заголовка [dbservers] началась группа серверов баз данных 'dbservers' group #db01.intranet.mydomain.net # Еще пример диапазона имён, теперь без лидирующих нулей #db-[99:101]-node.example.com |
Дополнительно в файле /etc/ansible/hosts могут быть заданы значения переменных для определённых там хостов (сетевые адреса, псевдонимы и пр.).
Более подробная информация содержится в документации
Примеры настройки и использования
Настройка подключений SSH
Так как ansible Ansible подключается к хостам по протоколу ssh, поэтому на каждом хосте, с которым должен работать ansible, должен должна быть установлена и запущена служба ssh. Для автоматизации подключений можно использовать ключи или пароли (не рекомендуется).
Установить службу Установка службы ssh и настроить аутентификацию настройка аутентификации по открытому ключу можно по этой описана в статье инструкции.
Для настройки аутентификации по паролю:
Установить пакет sshpass:
Command sudo apt install sshpass Отключить проверку ssh-ключа узла путем задания в файле /etc/ansible/ansible.cfg параметра:
Блок кода host_key_checking = False
Указать имя пользователя и пароль ssh. Это можно сделать следующими способами:
При запуске Ansible из командной строки с помощью опции --user задать имя пользователя и с помощью опции --ask-pass указать необходимость запроса пароля:
Command ansible -m ping all --user <имя_пользователя> --ask-pass При использовании inventory-файла с помощью опций ansible_user и ansible_ssh_pass задать имя пользователя и пароль в этом файле:
Блок кода [all:vars] ansible_connection=ssh ansible_user=<имя_пользователя> ansible_ssh_pass=<пароль>
Далее предполагаемпредполагается, что в файле /etc/ansible/hosts указан список хостов, и, в примерах, будем работать со всеми указанными хостами применяя псевдоним all.. В примерах операции будут применяться ко всеми указанными хостам, для чего используется псевдоним all.
Примеры
См. также:
Простые примеры:
- Просто пинг. Ко всем хостам (all) применяется модуль ping (-m ping):
Command ansible -m ping all
Инвентаризация состояния хостов.Command ansible -m setup -a 'filter=ansible_memtotal_mb' all
- Ко всем хостам (all) применяется модуль setup (-m setup):
Command |
---|
ansible -m setup all |
- Инвентаризация выводит слишком много информации
- . Отфильтровать только информацию об объёме памяти:
Command ansible -m setup
all - С помощью модуля shell
- проверить на всех хостах версию Astra Linux:
Command ansible -m shell -a 'cat /etc/astra_version' all