Запуск ad-hoc команд и playbook'ов
- ansible <group> -m <modul> -a <argument> выполнение команд на удаленном хосте. <group> - группа хостов, на которых будет выполнена команда, <modul> - имя модуля, <argument> - аргументы для модуля. Некоторые команды требуют повышенных привилегий, то есть добавления параметра --become
- Примеры ad-hoc команд
- -m ping проверка связи с хостами
- -m setup получение характеристик хоста
- -m setup -a "filter=ansible_memtotal_mb" вывести значение одной из характеристик
- -m raw -a "ls /etc" выполнение команды на удаленном хосте, без дополнительной обработки, как есть. Для raw не требуется python на управляемых хостах, таким образом его можно установить
- -m shell -a "ls /etc | grep pass*" выполнение команды на удаленном хосте через оболочку по умолчанию /bin/sh. Будут доступны переменные оболочки и конвейеры
- -m command -a "ls /etc" выполнение команды на удаленном хосте без прохождения через оболочку /bin/sh. Переменные определенные в оболочке и конвейеры работать не будут
- -m copy -a "src=/home/test.txt dest=/home mode=777" скопировать файл и назначить права, mode можно не указывать
- -m file -a "path=/home/test.txt state=touch" создать файл
- -m file -a "path=/home/test.txt state=absent" удалить файл
- -m get_url -a "url=https://... dest=~/" скачать файл
- -m yum -a "name=git state=present" установить пакет в CentOS
- -m yum -a "name=git state=absent" удалить пакет в CentOS
- -m uri -a "url=https://..." проверить возможность подключения к сайту
- -m service -a "name=httpd states=started enabled=yes" запуск сервиса и добавление его в автозагрузку
- ansible-playbook main.yaml запуск сценария
- Параметры общие и для запуска ad-hoc команд и для playbook'ов:
- --ask-pass запросить ввод пароля для подключения по ssh
- --ask-become-pass --become запросить ввод пароля для повышения привилегий
- -vvv подробный вывод лога, количество v от 1 до 5, чем больше тем подробнее
- -u user123 указать от имени какого пользователя работать на удаленном хосте
- -l servers запускать только на указанном хосте или группе из inventory
- --private-key=~/.ssh/id_rsa указать каталог с ключами для подключения
- Параметры только для playbook'ов:
- -e "msg1=Hello msg2=World" передача переменной в playbook
- --start-at-task="task 5" начать с указанной задачи playbook'а пропустив все предыдущие
- --syntax-check проверить синтаксис playbook'а
- --list-tasks вывести список задач playbook'а
- --list-hosts вывести список узлов, на которых будет выполнен playbook
Секреты
- ansible-vault create secrets.yaml создание файла для сохранения секретных данных, будет запрошен пароль
- ansible-vault view secrets.yaml посмотреть содержимое зашифрованного файла, будет запрошен пароль
- ansible-vault edit secrets.yaml редактировать содержимое зашифрованного файла, будет запрошен пароль
- ansible-vault encrypt secrets.yaml шифрование уже созданного файла с секретными данными
- ansible-vault decrypt secrets.yaml расшифровка файла с секретными данными
- ansible-vault rekey secrets.yaml сменить пароль файла с секретными данными
- ansible-playbook main.yaml --ask-vault-pass при запуске playbook'а выводить запрос пароля для расшифровки файла
Роли
- ansible-galaxy init <name_role> создание роли
Теги
- ansible-playbook main.yaml --tags=nginx выполнить задачи только с указанным тегом
- ansible-playbook main.yaml --skip-tags=nginx пропустить задачи с указанным тегом
Документация
- ansible-doc ping посмотреть документацию по модулю ping
- ansible-doc -l вывести список всех модулей, можно через grep найти модули например для windows: grep win_*
Коллекции
Коллекции - это дополнительные модули, устанавливаемые отдельно.
- ansible-galaxy collection install community.docker установка коллекции для работы с докером
- ansible-galaxy collection install community.crypto установка коллекции криптографии, с помощью нее можно генерировать ключи и сертификаты
- ansible-galaxy collection install ansible.windows установка коллекции дополнительных модулей для работы с windows
Для удаления коллекции нужно удалить соответствующий каталог в
~/.ansible/collections/ansible_collections