Ansible有一个很长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些/etc/ansible/ansible.cfg文件和其他ansible.cfg文件,如何查看结果配置?从命令行显示Ansible配置
我只是讲是这样的:
ansible show-config
ansible-playbook show config
Ansible有一个很长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些/etc/ansible/ansible.cfg文件和其他ansible.cfg文件,如何查看结果配置?从命令行显示Ansible配置
我只是讲是这样的:
ansible show-config
ansible-playbook show config
是Ansible拉在以下优先顺序配置的Ansible docs状态:
ANSIBLE_CONFIG
(环境变量)ansible.cfg
(以当前目录).ansible.cfg
(在主目录中)/etc/ansible/ansible.cfg
而现有1.5的顺序是:
ansible.cfg
(在当前目录)ANSIBLE_CONFIG
(环境变量).ansible.cfg
(在主目录)/etc/ansible/ansible.cfg
它还声明它不会合并这些,因此您不必考虑如果在/etc/ansible/ansible.cfg
中有一个选项但未在任何优先文件中设置选项会发生什么情况。
我不知道问Ansible的方式直接表明CONFIG如果从目录中运行Ansible它会使用,但您可以通过使用这个简单的bash脚本看到:
#!/bin/bash
if ! [[ -z $ANSIBLE_CONFIG ]]; then
echo $ANSIBLE_CONFIG
exit 0
elif [[ -f ansible.cfg ]]; then
cat ansible.cfg
exit 0
elif [[ -f ~/.ansible.cfg ]]; then
cat ~/.ansible.cfg
exit 0
elif [[ -f /etc/ansible/ansible.cfg ]]; then
cat /etc/ansible/ansible.cfg
exit 0
else
echo "No Ansible config found! Using default settings"
exit 1
fi
我把它放在/usr/local/bin/
(使其可执行)并将其命名为get_ansible_cfg.sh
。
为了显示它的行动,我们需要设置Ansible获取配置的所有4个位置,然后逐个删除它们。我设置为测试值可以在这里看到:
[email protected]:~$ echo $ANSIBLE_CONFIG
Set in env variables
[email protected]:~$ sudo find/-name "*ansible.cfg"
/etc/ansible/ansible.cfg
/home/vagrant/.ansible.cfg
/home/vagrant/inventory/ansible.cfg
[email protected]:~$ cat /etc/ansible/ansible.cfg
Config in /etc/ansible/ansible.cfg
[email protected]:~/inventory$ cat ~/.ansible.cfg
Set in ~/.ansible.cfg
[email protected]:~/inventory$ pwd
/home/vagrant/inventory
[email protected]:~/inventory$ cat ansible.cfg
Set in local directory ansible.cfg
随着这些设置和运行,我们得到:
[email protected]:~/inventory$ get_ansible_cfg.sh
Set in env variables
它返回我们ANSIBLE_CONFIG
测试值。
解封这并再次运行给我们:
[email protected]:~/inventory$ unset ANSIBLE_CONFIG
[email protected]:~/inventory$ get_ansible_cfg.sh
Set in local directory ansible.cfg
这是该外壳是目前在该目录中ansible.cfg
。
删除此文件,然后给我们:
[email protected]:~/inventory$ rm ansible.cfg
[email protected]:~/inventory$ get_ansible_cfg.sh
Set in ~/.ansible.cfg
这是在.ansible.cfg
文件中的当前用户的主目录设置的测试值。
最后,取消这给我们:
[email protected]:~/inventory$ get_ansible_cfg.sh
Config in /etc/ansible/ansible.cfg
如果有任何这些位置,我们得到的没有配置:
[email protected]:~/inventory$ sudo rm /etc/ansible/ansible.cfg
[email protected]:~/inventory$ get_ansible_cfg.sh
No Ansible config found! Using default settings
运行 'ansible --version'。
$ ansible --version
ansible 2.0.1.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides
$ touch ~/.ansible.cfg
ansible 2.0.1.0
config file = /home/jdoe/.ansible.cfg
configured module search path = Default w/o overrides
由于ansible 2.4,有一个ansible-config命令行工具。
在什么情况下你会想要多一个ansible.cfg?还是真的有全球环境和你的本地项目cfg? – j12y
比方说,我只是想确定一个正确的参数运行正确的参数,比如看是否真的启用了ControlMaster,如果使用了流水线等等,那么看看运行时的配置参数是什么 –