从命令行显示Ansible配置
Ansible有一个相当长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些从命令行显示Ansible配置,ansible,Ansible,Ansible有一个相当长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些/etc/ansible/ansible.cfg和其他ansible.cfg文件,我如何查看生成的配置 我指的是: ansible show-config ansible-playbook show config 在Ansible 2+中,您可以通过运行Ansible--version轻松找到这一点 在Ansible 1.X中,您必须迭代地按照配置的搜索路径中的优先顺序来查找所使用的配置。Ansible按
/etc/ansible/ansible.cfg
和其他ansible.cfg
文件,我如何查看生成的配置
我指的是:
ansible show-config
ansible-playbook show config
在Ansible 2+中,您可以通过运行
Ansible--version
轻松找到这一点
在Ansible 1.X中,您必须迭代地按照配置的搜索路径中的优先顺序来查找所使用的配置。Ansible按以下优先顺序提取配置的状态:
ANSIBLE\u CONFIG
(环境变量)ansible.cfg
(在当前目录中).ansible.cfg
(在主目录中)/etc/ansible/ansible.cfg
ansible.cfg
(在当前目录中)ANSIBLE\u CONFIG
(环境变量).ansible.cfg
(在主目录中)/etc/ansible/ansible.cfg
它也声明它根本不合并这些,所以如果你在<代码> /ETC/ANTION/ANISECT.CFG中有一个选项,你就不必考虑发生了什么,但是在任何优先文件中都没有设置。 我不知道如何直接要求Ansible显示从该目录运行Ansible时将使用的配置,但您可以使用以下简单的bash脚本来查看:
#/bin/bash
如果![-z$ANSIBLE_CONFIG]];然后
echo$ANSIBLE\u配置
出口0
elif[-f ansible.cfg]];然后
cat ansible.cfg
出口0
elif[-f~/.ansible.cfg]];然后
cat~/.ansible.cfg
出口0
elif[-f/etc/ansible/ansible.cfg]];然后
cat/etc/ansible/ansible.cfg
出口0
其他的
echo“未找到Ansible配置!使用默认设置”
出口1
fi
我将它放入/usr/local/bin/
(使其可执行)并将其命名为get\u ansible\u 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\u 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
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ rm ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Set in ~/.ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Config in /etc/ansible/ansible.cfg
这是shell当前所在目录中的ansible.cfg
删除此文件将为我们提供:
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
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ rm ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Set in ~/.ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Config in /etc/ansible/ansible.cfg
这是当前用户主目录中.ansible.cfg
文件中设置的测试值
最后,消除这一点可以让我们:
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
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ rm ansible.cfg
vagrant@vagrant-ubuntu-trusty-64:~/inventory$ get_ansible_cfg.sh
Set in ~/.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
运行“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--version|grep“配置文件”
ansible all--列出主机-v”
4) /etc/ansible/ansible.cfg——最低在什么情况下,您希望拥有多个ansible.cfg?或者说真的只有全局环境和您的本地项目cfg吗?比方说,我只想确保ansible playbook使用正确的参数运行,比如看ControlMaster是否真的启用了,是否使用了管道等等,所以只需看看运行时的配置参数是什么