Миграция между with_items для цикла - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь перенести некоторый код из with_items в цикл.

У меня есть этот playbook.yml. Кажется, они одинаковы, но просто изменили with_items на loop

- debug:  
    msg: "{{ item }}"
  loop:   
  - "{{ lookup('pipe','echo -e  \"pro.json\npre.json\ndev.json\"').split('\n') }}"

- debug:  
    msg: "{{ item }}"
  with_items:
  - "{{ lookup('pipe','echo -e  \"pro.json\npre.json\ndev.json\"').split('\n') }}"

Это вывод.

TASK [loop: debug] **********************************************************************************************************************************************************************************
ok: [server] => (item=[u'pro.json', u'pre.json', u'dev.json']) => {
"msg": [
    "pro.json", 
    "pre.json", 
    "dev.json"
]
}

    TASK [with_items : debug] **********************************************************************************************************************************************************************************
Ok: [server] => (item=pro.json) => {
    "msg": "pro.json"
}
ok: [server] => (item=pre.json) => {
    "msg": "pre.json"
}
ok: [server] => (item=dev.json) => {
    "msg": "dev.json"
}

Как видите, цикл удерживает вывод в виде цепочки, а with_items разделяет его на три выхода.

Мне нужно изменить выход цикла, чтобы он выглядел как with_items. То, что я хочу, это создать цикл, который даст мне список, в зависимости от списка, который этот цикл будет зацикливать.

Результат with_items зацикливает три или столько же, сколько команда pipe, но зацикливает только один

РЕДАКТИРОВАТЬ:

Я пробовал решение с последовательностью для цикла, и кажется, что это возможно, но я не могу изменить свой код для работы, как.

https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html?highlight=loop#with-sequence

TASK [: with_sequence] **************************************************************************************************************************************************************************
ok: [server] => (item=testuser00) => {
    "msg": "testuser00"
}
ok: [server] => (item=testuser02) => {
    "msg": "testuser02"
}
ok: [server] => (item=testuser04) => {
    "msg": "testuser04"
}

TASK [: with_sequence -> loop] ******************************************************************************************************************************************************************
ok: [server] => (item=0) => {
    "msg": "testuser00"
}
ok: [server] => (item=2) => {
    "msg": "testuser02"
}
ok: [server] => (item=4) => {
    "msg": "testuser04"
}

1 Ответ

1 голос
/ 10 июня 2019

Передавайте список напрямую, а не как элемент списка, содержащий список в цикле

- debug:  
    msg: "{{ item }}"
  loop: "{{ lookup('pipe','echo -e  \"pro.json\npre.json\ndev.json\"').split('\n') }}"

Для получения дополнительной информации см. https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...