从命令行显示Ansible配置

从命令行显示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按

Ansible有一个相当长的配置参数列表,包括ssh的不同设置。假设我在当前文件夹中有一些
/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
  • 1.5之前的订单为:

  • 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“配置文件”

  • 将“-v”与ansible命令一起使用
    ansible all--列出主机-v”

  • 优先顺序是什么? 1) $ANSIBLE_配置(导出的环境变量)--最高优先级

    2) $PWD/ansible.cfg

    3) ~/.ansible.cfg


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

    在什么情况下,您希望拥有多个ansible.cfg?或者说真的只有全局环境和您的本地项目cfg吗?比方说,我只想确保ansible playbook使用正确的参数运行,比如看ControlMaster是否真的启用了,是否使用了管道等等,所以只需看看运行时的配置参数是什么