Я использую 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