私はPacktのAnsibleチュートリアルに従い、3つのUbuntuコンテナ(lxc)を作成して実行しています。それぞれにログインすることもできます。
以下を介してAnsibleをダウンロードgit clone ansible-git-url
した後に取得しました。
私の仕事の設定は次のとおりです。ここには2つのフォルダ(完全なgitリポジトリ)/home/myuser/code
があり、2つのファイルがあります。ansible
ansible_course
ansible.cfg
inventory
inventory
次のコンテンツが含まれています。
[allservers]
192.168.122.117
192.168.122.146
192.168.122.14
[web]
192.168.122.146
192.168.122.14
[database]
192.168.122.117
以下ansible.cfg
を含みます。
[root@localhost ansible_course]# cat ansible.cfg
[defaults]
host_key_checking = False
次に、このパスで/home/myuser/code/ansible_course
次のコマンドを実行してみました。
$ ansible 192.168.122.117 -m ping -u root
チュートリアルに出てきた人はまさにそのようにして成功した答えを受けましたが、ping
次のエラーメッセージを受け取りました。
[WARNING]: Unable to parse /etc/ansible/hosts as an inventory source
[WARNING]: No inventory was parsed, only implicit localhost is available
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does not match 'all'
[WARNING]: Could not match supplied host pattern, ignoring: 192.168.122.117
チュートリアルでは、彼はソースを提供するために特別な措置を講じなければならないと言ったことがなく、私たちが持っているLinuxコンテナのIPアドレスでファイルを生成する必要があるとinventory
言いました。inventory
私の言うことは、彼はそれを設定するためにコマンドを実行しなければならないと言わなかったということです。
答え1
ホストファイルがどこにあるかをansibleに通知できますansible.cfg
。
[defaults]
inventory=inventory
inventory
実際に在庫ファイルであるとします。
答え2
背景
ファイルに基づいてファイル名を指定するか、ansible
次のように手動で指定できます。ansible.cfg
inventory
$ ansible -i inventory -m ping -u root 192.168.122.117
ansible.cfgで暗黙的に情報を提供する
$ ansible -m ping -u root 192.168.122.117
明らか
使用するマニフェストファイルを明示的に通知するメソッドの場合、ansible
使用法は次のとおりです。
ansible
使用法の観点から:
-i INVENTORY, --inventory=INVENTORY
specify inventory host path or comma separated host list.
絶対的な
暗黙的な方法の場合、これがどのように機能するかを理解するには、Ansibleにもっと熟練する必要があります。詳細情報 表示モードを使用して、デフォルトでansible
実行される操作をより詳細に確認できます。
$ ansible -vvv -m ping -u root box-101
...
...
config file = /Users/user1/somedir/ansible.cfg
...
...
Using /Users/user1/somedir/ansible.cfg as config file
Parsed /Users/user1/somedir/inventory inventory source with ini plugin
META: ran handlers
Using module file /Users/user1/projects/git_repos/ansible/lib/ansible/modules/system/ping.py
...
...
box-101 | SUCCESS => {
"changed": false,
"invocation": {
"module_args": {
"data": "pong"
}
},
"ping": "pong"
}
...
...
上記ではbox-101にpingを送っています。ansible.cfg
どのファイルが使用されているかを示す次の行を見ることができます。
config file = /Users/user1/somedir/ansible.cfg Using /Users/user1/ansible.cfg as config file
そしてこのansible.cfg
ファイルは最終的にリストを作成します。
Parsed /Users/user1/somedir/inventory inventory source with ini plugin
inventory
このファイルに直接アクセスできるオプションは次のとおりです。
$ cat ansible.cfg
...
[defaults]
inventory = inventory
...