web-dev-qa-db-ja.com

Ansibleは構成ファイル(ansible.cfg)を無視しますが、その理由は何でしょうか?

MacOSでVagrant1.8.1とansible1.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.cfgVagrantFileも存在する現在のディレクトリ内のファイル。

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

devディレクトリには2つのファイルがあります:hosts-これは起動されたvagrantマシンのIPを自動的に見つけるpythonスクリプトであり、ロール構成を含む別のファイルです:

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によって無視されますか?

2
Itai Ganot

Ansibleドキュメントによると: http://docs.ansible.com/ansible/intro_configuration.html#inventory 、この変数はバージョン1.9より前では利用できません:

在庫

これは、Ansibleが通信できるホストを決定するために使用するインベントリファイル、スクリプト、またはディレクトリのデフォルトの場所です。

inventory = /etc/ansible/hosts

1.9より前のAnsibleではhostfileと呼ばれていました

もう1つのことは、システムで使用可能な別のansible.cfgファイルがないことを確認することです。 http://docs.ansible.com/ansible/intro_configuration.html

変更を加えて、次の順序で処理される構成ファイルで使用できます。

  • ANSIBLE_CONFIG(環境変数)
  • ansible.cfg(現在のディレクトリ内)
  • .ansible.cfg(ホームディレクトリ内)
  • /etc/ansible/ansible.cfg
5
Diamond