在庫を分離するAnsibleのベストプラクティスのドキュメントrecommends:Ansibleで異なるインベントリ間でgroup_varsを共有するにはどうすればよいですか?
inventories/ production/ hosts.ini # inventory file for production servers group_vars/ group1 # here we assign variables to particular groups group2 # "" host_vars/ hostname1 # if systems need specific variables, put them here hostname2 # "" staging/ hosts.ini # inventory file for staging environment group_vars/ group1 # here we assign variables to particular groups group2 # "" host_vars/ stagehost1 # if systems need specific variables, put them here stagehost2 # ""
マイステージング環境と本番環境は同じように構成されています。私は両方の環境で同じグループを持っています。そして、私は同じグループに対しても同じgroup_varsを持っていることが分かりました。これは私が払拭したい冗長性を意味します。
異なるインベントリ間でいくつかのgroup_varsを共有する方法はありますか?
回避策として、私は役割に共有group_varsを入れ始めました。
my_var:
my_group:
- { var1: 1, var2: 2 }
これは、定義されたVARとホストのグループを交差することにより、いくつかのVARSを反復処理することが可能になる:
with_items: "{{group_names | intersect(my_var.keys())}}"
しかし、これは理解するビット複雑であると私は役割が知っているべきではないと思いますグループについて何か
ほとんどのインベントリを分けていますが、分かりやすい方法でgroup_varsを共有したいと思います。グローバルなgroup_varsとインベントリ固有のgroup_varsをマージすることは可能ですか?
ただし、これはプレイブックでのみ有効です。アドホックコマンドは失敗します。アドホックコマンドの実行をカスタマイズしてグローバルなgroup_varsを読み込む方法はありますか? – ceving
別の問題は、別のグループから変数を収集したい場合、 'hash_behaviour = merge'を設定する必要があると思われます。そして、ハッシュの配列値はどうですか? – ceving
これはアドホックでは機能しません。リストを自動マージすることはできません。手動タスクを使用する必要があります。 –