Ad Hoc команды#
Ad-hoc команды - это возможность запустить какое-то действие Ansible из командной строки.
Это специальная команда Ansible использует инструмент командной строки /usr/bin/ansible для автоматизации одной задачи на одном или нескольких управляемых узлах. Специальные команды выполняются быстро и просто, но их нельзя использовать повторно. Используются, как правило, в тех случаях, когда надо что-то проверить, например, работу модуля. Или просто выполнить какое-то разовое действие, которое не нужно сохранять. В любом случае, это простой и быстрый способ начать использовать Ansible.
Специальная команда выглядит следующим образом:
$ ansible [pattern] -m [module] -a "[module options]"
Модулем по умолчанию для утилиты командной строки ansible является модуль ansible.builtin.command
Параметр -a принимает параметры с помощью синтаксиса ключ=значение
Сначала нужно создать в локальном каталоге инвентарный файл. Назовем его myhosts.ini:
[clients]
192.168.0.10
192.168.0.11
Проверка связи#
ansible all -m ping
При установке связи может возникнуть ошибка при поиске интерпретатора команд на узлах.
Для устранения необходимо указать в инвентарном файле hosts:
Для Debian:
ansible_interpreter=/usr/bin/python
или
ansible_interpreter=/usr/bin/python3
[debian]
5.5.5.2 ansible_interpreter =/usr/bin/python
Для Centos:
ansible_interpreter=/usr/libexec/platform/python
Для глобального использования необходимо в /etc/ansible/ansible.cfg указать параметр
[defaults]
...
interpreter_python = auto_silent
auto_silent - определяет платформу, дистрибутив и версию ОС, затем обращается к таблице, в которой указан правильный интерпретатор Python и путь. Если не находит, то используется первый найденный. Не выдает предупреждений.
Подробнее:
https://docs.ansible.com/ansible/latest/reference_appendices/interpreter_discovery.html
Перезагрузка системы#
Можно использовать специальную задачу для вызова командного модуля и перезагрузки всех клиентов. Прежде чем Ansible сможет это сделать, у вас должны перечислены все клиенты в группе под названием [clients], в вашем инвентаре, и у вас должны быть рабочие учетные данные SSH для каждой машины в этой группе. Чтобы перезагрузить все серверы в группе [clients]:
$ ansible clients -a "/sbin/reboot"
Больше команд и их описание можно найти в документации.
Задание:#
Выполнить примеры.