Ansible — система автоматизации настройки серверов: вы описываете нужное состояние в плейбуке, а Ansible приводит к нему все машины по SSH. Ниже три приёма, которые экономят время в ежедневной работе.
Продолжить плейбук с нужной задачи
Если длинный плейбук упал в середине, не обязательно проходить его заново целиком. Ключ --start-at-task запускает выполнение с задачи с указанным именем:
ansible-playbook playbook.yml --start-at-task "Установка пакетов"
Имя задачи должно совпадать с полем name в плейбуке.
Запуск на одном хосте без inventory
Чтобы проверить плейбук на одной машине, не обязательно править файл inventory. Адрес можно указать прямо в ключе -i. Запятая в конце обязательна: по ней Ansible понимает, что это список хостов, а не путь к файлу:
ansible-playbook -i 172.0.0.1, playbook.yml
Команда сразу на всех серверах
Для разовых проверок плейбук не нужен: модуль shell выполнит команду на всех хостах из inventory. Пример — проверить, какой адрес возвращает DNS-сервер для записи на каждом сервере:
ansible -i inventory -m shell -a "dig A_record @dns_server" all | sed '/^;/d' | sed '/CHANGED/d' | sed '/^[[:space:]]*$/d'
Команды sed убирают лишнее из вывода: строки комментариев dig (начинаются с точки с запятой), служебные строки Ansible с пометкой CHANGED и пустые строки. Остаются только сами ответы.