2022-06-15
1038

Команды Ansible

Запуск 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