Утилита ansible-pull#

Описание#

ansible-pull извлекает playbooks из репозитория VCS (Version Control System - система контроля версий) и запускает их на целевом хосте. Преобразует используемую по умолчанию push-архитектуру Ansible Core в pull-архитектуру.

Важно

Ни один из инструментов CLI не предназначен для одновременной работы сам с собой, поэтому следует использовать внешний планировщик и/или блокировку, чтобы избежать конфликтующих операций.

Синтаксис утилиты:

ansible-pull <options> <playbook.yml ...>

Где:

  • <options> - опции;

  • <playbook.yml> - файл playbook.

Настройка утилиты производится с помощью файлов, описанных в разделах:

Опции#

Опции утилиты представлены в таблице ниже.

Опции ansible-pull#

Опция

Описание

--accept-host-key

Добавить ключ хоста для URL репозитория, если он еще не добавлен

--become-password-file <become_password_file>, --become-pass-file <become_password_file>

Указать файл пароля для повышения привилегий

--check

Не вносить никаких изменений; вместо этого пытаться предсказать некоторые изменения, которые могут произойти

--clean

Удалить измененные файлы в рабочем репозитории

--connection-password-file <connection_password_file>, --conn-pass-file <connection_password_file>

Указать файл пароля для соединения

--diff

При изменении (маленьких) файлов и шаблонов показать различия в этих файлах; отлично работает с --check

--flush-cache

Очистить кеш фактов для каждого хоста в инвентаре

--full

Выполнить полное клонирование (весь репозиторий вместе со всеми изменениями - историей коммитов, ветками, тегами и другими данными) вместо поверхностного (последний коммит)

--list-hosts

Вывести список соответствующих хостов; не выполнять никаких других действий

--private-key <private_key_file>, --key-file <private_key_file>

Использовать указанный файл для аутентификации соединения

--purge

Удалить проверку после выполнения playbook

--scp-extra-args <scp_extra_args>

Указать дополнительные аргументы для передачи только в scp (например, -l)

--sftp-extra-args <sftp_extra_args>

Указать дополнительные аргументы для передачи только в sftp (например, -f, -l)

--skip-tags

Выполнить только те сценарии и задачи playbooks, теги которых не соответствуют указанным значениям. Этот аргумент может быть указан несколько раз

--ssh-common-args <ssh_common_args>

Указать общие аргументы для передачи в sftp/scp/ssh (например, ProxyCommand)

--ssh-extra-args <ssh_extra_args>

Указать дополнительные аргументы для передачи только в ssh (например, -R)

--track-subs

Указать подмодулям отслеживать последние изменения. Это эквивалентно указанию флага --remote для git submodule update

--vault-id

Указать идентификатор хранилища для использования. Этот аргумент может быть указан несколько раз

--vault-password-file, --vault-pass-file

Указать файл пароля хранилища

--verify-commit

Проверить подпись GPG извлеченного коммита; если проверка не проходит, прерывать выполнение playbook. Требует, чтобы соответствующий модуль VCS поддерживал такую операцию

--version

Показать номер версии утилиты, расположение конфигурационного файла, настроенный путь поиска модулей, расположение модуля, расположение исполняемого файла и выходить

-C <checkout>, --checkout <checkout>

Указать ветку/тег/коммит для проверки. По умолчанию соответствует поведению модуля репозитория

-J, --ask-vault-password, --ask-vault-pass

Запросить пароль хранилища

-K, --ask-become-pass

Запросить пароль для повышения привилегий

-M, --module-path

Добить путь(-и), разделенные двоеточием, к библиотеке модулей (по умолчанию {{ ANSIBLE_HOME ~ “/plugins/modules:/usr/share/ansible/plugins/modules” }}). Этот аргумент может быть указан несколько раз

-T <timeout>, --timeout <timeout>

Переопределить тайм-аут соединения в секундах (по умолчанию зависит от соединения)

-U <url>, --url <url>

Задать URL репозитория playbook

-c <connection>, --connection <connection>

Указать тип соединения (по умолчанию ssh)

-d <dest>, --directory <dest>

Задать путь к каталогу, в котором Ansible Core будет проверять репозиторий

-e, --extra-vars

Установить дополнительные переменные в формате «ключ=значение» или YAML/JSON; если имя файла, добавлять @. Этот аргумент может быть указан несколько раз

-f, --force

Выполнить playbook, даже если репозиторий не удалось обновить

-h, --help

Показать справочное сообщение и выйти

-i, --inventory

Указать путь к inventory или список хостов, разделенных запятыми. Этот аргумент может быть указан несколько раз

-k, --ask-pass

Запросить пароль для соединения

-l <subset>, --limit <subset>

Дополнительно ограничить выбранные хосты до дополнительного шаблона

-m <module_name>, --module-name <module_name>

Указать имя модуля репозитория, который Ansible Core будет использовать для проверки. Возможные значения: git, subversion, hg, bzr. По умолчанию используется git

-o, --only-if-changed

Выполнить playbook только в том случае, если репозиторий был обновлен

-s <sleep>, --sleep <sleep>

Находиться в «спящем» режиме в течение случайного интервала времени (между 0 и n секунд) перед началом. Это полезный способ распределить запросы к Git

-t, --tags

Выполнить только сценарии и задачи playbooks, помеченные указанным тегом. Этот аргумент может быть указан несколько раз

-u <remote_user>, --user <remote_user>

Подключиться как указанный пользователь (значение по умолчанию не указано)

-v, --verbose

Вывести больше отладочных сообщений. Добавление нескольких -v увеличивает уровень подробности, встроенные плагины в настоящее время оценивают до -vvvvvv. Разумный уровень для начала - -vvv, отладка соединения может потребовать -vvvv. Этот аргумент может быть указан несколько раз

Аргументы#

playbook.yml - имя одного из файлов формата YAML, который будет запускаться как playbook Ansible Core. Это может быть относительный путь в checkout. По умолчанию Ansible Core будет искать playbook на основе полного доменного имени хоста, имени хоста и, наконец, playbook с именем local.yml.

Переменные окружения#

Переменные окружения, влияющие на работу утилиты, представлены в таблице ниже.

Переменные окружения ansible-pull#

Переменная

Описание

ANSIBLE_INVENTORY

Переопределить файл inventory по умолчанию

ANSIBLE_LIBRARY

Переопределить путь к библиотеке модуля по умолчанию

ANSIBLE_CONFIG

Переопределить конфигурационный файл по умолчанию

Другие варианты доступны в качестве параметров ansible.cfg (подробнее - в разделе «Конфигурационные файлы ansible.cfg»).

Пример использования#

Выполните локально playbook playbook.yml из удаленного репозитория с URL-адресом <URL-address>, склонировав его в <path_to_local_dir>:

ansible-pull -U <URL-address> -d <path_to_local_dir> -i localhost playbook.yml

Дополнительная информация#

Дополнительную информацию можно получить, выполнив команду:

ansible-pull --help