我想对vars.yml文件中的变量进行循环,但是使用相同的id,下面是我的示例:
在我的剧本里:
- name: Mise en conformité avec la CMDB
replace:
path: "{{ playbook_dir }}/results/wifi.csv"
regexp: '{{ item.syslocation }}'
replace: '{{ item.emplacement_cmdb }}'
with_items:
- { syslocation: "{{ syslocation_var }}", emplacement_cmdb: "{{ emplacement_cmdb_var }}" }在我的var文件中:
syslocation_var: ;test;
emplacement_cmdb_var: ;newtest;
syslocation_var: ;test2;
emplacement_cmdb_var: ;newtest2;我也想做同样的事情:
- name: Mise en conformité avec la CMDB
replace:
path: "{{ playbook_dir }}/results/wifi.csv"
regexp: '{{ item.syslocation }}'
replace: '{{ item.emplacement_cmdb }}'
with_items:
- { syslocation: ;test;, emplacement_cmdb: ;newtest; }
- { syslocation: ;test2;, emplacement_cmdb: ;nextest2; }但在var文件中
我希望我能理解..。
特克斯
发布于 2022-10-18 16:06:20
Yaml是。yaml。yaml中的一个白痴是..。一个混蛋。您不能在dict中复制键,尽管它不是一个错误: linter只会发出警告,除非最后一个定义获胜。因此,就本质而言:
a: 1
a: 2
a: 3结果:
a: 3现在,您说您想做与以下内容相同的事情:
with_items:
- { syslocation: ;test;, emplacement_cmdb: ;newtest; }
- { syslocation: ;test2;, emplacement_cmdb: ;nextest2; }实际上,您是在一个字典列表上循环,这个列表也可以写成:
with_items:
- syslocation: ;test;
emplacement_cmdb: ;newtest;
- syslocation: ;test2;
emplacement_cmdb: ;nextest2;您只需在vars.yml文件中定义一个var:
mes_entrees_cmdb:
- syslocation: ;test;
emplacement_cmdb: ;newtest;
- syslocation: ;test2;
emplacement_cmdb: ;nextest2;然后将该文件加载到播放的vars_files部分或使用include_vars的任务中。最后,在任务中对该变量执行循环:
- name: Mise en conformité avec la CMDB
replace:
path: "{{ playbook_dir }}/results/wifi.csv"
regexp: '{{ item.syslocation }}'
replace: '{{ item.emplacement_cmdb }}'
with_items: "{{ mes_entrees_cmdb }}"https://stackoverflow.com/questions/74113850
复制相似问题