首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ansible嵌套循环

Ansible嵌套循环
EN

Stack Overflow用户
提问于 2018-11-21 10:35:29
回答 3查看 379关注 0票数 0

我有一个变量,如下所示:

代码语言:javascript
复制
device:
  - sdb: 2
  - sdc: 3
  - sdd: 4

如何使用ansible循环生成结果:

代码语言:javascript
复制
sdb 1
sdb 2
sdc 1
sdc 2
sdc 3
sdd 1
sdd 2
sdd 3
sdd 4

我尝试了with_sequenceloop_control,但不起作用。

EN

回答 3

Stack Overflow用户

发布于 2018-11-21 11:21:33

使用ansible循环和jinja编写了一个调试任务,它应该会给你想要的结果。根据需要进行重构。

代码语言:javascript
复制
- name: Debug device var
  debug:
    msg: "{% for key, value in item.iteritems() %}{% for i in range(value) %} {{ key }} {{ loop.index }} {% endfor %}{% endfor %}"
  loop: "{{ device }}"
票数 0
EN

Stack Overflow用户

发布于 2018-11-21 16:49:57

最后,我得到了解决方案,但是我更改了变量的格式。该变量将更改为:

代码语言:javascript
复制
device:
  sdb: 2
  sdc: 3
  sdd: 4

结果是:

代码语言:javascript
复制
ok: [ceph-host-2] => (item=1) => {
    "msg": "sdd 1"
}
ok: [ceph-host-2] => (item=2) => {
    "msg": "sdd 2"
}
ok: [ceph-host-2] => (item=3) => {
    "msg": "sdd 3"
}
ok: [ceph-host-2] => (item=4) => {
    "msg": "sdd 4"
}

TASK [osd : debug] 
ok: [ceph-host-2] => (item=1) => {
    "msg": "sdb 1"
}
ok: [ceph-host-2] => (item=2) => {
    "msg": "sdb 2"
}

TASK [osd : debug] 
ok: [ceph-host-2] => (item=1) => {
    "msg": "sdc 1"
}
ok: [ceph-host-2] => (item=2) => {
    "msg": "sdc 2"
}
ok: [ceph-host-2] => (item=3) => {
    "msg": "sdc 3"
}

main.yml

代码语言:javascript
复制
- include_tasks: inner.yml
  loop: "{{ device.keys() }}"
  loop_control:
    loop_var: outer_item

inner.yml

代码语言:javascript
复制
- debug:
    msg: "{{ outer_item }} {{ item }}"
  with_sequence: count={{ device[outer_item] }}
票数 0
EN

Stack Overflow用户

发布于 2018-11-21 19:52:07

该变量为:

代码语言:javascript
复制
device:
  - sdb: 2
  - sdc: 3
  - sdd: 4

main.yml

代码语言:javascript
复制
- include_tasks: inner.yml
  loop: "{{ device }}"
  loop_control:
    loop_var: outer_item

inner.yml

代码语言:javascript
复制
- debug:
    msg: "{{ outer_item.keys()[0] }}  {{ item }}"
  with_sequence: count={{ outer_item.values()[0] }}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53404545

复制
相关文章

相似问题

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