辞書変数から選択する必要があります。
- name: test
hosts: localhost
vars:
bum: 0
alpha:
- 0
beta:
- 0
- 1
test_vars: '{% if bum == 1 %}{{ alpha }}{% else %}{{ beta }}{% endif %}'
servers:
- 127.0.0.1
- 127.0.0.2
tasks:
- debug:
msg: "This is {{ item }}"
loop:
- "{{ test_vars }}"
- ping: "{{ {{servers}} [{{ item }}] }}"
loop:
- "{{ test_vars }}"
ありがとう
答え1
論理を辞書に入れる
test_vars:
1: "{{ alpha }}"
default: "{{ beta }}"
ループで使用
- debug:
msg: "item: {{ item }}"
loop: "{{ test_vars[bum|int]|
default(test_vars.default) }}"
テストのための完全なプレイブックの例
shell> cat pb.yml
- hosts: localhost
vars:
bum: 0
alpha: [0]
beta: [0, 1]
test_vars:
1: "{{ alpha }}"
default: "{{ beta }}"
tasks:
- debug:
msg: "item: {{ item }}"
loop: "{{ test_vars[bum|int]|
default(test_vars.default) }}"
基本的にベータ使用
shell> ansible-playbook pb.yml
...
TASK [debug] *********************************************************************************
ok: [localhost] => (item=0) =>
msg: 'item: 0'
ok: [localhost] => (item=1) =>
msg: 'item: 1'
次のように既存のキーを設定できます。
shell> ansible-playbook pb.yml -e bum=1
...
TASK [debug] *********************************************************************************
ok: [localhost] => (item=0) =>
msg: 'item: 0'