2015-09-04 62 views
3

Ansible有一個很長的配置參數列表,包括ssh的不同設置。假設我在當前文件夾中有一些/etc/ansible/ansible.cfg文件和其他ansible.cfg文件,如何查看結果配置?從命令行顯示Ansible配置

我只是講是這樣的:

ansible show-config 
ansible-playbook show config 
+0

在什麼情況下你會想要多一個ansible.cfg?還是真的有全球環境和你的本地項目cfg? – j12y

+0

比方說,我只是想確定一個正確的參數運行正確的參數,比如看是否真的啓用了ControlMaster,如果使用了流水線等等,那麼看看運行時的配置參數是什麼 –

回答

3

是Ansible拉在以下優先順序配置的Ansible docs狀態:

  1. ANSIBLE_CONFIG(環境變量)
  2. ansible.cfg(以當前目錄)
  3. .ansible.cfg(在主目錄中)
  4. /etc/ansible/ansible.cfg

而現有1.5的順序是:

  1. ansible.cfg(在當前目錄)
  2. ANSIBLE_CONFIG(環境變量)
  3. .ansible.cfg(在主目錄)
  4. /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 
4

運行 '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