Цикл с with_subelements ansible
Привет есть следующие переменные:
couchbase:
- name: incre1
ipaddress:
- 10.16.9.177
- 10.16.9.178
buckets:
- AA1
- aa1
И у моего плаката есть следующее:
- debug:
msg: "Running backup as {{CBBACKUPMGR}} backup -r {{ item.1 }} --cluster couchbase://{{ item.0.ipaddress }}"
register: example
with_subelements:
- "{{ couchbase }}"
- buckets
И я хочу перебрать ipaddress, а затем с ведрами, так что в основном я хочу увидеть:
Running backup as /opt/ouchbase backup -r AA1 --cluster couchbase://10.16.9.177
Running backup as /opt/ouchbase backup -r aa1 --cluster couchbase://10.16.9.177
Running backup as /opt/ouchbase backup -r AA1 --cluster couchbase://10.16.9.178
Running backup as /opt/ouchbase backup -r aa1 --cluster couchbase://10.16.9.178
Тем не менее, при запуске playbook я вижу следующее:
Running backup as /opt/ouchbase backup -r AA1 --cluster couchbase://[u'10.16.9.177', u'10.16.9.178']
Running backup as /opt/ouchbase backup -r aa1 --cluster couchbase://[u'10.16.9.177', u'10.16.9.178']
1 ответ
Решение
Это не то, что with_subelements
делает. Если вы используете этот цикл "отладки" для печати {{ item }}, вы увидите, что на каждой итерации он создает список:
- родительский элемент из
couchbase
список, содержащий указанный вами субэлемент, БЕЗ хеша этого субэлемента и - значение подэлемента этой итерации.
вот вывод:
TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [localhost] => (item=None) => {
"msg": [
{
"ipaddress": [
"10.16.9.177",
"10.16.9.178"
],
"name": "incre1"
},
"AA1"
]
}
ok: [localhost] => (item=None) => {
"msg": [
{
"ipaddress": [
"10.16.9.177",
"10.16.9.178"
],
"name": "incre1"
},
"aa1"
]
}
PLAY RECAP
Как вы пояснили, вы намерены создать все возможные комбинации между ipaddress
а также buckets
,
Чтобы достичь этого, попробуйте эту задачу:
- debug:
msg: "Running backup as {{CBBACKUPMGR}} backup -r {{ item[0] }} --cluster couchbase://{{ item[1] }}"
register: example
with_items:
- "{{ lookup('nested', couchbase[0].ipaddress, couchbase[0].buckets) }}"
Это предполагает, что у вас будет couchbase
Переменная list только с одним элементом, как в вашем примере.
результат:
TASK [debug] ********************************************************************************************************************************************************************************************************
ok: [localhost] => (item=None) => {
"msg": "Running backup as /opt/ouchbase backup -r 10.16.9.177 --cluster couchbase://AA1"
}
ok: [localhost] => (item=None) => {
"msg": "Running backup as /opt/ouchbase backup -r 10.16.9.177 --cluster couchbase://aa1"
}
ok: [localhost] => (item=None) => {
"msg": "Running backup as /opt/ouchbase backup -r 10.16.9.178 --cluster couchbase://AA1"
}
ok: [localhost] => (item=None) => {
"msg": "Running backup as /opt/ouchbase backup -r 10.16.9.178 --cluster couchbase://aa1"
}
PLAY RECAP
Надеюсь, поможет.