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"

Больше команд и их описание можно найти в документации.

Задание:#

Выполнить примеры.