Ansible 通过分析列表项值将字符串添加到列表中(如果项==';valor';,则将字符串a添加到列表中)
有必要在列表中添加字符串,以确保列表中的所有文件都是基于文件的Ansible 通过分析列表项值将字符串添加到列表中(如果项==';valor';,则将字符串a添加到列表中),ansible,ansible-facts,Ansible,Ansible Facts,有必要在列表中添加字符串,以确保列表中的所有文件都是基于文件的 我需要在列表中添加一个字符串,其值取决于列表中某个属性的值 #ambprueba.yml 列出所有基础: -{BASE:'ambprueba_sc',TWO_TASK:'sc'} -{BASE:'ambprueba_si',TWO_TASK:'si'} -{BASE:'ambprueba_slucs',TWO_TASK:'001'} -{BASE:'ambprueba_slud',TWO_TASK:'105'} --------
我需要在列表中添加一个字符串,其值取决于列表中某个属性的值
#ambprueba.yml
列出所有基础:
-{BASE:'ambprueba_sc',TWO_TASK:'sc'}
-{BASE:'ambprueba_si',TWO_TASK:'si'}
-{BASE:'ambprueba_slucs',TWO_TASK:'001'}
-{BASE:'ambprueba_slud',TWO_TASK:'105'}
--------------------------
#预期结果
列出所有基础:
-{BASE:'ambprueba_sc',TWO_TASK:'sc',TIPO:'sc'}
-{BASE:'ambprueba_si',TWO_TASK:'si',TIPO:'si'}
-{BASE:'ambprueba_slucs',TWO_TASK:'001',TIPO:'slu'}
-{BASE:'ambprueba_slud',TWO_TASK:'105',TIPO:'slu'}
试试这个:
- set_fact:
LIST_BASES: []
- name: "adding string value tipo to list"
set_fact:
LIST_BASES: "{{ LIST_BASES + [item | combine({'TIPO': item.TWO_TASK if item.TWO_TASK=='sc' or item.TWO_TASK=='si' else 'slu'})] }}"
with_items: "{{ INFO_AMBIENTE.LIST_BASES }}"
第一个set\u fact
任务将变量初始化为列表。第二个set\u fact
任务附加了一个新的列表条目,该条目是“TIPO”键的原始dict
与新的dict
组合。“TIPO”的值是根据您的要求有条件设置的
#error:
fatal: [xxx.xxx.xxx.xxx]: FAILED! => {"msg": "template error while templating string: unexpected '%'. String: {{ ITEM.BASE + ITEM.TWO_TASK + [{'TIPO':{% if ITEM.TWO_TASK=='sc' or ITEM.TWO_TASK=='si' %}ITEM.TWO_TASK{% else% }slu }] }}"}
- set_fact:
LIST_BASES: []
- name: "adding string value tipo to list"
set_fact:
LIST_BASES: "{{ LIST_BASES + [item | combine({'TIPO': item.TWO_TASK if item.TWO_TASK=='sc' or item.TWO_TASK=='si' else 'slu'})] }}"
with_items: "{{ INFO_AMBIENTE.LIST_BASES }}"