Как установить переменные ansible_config из пользовательского ansible.cfg - PullRequest
1 голос
/ 20 июня 2019

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

/home/monk/
    |_____Ansible_work
               |_____[ansible.cfg]
               |_____[playbook_dir_1]
               |                  |_______playbook_1.yml
               |_____[playbook_dir_2]
               |                  |_______playbook_2.yml
               |_____[playbook_dir_3]
               |                  |_______playbook_3.yml
               |_____[playbook_dir_4]
               |                  |_______playbook_4.yml
               |_____[inventory]
                     |___[inventory_1]
                     |___[inventory_2]

В настоящее время я выполняю свои пьесы, как показано ниже: ansible_work dir:

ansible-playbook -i inventory/inventory_1 playbook_dir_1/playbook_1.yml

или

ansible-playbook -i inventory/inventory_1 playbook_dir_1/playbook_2.yml

или

ansible-playbook -i inventory/inventory_2 playbook_dir_1/playbook_1.yml

Каждая книга воспроизведения должна ссылаться на некоторые переменные, заданные в ansible.cfg, например log_path, role_path и т. Д. Все работает нормально.

Теперь мне сказали, что я должен сделать конфигурацию достаточно гибкой, чтобы эти пьесы могли быть выполнены из любого места, когда дан полный путь инвентаря и книжки. (что кажется справедливым требованием) Но так как мои списки воспроизведения ссылаются на локальную копию ansible.cfg, набор содержимого в этом локальном ansible.cfg не будет установлен, если я вызову executin из любой точки, кроме /home/monk/ansible_work/ dir.

По умолчанию приоритет поиска Ansible.cfg следующий:

* ANSIBLE_CONFIG (an environment variable)
* ansible.cfg (in the current directory)                 <--------------I am currently using this
* .ansible.cfg (in the home directory)                   <--------------Cannot use this as multiple users will be running the PB
* /etc/ansible/ansible.cfg                               <--------------Cannot set this as , we do not have admin rights. 

Вопрос:

Как сделать playbooks независимыми от ansible.cfg и при этом настроить конфигурацию, например DEFAULT_LOG_PATH, DEFAULT_ROLES_PATH и т. Д.?

ИЛИ

Как сделать playbook исполняемым из любого каталога, но при этом он продолжает поиск созданного пользователем ansible.cfg? которого нет в трех местах по умолчанию.

1 Ответ

2 голосов
/ 21 июня 2019

Один из способов выполнить ваши playbooks из любого каталога, и все же ссылаться на файл ansible.cfg, который вы определили, это полностью определить пути, используя дополнительный var, ANS_WORK будет короче, и используйте ANSIBLE_CONFIG var, чтобы указать на ваш ansible.cfg. :

ANS_WORK=/home/monk/ansible_work \
ANSIBLE_CONFIG=${ANS_WORK}/ansible.cfg \
ansible-playbook \
-i ${ANS_WORK}/inventory/inventory_2 \
${ANS_WORK}/playbook_dir_1/playbook_1.yml

Еще один способ, которым любой пользователь может использовать вашу архитектуру, - это наличие общего рабочего пространства git, которое кто-нибудь клонирует, например, в своем домашнем каталоге (это то, что мы делаем здесь). Преимущество: любой может использовать ветви git независимо, не полагаясь на одно общее рабочее пространство, которое не может находиться в нескольких ветвях одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...