AAPにおけるダイナミックインベントリー
単一インベントリーrepo構成
インベントリーのgit repoがホスト指定と変数指定を含む
認証情報
gitの認証。ここではssh認証としている
名前: dynamic_inv_ssh
認証情報タイプ: Source Control
ユーザ名: Hiroyuki-Onodera1
SCM Private Key: xxxxxx (入力後は表示されない)
プロジェクト
名前: dynamic_inv_prj
ソースコントロールのタイプ: Git
ソースコントロールの URL: git@github.ibm.com:Hiroyuki-Onodera1/xxxx.git # ssh認証を利用しているため、git@...書式を指定
有効化済みのオプション:
- 同期する前にローカル変更を破棄する
- プロジェクトを削除してから同期する
- ジョブ起動時のリビジョン更新
git repo上のインベントリー構成例1
.
├── (host_vars)
├── (group_vars)
└── inventory.yml
- インベントリーソースでは、inventory.ymlを指定
inventory.ymlの内容例
all:
hosts:
node01:
ansible_host: 172.16.80.215
ansible_user: vagrant
git repo上のインベントリー構成例2
.
└── inventory
├── (host_vars)
├── (group_vars)
└── inventory.json
- インベントリーソースでは、inventory(ディレクトリー)を指定
インベントリー
名前: dynamic_inv
(インベントリー)ソース
上のインベントリーに追加するインベントリーソース
名前: dynamic_inv_src
ソース: Sourced from a Project
プロジェクト: dynamic_inv_prj
Inventory file: hosts
有効化済みのオプション:
- Update on launch
Inventory fileは、 git repoのトップからの相対パス。YAML, JSON, ディレクトリーなどの指定が可能。_metaを用いた書式は不可。
複数インベントリー利用構成
ホスト指定インベントリー、変数指定インベントリー、フィックス情報インベントリーを分離
認証情報
単一インベントリーrepo構成と同様
プロジェクト
単一インベントリーrepo構成に以下を追加
名前: dynamic_inv2_prj
ソースコントロールのタイプ: Git
ソースコントロールの URL: git@github.ibm.com:Hiroyuki-Onodera1/xxxx2.git
有効化済みのオプション:
同期する前にローカル変更を破棄する
プロジェクトを削除してから同期する
ジョブ起動時のリビジョン更新
名前: dynamic_inv3_prj
ソースコントロールのタイプ: Git
ソースコントロールの URL: git@github.ibm.com:Hiroyuki-Onodera1/xxxx3.git
有効化済みのオプション:
同期する前にローカル変更を破棄する
プロジェクトを削除してから同期する
ジョブ起動時のリビジョン更新
インベントリー
名前: dynamic_inv
(インベントリー)ソース
単一インベントリーrepo構成に以下を追加
名前: dynamic_inv2_src
ソース: Sourced from a Project
プロジェクト: dynamic_inv2_prj
Inventory file: hosts.yml
有効化済みのオプション:
- Update on launch
名前: dynamic_inv3_src
ソース: Sourced from a Project
プロジェクト: dynamic_inv3_prj
Inventory file: hosts.yml
有効化済みのオプション:
- Update on launch
Inventory files指定は、varsのみのインベントリーの場合でも、{ "all": { "hosts": {} } といった内容のファイル(もしくはこの様な内容ファイルを含むディレクトリー)を指定
変数のみインベントリー構成例1
.
├── group_vars
│ └── all
│ └── main.yml
└── inventory.json
インベントリーソースでは、inventory.jsonを指定
inventory.jsonの内容
{ "all": { "hosts": {} } }
もしくはinventory.ymlとして
all:
hosts: {}
変数のみインベントリー構成例2
.
└── inventory
├── group_vars
│ └── all
│ └── main.yml
└── inventory.json
インベントリーソースでは、inventory(ディレクトリー)を指定
複数のソースで同じキーで変数を指定した場合の挙動
最後に読み込んだもので上書き。
読み込み順序制御はできないため、同じキーは利用しない方が良い。
上書きさせるというオプションはあるため、合計2なら一方を上書きモードとすることで結果を固定可能。
deepマージ指定
deep mergeさせることも設定上は可能だが、
- 範囲が広く、他への影響が懸念される
- 事例は少ないと思われる
AAPジョブ設定における追加の環境変数 (Extra Environment Variables) に、以下を追記(未検証)
ANSIBLE_HASH_BEHAVIOUR: merge