从命令行显示Ansible配置

时间:2015-09-04 07:27:58

标签: ansible ansible-playbook

Ansible有很长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些/etc/ansible/ansible.cfg以及其他ansible.cfg文件,我该如何看到生成的配置?

我说的是:

ansible show-config
ansible-playbook show config

4 个答案:

答案 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状态:

  1. ANSIBLE_CONFIG(环境变量)
  2. ansible.cfg(在当前目录中)
  3. .ansible.cfg(在主目录中)
  4. /etc/ansible/ansible.cfg
  5. 在1.5之前订单是:

    1. ansible.cfg(在当前目录中)
    2. ANSIBLE_CONFIG(环境变量)
    3. .ansible.cfg(在主目录中)
    4. /etc/ansible/ansible.cfg
    5. 它还声明它根本不合并这些,因此如果您在/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)

如何查看活动的配置文件?

两种方法:

  1. ansible --version | grep "config file"

  2. 与ansible命令ansible all --list-hosts -v”一起使用“ -v”

优先顺序是什么?

1)$ ANSIBLE_CONFIG(导出的环境变量)---最高优先级

2)$ PWD / ansible.cfg

3)〜/ .ansible.cfg

4)/etc/ansible/ansible.cfg-最低