Ansible: 在庫ソースを解析する方法

Ansible: 在庫ソースを解析する方法

私はPacktのAnsibleチュートリアルに従い、3つのUbuntuコンテナ(lxc)を作成して実行しています。それぞれにログインすることもできます。

以下を介してAnsibleをダウンロードgit clone ansible-git-urlした後に取得しました。

私の仕事の設定は次のとおりです。ここには2つのフォルダ(完全なgitリポジトリ)/home/myuser/codeがあり、2つのファイルがあります。ansibleansible_courseansible.cfginventory

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.cfginventory

明確に知られている
$ 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
...

関連情報