如何从用户定义的ansible.cfg设置ansible_配置变量

如何从用户定义的ansible.cfg设置ansible_配置变量,ansible,Ansible,我有一个目录结构,在这个目录结构下我保存着我的剧本,如下所示: /home/monk/ |_____Ansible_work |_____[ansible.cfg] |_____[playbook_dir_1] | |_______playbook_1.yml |_____[playbook_dir_2]

我有一个目录结构,在这个目录结构下我保存着我的剧本,如下所示:

/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\u work
dir执行我的剧本,如下所示:

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

每个剧本都需要参考ansible.cfg中设置的一些变量,如
log\u path
role\u path
等。一切正常

现在我被告知,我应该使配置足够灵活,以便在给定库存和剧本的完整路径时,可以从任何位置执行这些剧本。(这似乎是公平的要求) 但由于我的剧本引用了ansible.cfg的本地副本,如果我从
/home/monk/ansible\u work/
dir之外的任何点触发executin,则不会设置本地ansible.cfg中的内容集

默认情况下,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. 
*ANSIBLE\u CONFIG(环境变量)

*ansible.cfg(在当前目录中)从任何目录执行剧本并仍然引用您定义的文件ansible.cfg的一种方法是完全定义路径,使用额外的变量ansible\u将缩短工作时间,并使用ansible\u配置变量指向您的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

任何用户都可以使用ansible体系结构的另一种方式是使用公共git工作区,例如,任何人都可以在自己的home目录中克隆它(这就是我们在这里所做的)。它的优点是:任何人都可以独立使用git分支,而不依赖于一个公共工作区,而该工作区不能同时位于多个分支中。

@creativecreatorormaybenot:为什么这不能提供答案?这个问题似乎很清楚……现在,你的答案很好。之前,你没有任何解释。好的,谢谢,我不会走得太快,至少使用一些短语,不仅仅是代码,
* 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. 
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