Ansible 忽略了它的配置文件(ansible.cfg),可能是什么原因?

Ansible 忽略了它的配置文件(ansible.cfg),可能是什么原因?

我在 Mac OS 上运行 Vagrant 1.8.1 和 ansible 1.8.4。

我在 vagrant 上启动了 2 台 Ubuntu 机器:

itais-MacBook-Pro:ansible-dir itaiganot$ ./dev/hosts --list | jq '.'
{
  "web": [
    "web"
  ],
  "app": [
    "app-1"
  ],
  "vagrant": [
    "web",
    "app-1"
  ],
  "_meta": {
    "hostvars": {
      "web": {
        "ansible_ssh_host": "127.0.0.1",
        "ansible_ssh_port": "2201",
        "ansible_ssh_user": "vagrant",
        "ansible_ssh_private_key_file": "/Users/itaiganot/ansible-dir/.vagrant/machines/web/virtualbox/private_key"
      },
      "app-1": {
        "ansible_ssh_host": "127.0.0.1",
        "ansible_ssh_port": "2202",
        "ansible_ssh_user": "vagrant",
        "ansible_ssh_private_key_file": "/Users/itaiganot/ansible-dir/.vagrant/machines/app-1/virtualbox/private_key"
      }
    }
  }
}

ansible.cfg在当前目录中有一个文件,VagrantFile 也位于该目录中。

itais-MacBook-Pro:ansible-dir itaiganot$ cat ansible.cfg
[defaults]
host_key_checking = False
inventory = dev

在 dev 目录中有两个文件:hosts - 一个 python 脚本,可自动查找启动的 vagrant 机器的 IP;另一个文件包含角色配置:

itais-MacBook-Pro:dev itaiganot$ cat static
[web]
[app]

[role_web:children]
web

[role_app:children]
app

我正在尝试运行以下命令: ansible role_app -a 'hostname'

但我收到以下错误:

ERROR: Unable to find an inventory file, specify one with -i ?

我在 Google 上搜索了一下,发现我可以导出一个变量来指向配置,如下所示:

export ANSIBLE_CONFIG=/Users/itaiganot/ansible-dir/ansible.cfg

但这对我也没什么帮助。

顺便说一下,将 dev 目录作为清单添加到命令中是可行的:

itais-MacBook-Pro:ansible-dir itaiganot$ ansible role_app -a 'hostname' -i dev
app-1 | success | rc=0 >>
app-1

知道为什么该ansible.cfg文件被 ansible 忽略了吗?

答案1

根据 Ansible 文档:http://docs.ansible.com/ansible/intro_configuration.html#inventory,此变量在1.9版本之前不可用:

存货

这是 Ansible 将用来确定可以与哪些主机通信的清单文件、脚本或目录的默认位置:

inventory = /etc/ansible/hosts

hostfile它在 1.9 之前的 Ansible 中被调用

另一件事是确保系统中没有其他可用的 ansible.cfg 文件:http://docs.ansible.com/ansible/intro_configuration.html

可以在配置文件中进行和使用更改,这些更改将按以下顺序处理:

  • ANSIBLE_CONFIG(环境变量)
  • ansible.cfg(在当前目录中)
  • .ansible.cfg(在主目录中)
  • /etc/ansible/ansible.cfg

相关内容