Версия: 2.12.4
Ansible — простой механизм автоматизации ИТ, который автоматизирует подготовку облачных сред, управление конфигурацией, развертывание приложений, оркестрацию внутри службы и многие другие ИТ-потребности.
Используется для автоматизации настройки и развертывания программного обеспечения. Обычно используется для управления Linux-узлами, но Windows также поддерживается. Поддерживает работу с сетевыми устройствами, на которых установлен Python версии 2.4 и выше по SSH или WinRM соединению.
Для управления конфигурацией и выполнения автоматизированных сценариев используется инструмент Ansible Playbook.
Для Ansible не требуется установка агента или клиента на целевые системы.
Контактная информация:
Официальный сайт
Разработчик:
Michael DeHaan
Лицензия:
Стандартная общественная лицензия GNU версии 3 (GPLv3)
Синтаксис:
ansible [опции] [аргументы]
Аргументы:
Аргумент | Опция |
---|---|
pattern | Шаблон хоста |
Опции:
Опция | Опция |
---|---|
--ask-vault-password, --ask-vault-pass | Запрашивает пароль для расшифровки vault |
--become-password-file BECOME_PASSWORD_FILE, --become-pass-file BECOME_PASSWORD_FILE | Файл с паролем для повышения привилегий |
--connection-password-file CONNECTION_PASSWORD_FILE, --conn-pass-file CONNECTION_PASSWORD_FILE | Файл с паролем для подключения |
--list-hosts | Выводит список совпадающих хостов; не выполняет никаких других действий |
--playbook-dir BASEDIR | Поскольку это инструмент не использует плейбуки, используйте это в качестве замены каталога плейбука. Задает относительный путь для многих функций, включая roles/ group_vars/ и т.д. |
--syntax-check | Выполняет проверку синтаксиса плейбука, но не выполняет его |
--task-timeout TASK_TIMEOUT | Задает ограничение времени выполнения задачи в секундах, должно быть положительным целым числом. |
--vault-id VAULT_IDS | Идентификатор vault, который будет использован |
--vault-password-file VAULT_PASSWORD_FILES, --vault-pass-file VAULT_PASSWORD_FILES | Файл с паролем для vault |
--version | Отображает номер версии программы, расположение файла конфигурации, путь поиска модулей, расположение модулей, расположение исполняемого файла и завершает работу |
-B SECONDS, --background SECONDS | Выполняет задачи асинхронно, завершается по истечении X секунд (по умолчанию=Н/Д) |
-C, --check | Не вносить изменения; вместо этого попытаться предсказать некоторые изменения, которые могут произойти |
-D, --diff | При изменении (небольших) файлов и шаблонов показывает различия в этих файлах; отлично работает с --check |
-K, --ask-become-pass | Запрашивает пароль для повышения привилегий |
-M MODULE_PATH, --module-path MODULE_PATH | Добавить путь(и) через двоеточие к библиотеке модулей (по умолчанию=~/.ansible/plugins/modules:/usr/share/ansible/plugins/modules) |
-P POLL_INTERVAL, --poll POLL_INTERVAL | Установить интервал опроса при использовании -B (по умолчанию=15) |
-a MODULE_ARGS, --args MODULE_ARGS | Опции действия в формате k=v, разделенные пробелом: -a 'opt1=val1 opt2=val2' |
-e EXTRA_VARS, --extra-vars EXTRA_VARS | Установить дополнительные переменные в формате ключ=значение или YAML/JSON, если имя файла, то добавить @ |
-f FORKS, --forks FORKS | Указать количество параллельных процессов для использования (по умолчанию=5) |
-h, --help | Отобразить это справочное сообщение и выйти |
-i INVENTORY, --inventory INVENTORY, --inventory-file INVENTORY | Указать путь к хосту инвентаря или список хостов, разделенных запятыми. --inventory-file устарел |
-k, --ask-pass | Запросить пароль подключения |
-l SUBSET, --limit SUBSET | Дополнительное ограничение выбранных хостов по дополнительному шаблону |
-m MODULE_NAME, --module-name MODULE_NAME | Имя действия для выполнения (по умолчанию=command) |
-o, --one-line | Сжать вывод в одну строку |
-t TREE, --tree TREE | Сохранить вывод в эту директорию |
-v, --verbose | Режим подробного вывода (-vvv для большей детализации, -vvvv для включения отладки подключения) |
Опции повышения привилегий:
Управляют тем, каким пользователем становиться на целевых хостах.
Опция | Опция |
---|---|
--become-method BECOME_METHOD | Метод повышения привилегий для использования (по умолчанию=sudo), используйте ansible-doc -t become -l для просмотра допустимых вариантов. |
--become-user BECOME_USER | Выполнять операции от имени этого пользователя (по умолчанию=root) |
-b, --become | Выполнять операции с повышением привилегий (не требуется запрос пароля) |
Опции подключения:
Определяют, кем и как подключаться к хостам
Опция | Опция |
---|---|
--private-key PRIVATE_KEY_FILE, --key-file PRIVATE_KEY_FILE | Использовать этот файл для аутентификации при подключении |
--scp-extra-args SCP_EXTRA_ARGS | Указать дополнительные аргументы, передаваемые только scp (например, -l) |
--sftp-extra-args SFTP_EXTRA_ARGS | Указать дополнительные аргументы, передаваемые только sftp (например, -f, -l) |
--ssh-common-args SSH_COMMON_ARGS | Указать общие аргументы, передаваемые sftp/scp/ssh (например, ProxyCommand) |
--ssh-extra-args SSH_EXTRA_ARGS | Указать дополнительные аргументы, передаваемые только ssh (например, -R) |
-T TIMEOUT, --timeout TIMEOUT | Переопределить таймаут подключения в секундах (по умолчанию=10) |
-c CONNECTION, --connection CONNECTION | Тип подключения для использования (по умолчанию=smart) |
-u REMOTE_USER, --user REMOTE_USER | Подключиться как этот пользователь (по умолчанию=None) |
В файле /etc/ansible/hosts
указываются все хосты, на которые будет распространяться конфигурация. Хосты можно разделить по группам, а так же, если есть домен, то автоматически экспортировать список из домена. Можно прописывать как ip адреса так и имена хостов, если они резолвятся DNS'ом в сети.
Создать файл "hosts" и добавить группу с IP-адресами:
sudo mcedit /etc/ansible/hosts
[test]
10.10.1.111
10.10.1.74
Подключение к хостам осуществляется по протоколу ssh с помощью rsa ключей. Сгенерировать серверный ключ можно командой:
ssh-keygen -C "$(whoami)@$(hostname)-$(date -I)"
Далее следует распространить ключ на все подключенные хосты командой:
ssh-copy-id superadmin@server
где:
superadmin - это пользователь, от имени которого будут выполняться плейбуки;
server - IP-адрес хоста.
Пример:
ssh-copy-id superadmin@10.10.1.74
Пинг удаленных хостов:
ansible -k test -m ping
где:
Примерный вывод:
192.168.215.47 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python3.10"
},
"changed": false,
"ping": "pong"
}
Если при создании ключа в пункте "Подключение клиентских хостов" была указана парольная фраза, то перед выполнением команды будет запрошена парольная фраза.
Для создания нового конфигурационного файла Ansible следует открыть терминал и ввести команду:
ansible-config init --disabled -t all | sudo tee /etc/ansible/ansible.cfg >/dev/null
С помощью Ansible возможно сразу на всех клиентах выполнить команду bash без создания плейбуков.
Пример просмотра информации об использовании оперативной памяти на удаленных хостах:
ansible test -a "free -h"
Примерный вывод:
192.168.215.47 | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 5.7Gi 1.1Gi 2.3Gi 123Mi 2.3Gi 4.2Gi
Swap: 0B 0B 0B
Для проверки состояния пользовательских сессий удаленных ПК следует открыть терминал и ввести:
ansible all -a "w"
Где:
Для получения информации о месте на дисках управляемых машин следует открыть терминал и ввести:
ansible group -k -a "df -h"
Где:
/etc/ansible/hosts
, ip-адрес машины или все группы: "all".Установить можно отдельным пакетом:
Для установки следует воспользоваться утилитой "Установка и удаление программ".
Пакет, необходимый для установки:
Внимание! Если система загружена в режиме полного сохранения, то внесенные изменения в систему будут сохранены после перезагрузки.
Если режим загрузки другой, то рекомендуется воспользоваться утилитой "Сохранение изменений" до перезагрузки системы.