Ansible вложенные циклы - PullRequest
       3

Ansible вложенные циклы

0 голосов
/ 21 ноября 2018

У меня есть переменная, которая выглядит следующим образом:

device:
  - sdb: 2
  - sdc: 3
  - sdd: 4

Как я могу получить результат с ANSIBLE LOOP:

sdb 1
sdb 2
sdc 1
sdc 2
sdc 3
sdd 1
sdd 2
sdd 3
sdd 4

Я пытался with_sequence и loop_control, ноэто не сработало.

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Наконец, я получил решение, но я изменил формат переменной.Переменная изменяется на:

device:
  sdb: 2
  sdc: 3
  sdd: 4

Результат:

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

- include_tasks: inner.yml
  loop: "{{ device.keys() }}"
  loop_control:
    loop_var: outer_item

inner.yml

- debug:
    msg: "{{ outer_item }} {{ item }}"
  with_sequence: count={{ device[outer_item] }}
0 голосов
/ 21 ноября 2018

Переменная:

device:
  - sdb: 2
  - sdc: 3
  - sdd: 4

main.yml

- include_tasks: inner.yml
  loop: "{{ device }}"
  loop_control:
    loop_var: outer_item

inner.yml

- debug:
    msg: "{{ outer_item.keys()[0] }}  {{ item }}"
  with_sequence: count={{ outer_item.values()[0] }}
0 голосов
/ 21 ноября 2018

Написал задачу отладки с ansible loop и jinja, которая должна дать вам желаемый результат.Рефакторинг по мере необходимости.

- name: Debug device var
  debug:
    msg: "{% for key, value in item.iteritems() %}{% for i in range(value) %} {{ key }} {{ loop.index }} {% endfor %}{% endfor %}"
  loop: "{{ device }}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...