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.cfg
VagrantFileも存在する現在のディレクトリ内のファイル。
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によって無視されますか?
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