Назад | Перейти на главную страницу

Ansible игнорирует файл конфигурации (ansible.cfg), в чем может быть причина?

Я использую Vagrant 1.8.1 и ansible 1.8.4 в Mac OS.

Я запустил 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, который автоматически находит 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 ?

Я погуглил и обнаружил, что могу экспортировать переменную, указывающую на конфигурацию, например:

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 doc: http://docs.ansible.com/ansible/intro_configuration.html#inventory, эта переменная недоступна до версии 1.9:

инвентарь

Это расположение по умолчанию для файла инвентаризации, скрипта или каталога, которые Ansible будет использовать для определения доступных хостов для общения:

inventory = /etc/ansible/hosts

Раньше это называлось hostfile в Ansible до 1.9

Другое дело - убедиться, что в системе нет другого файла ansible.cfg:http://docs.ansible.com/ansible/intro_configuration.html

Изменения можно вносить и использовать в файле конфигурации, который будет обрабатываться в следующем порядке:

  • ANSIBLE_CONFIG (переменная среды)
  • ansible.cfg (в текущем каталоге)
  • .ansible.cfg (в домашнем каталоге)
  • /etc/ansible/ansible.cfg