0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AAPにおけるダイナミックインベントリー

Posted at

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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?