首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在var文件中使用ANSIBLE的var循环

在var文件中使用ANSIBLE的var循环
EN

Stack Overflow用户
提问于 2022-10-18 15:46:51
回答 1查看 31关注 0票数 0

我想对vars.yml文件中的变量进行循环,但是使用相同的id,下面是我的示例:

在我的剧本里:

代码语言:javascript
复制
     - 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文件中:

代码语言:javascript
复制
syslocation_var: ;test;
emplacement_cmdb_var: ;newtest;
syslocation_var: ;test2;
emplacement_cmdb_var: ;newtest2;

我也想做同样的事情:

代码语言:javascript
复制
     - 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文件中

我希望我能理解..。

特克斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-18 16:06:20

Yaml是。yaml。yaml中的一个白痴是..。一个混蛋。您不能在dict中复制键,尽管它不是一个错误: linter只会发出警告,除非最后一个定义获胜。因此,就本质而言:

代码语言:javascript
复制
a: 1
a: 2
a: 3

结果:

代码语言:javascript
复制
a: 3

现在,您说您想做与以下内容相同的事情:

代码语言:javascript
复制
       with_items:
          - { syslocation: ;test;, emplacement_cmdb: ;newtest; }
          - { syslocation: ;test2;, emplacement_cmdb: ;nextest2; }

实际上,您是在一个字典列表上循环,这个列表也可以写成:

代码语言:javascript
复制
       with_items:
          - syslocation: ;test;
            emplacement_cmdb: ;newtest;
          - syslocation: ;test2;
            emplacement_cmdb: ;nextest2;

您只需在vars.yml文件中定义一个var:

代码语言:javascript
复制
mes_entrees_cmdb:
  - syslocation: ;test;
    emplacement_cmdb: ;newtest;
  - syslocation: ;test2;
    emplacement_cmdb: ;nextest2;

然后将该文件加载到播放的vars_files部分或使用include_vars的任务中。最后,在任务中对该变量执行循环:

代码语言:javascript
复制
     - 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 }}"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74113850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档