inventory ファイル
管理サーバーで管理する対象ホストの情報を記述したファイルです。基本的な構成は下記のとおりです。- グループ名:
- hosts:
- inventory ファイル内のホスト名:
- パラメータ
パラメータ
パラメータ | 設定値 |
---|---|
ansible_host | 対象ホストの IP アドレス、または DNS などで名前解決できる場合はホスト名 |
ansible_user | 対象ホストにログインするときのユーザーアカウント |
ansible_password | 対象ホストにログインするときのパスワード |
ansible_ssh_private_key_file | 鍵認証時に使用する秘密鍵ファイルのパス |
ansible_python_interpreter | 対象ホストの python のパス名。対象ホストが python3 の場合 ansible_python_interpreter: /usr/bin/python3 と指定する |
具体例
対象ホストの情報です。項目 | 値 |
---|---|
ホスト名 | node1.exam.local |
IP アドレス | 192.168.101.11 |
ログインアカウント | root |
ログインパスワード | root@node1 |
all: hosts: node1: ansible_host: 192.168.101.11 ansible_user: root ansible_password: root@node1ansible_host にホスト名を指定した場合です。
all: hosts: node1: ansible_host: node1.exam.local ansible_user: root ansible_password: root@node1
host_vars ディレクトリ
inventory ファイル内に 3 台の対象ホスト( node1 , node2 , node3 )を定義した例です。all: hosts: node1: ansible_host: 192.168.101.11 ansible_user: root ansible_password: root@node1 node2: ansible_host: 192.168.101.12 ansible_user: root ansible_password: root@node2 node3: ansible_host: 192.168.101.13 ansible_user: root ansible_password: root@node3Ansible では ansible_host など対象ホストのホスト変数を inventory ファイル内に記述しないことを推奨しています。このルールに従った inventory ファイルの内容です。
all: hosts: node1: node2: node3:inventory ファイルから押し出された ansible_host などの対象ホストごとの情報(ホスト変数で定義)の記述ルールです。
- ansible_host などの対象ホストごとの情報は「 inventory ファイル内のホスト名.yml 」ファイルに記述する
- ファイルは host_vars ディレクトリ内に配置する
■ host_vars/node1.yml
ansible_host: 192.168.101.11 ansible_user: root ansible_password: root@node1■ host_vars/node2.yml
ansible_host: 192.168.101.12 ansible_user: root ansible_password: root@node2■ host_vars/node3.yml
ansible_host: 192.168.101.13 ansible_user: root ansible_password: root@node3■ファイルの配置
.
├── hosts.yml
└── host_vars
├── node1.yml
├── node2.yml
└── node3.yml
group_vars ディレクトリ
host_vars ディレクトリの説明の最初に提示した inventory ファイルの内容です。all: hosts: node1: ansible_host: 192.168.101.11 ansible_user: root ansible_password: root@node1 node2: ansible_host: 192.168.101.12 ansible_user: root ansible_password: root@node2 node3: ansible_host: 192.168.101.13 ansible_user: root ansible_password: root@node3all グループ内の 3 台の対象ホスト( node1, node2, node3 )すべてに次の定義が含まれています。
ansible_user: rootこのように 1 つのグループ内ですべての対象ホストに共通する定義の記述ルールです。
- 1 つのグループ内ですべての対象ホストに共通する定義は「グループ名.yml 」ファイルに記述する
- ファイルは group_vars ディレクトリ内に配置する
■ inventory ファイル : hosts.yml
all: hosts: node1: ansible_host: 192.168.101.11 ansible_password: root@node1 node2: ansible_host: 192.168.101.12 ansible_password: root@node2 node3: ansible_host: 192.168.101.13 ansible_password: root@node3■ group_vars/all.yml
ansible_user: root■ファイルの配置
.
├── group_vars
│ └── all.yml
└── hosts.yml
まとめ
inventory ファイルの書き方のルールです。- inventory ファイルはグループと対象ホストのホスト名( inventory ファイル内のホスト名)を記述する
- 対象ホストごとの定義は host_vars ディレクトリ内に記述する
- グループ内のすべての対象ホストに共通する定義は group_vars ディレクトリ内に記述する
■ inventory ファイル : hosts.yml
all: hosts: node1: ansible_host: 192.168.101.11 ansible_user: root ansible_password: root@node1 node2: ansible_host: 192.168.101.12 ansible_user: root ansible_password: root@node2 node3: ansible_host: 192.168.101.13 ansible_user: root ansible_password: root@node3
《 ルールの適用後 》
■ inventory ファイル : hosts.yml
all: hosts: node1: node2: node3:■ host_vars/node1.yml
ansible_host: 192.168.101.11 ansible_password: root@node1■ host_vars/node2.yml
ansible_host: 192.168.101.12 ansible_password: root@node2■ host_vars/node3.yml
ansible_host: 192.168.101.13 ansible_password: root@node3■ group_vars/all.yml
ansible_user: root■ファイルの配置
.
├── group_vars
│ └── all.yml
├── hosts.yml
└── host_vars
├── node1.yml
├── node2.yml
└── node3.yml
変更履歴
2019/02/24 全体の見直し2019/03/02 inventory ファイルの配置場所の記述を「ファイルの配置場所 = ディレクトリレイアウト」へ移動した
2019/03/02 host_vars と group_vars を追記した
2019/05/01 ansible_ssh_private_key_file を追記した
2019/05/12 ansible_python_interpreter を追記した