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,如果使用了流水線等等,那麼看看運行時的配置參數是什麼 –