Ansible ignora seu arquivo de configuração (ansible.cfg), qual poderia ser o motivo?

2

Estou executando o Vagrant 1.8.1 e ansible 1.8.4 no Mac OS.

Eu iniciei 2 máquinas Ubuntu no vagrant:

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"
      }
    }
  }
}

Eu tenho um arquivo ansible.cfg no diretório atual onde o VagrantFile também reside.

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

no diretório dev existem dois arquivos: hosts - que é um script python que localiza automaticamente o IP das máquinas iniciadas e outro arquivo que inclui as configurações de funções:

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

[role_web:children]
web

[role_app:children]
app

Estou tentando executar o seguinte comando: ansible role_app -a 'hostname'

Mas estou recebendo o seguinte erro:

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

Eu pesquisei e descobri que posso exportar uma variável para apontar para a configuração, assim:

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

Mas isso não me ajudou também.

A propósito, adicionando o diretório dev como inventário para o comando funciona:

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

Alguma idéia de por que o arquivo ansible.cfg é ignorado por ansible?

    
por Itai Ganot 30.03.2016 / 15:32

1 resposta

5

De acordo com o documento Ansible: link , esta variável não está disponível antes da versão 1.9:

inventory

This is the default location of the inventory file, script, or directory that Ansible will use to determine what hosts it has available to talk to:

inventory = /etc/ansible/hosts

It used to be called hostfile in Ansible before 1.9

Outra coisa seria garantir que não haja outro arquivo ansible.cfg disponível no sistema: link

Changes can be made and used in a configuration file which will be processed in the following order:

  • ANSIBLE_CONFIG (an environment variable)
  • ansible.cfg (in the current directory)
  • .ansible.cfg (in the home directory)
  • /etc/ansible/ansible.cfg
    
por 30.03.2016 / 16:46