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

Ita*_*not 2 mac-osx vagrant ansible

我在 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"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

ansible.cfg在 VagrantFile 所在的当前目录中有一个文件。

itais-MacBook-Pro:ansible-dir itaiganot$ cat ansible.cfg
[defaults]
host_key_checking = False
inventory = dev
Run Code Online (Sandbox Code Playgroud)

在 dev 目录中有两个文件: hosts - 这是一个 python 脚本,它会自动找到启动的 vagrant 机器的 IP 和另一个包含角色配置的文件:

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

[role_web:children]
web

[role_app:children]
app
Run Code Online (Sandbox Code Playgroud)

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

但我收到以下错误:

ERROR: Unable to find an inventory file, specify one with -i ?
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

Dia*_*ond 5

根据 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