Ansible有很长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些/etc/ansible/ansible.cfg以及其他ansible.cfg文件,我该如何看到生成的配置?
我说的是:
ansible show-config
ansible-playbook show config
答案 0 :(得分:5)
运行'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
答案 1 :(得分:4)
在Ansible 2+中,您可以通过运行ansible --version
轻松找到答案。
在Ansible 1.X中,您必须迭代地按照搜索路径中的优先级来查找正在使用的配置。 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的方法,如果你从该目录运行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个位置,然后逐个删除它们。我在这里可以看到我设置为测试的值:
vagrant@vagrant-ubuntu-trusty-64:~$ echo $ANSIBLE_CONFIG
Set in env variables
vagrant@vagrant-ubuntu-trusty-64:~$ sudo find / -name "*ansible.cfg"
/etc/ansible/ansible.cfg
/home/vagrant/.ansible.cfg
/home/vagrant/inventory/ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~$ cat /etc/ansible/ansible.cfg
Config in /etc/ansible/ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ cat ~/.ansible.cfg
Set in ~/.ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ pwd
/home/vagrant/inventory
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ cat ansible.cfg
Set in local directory ansible.cfg
通过所有这些设置和运行我们得到:
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Set in env variables
返回我们的ANSIBLE_CONFIG
测试值。
取消设置并再次运行会给我们:
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ unset ANSIBLE_CONFIG
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Set in local directory ansible.cfg
shell目前所在目录中的ansible.cfg
。
删除此文件然后给我们:
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ rm ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Set in ~/.ansible.cfg
在当前用户主目录的.ansible.cfg
文件中设置的测试值。
最后,删除它会给我们:
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Config in /etc/ansible/ansible.cfg
如果在任何这些位置都没有配置我们得到:
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ sudo rm /etc/ansible/ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
No Ansible config found! Using default settings
答案 2 :(得分:2)
自ansible 2.4以来,有一个ansible-config命令行工具。
答案 3 :(得分:0)
两种方法:
ansible --version | grep "config file"
与ansible命令ansible all --list-hosts -v”
一起使用“ -v”
1)$ ANSIBLE_CONFIG(导出的环境变量)---最高优先级
2)$ PWD / ansible.cfg
3)〜/ .ansible.cfg
4)/etc/ansible/ansible.cfg-最低