11

group_vars/all で以下のようにハッシュ (dict) を定義できます。

region_subnet_matrix:
  site1:
    region: "{{ aws_region }}"
    subnet: "subnet-xxxxxxx"
    zone: "{{aws_region}}a"
  site2:
    region: "{{ aws_region }}"
    subnet: "subnet-xxxxxxx"
    zone: "{{aws_region}}b"

しかし、私の人生では、ホストファイルの下でそれを定義する方法を理解できませんでした

[all:vars]
region_subnet_matrix="{
  site1:
    region: "{{ aws_region }}"
    subnet: "subnet-xxxxxxx"
    zone: "{{aws_region}}a"
  site2:
    region: "{{ aws_region }}"
    subnet: "subnet-xxxxxxx"
    zone: "{{aws_region}}b"
}"

それが間違っていたことはわかっていますが、正しい方法はわかりません。誰か教えてください。

4

2 に答える 2

13

Ansibleのソースコードを読んでみると、Pythonのast.literal_eval()でインベントリファイルの変数の値を評価しています。そのため、1 行の Python リテラルでインベントリ ファイルに dict 変数を記述できます。

例は次のようになります。

[all:vars]
region_subnet_matrix={'site1': {'subnet': 'subnet-xxxxxxx', 'region': '{{ aws_region }}', 'zone': '{{aws_region}}a'}, 'site2': {'subnet': 'subnet-xxxxxxx', 'region': '{{ aws_region }}', 'zone': '{{aws_region}}b'}}

この例では変数が評価されていないことを確認してください。

注意: この種の在庫変数の定義が公式に許可されているかどうかはわかりません。

于 2015-07-03T05:46:58.183 に答える