2015-08-25 2 views
1

У меня есть сборник пьес анзибль который включает в себя файл дважды, и проходит в качестве параметра, чтобы изменить поведение:Несложная множественность включает в себя несколько задач?

site.yml:

--- 
- tasks: 
    - include: test.yml parm=AAA 
    - include: test.yml parm=BBB 

включаемого файла просто выводит значение параметра:

test.yml:

- debug: msg="dbg 1 {{ parm }}" 

Файла инвентаризации для работы на локальном хосте:

инвентарь:

localhost ansible_connection=local 

Результат является то, что я ожидаю, включаемый файл запускается дважды, один раз с Пармом = AAA и один раз с Пармом = В :

>ansible-playbook -i inventory site.yml 

PLAY *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [include parm=AAA] ******************************************************** 
included: test.yml for localhost 

TASK [debug msg=dbg 1 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 1 AAA" 
} 

TASK [include parm=BBB] ******************************************************** 
included: test.yml for localhost 

TASK [debug msg=dbg 1 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 1 BBB" 
} 

PLAY RECAP ********************************************************************* 
localhost     : ok=5 changed=0 unreachable=0 failed=0 

Отлично. Теперь мне нужно сделать вторую задачу в заголовочном файле:

test.yml:

- debug: msg="dbg 1 {{ parm }}" 
- debug: msg="dbg 2 {{ parm }}" 

Что я ожидаю, что включаемый файл будет выполняться два раза, так же, как и прежде, первым делает оригинальную задачу «dbg 1 AAA», а затем новую задачу «dbg 2 AAA», а затем вторую задачу «dbg 1 BBB», а затем новую задачу «dbg 2 BBB».

Он делает это вместо того, чтобы:

>ansible-playbook -i inventory site.yml 

PLAY *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [include parm=AAA] ******************************************************** 
included: test.yml for localhost 

TASK [debug msg=dbg 1 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 1 AAA" 
} 

TASK [debug msg=dbg 2 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 2 AAA" 
} 

PLAY RECAP ********************************************************************* 
localhost     : ok=4 changed=0 unreachable=0 failed=0 

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

test2.yml:

- debug: msg="dbg 1 {{ parm }}" 
- debug: msg="dbg 2 {{ parm }}" 

и настроить сборник пьес включить что вместо:

site.yml:

--- 
- tasks: 
    - include: test.yml parm=AAA 
    - include: test2.yml parm=BBB 

Тогда если test.yml имеет только одну задачу, я получаю ожидаемый результат:

PLAY *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [include parm=AAA] ******************************************************** 
included: test.yml for localhost 

TASK [debug msg=dbg 1 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 1 AAA" 
} 

TASK [include parm=BBB] ******************************************************** 
included: test2.yml for localhost 

TASK [debug msg=dbg 1 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 1 BBB" 
} 

TASK [debug msg=dbg 2 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 2 BBB" 
} 

PLAY RECAP ********************************************************************* 
localhost     : ok=6 changed=0 unreachable=0 failed=0 

Но если test.yml имеет две задачи, он пропускает второй включают в себя:

PLAY *************************************************************************** 

TASK [setup] ******************************************************************* 
ok: [localhost] 

TASK [include parm=AAA] ******************************************************** 
included: test.yml for localhost 

TASK [debug msg=dbg 1 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 1 AAA" 
} 

TASK [debug msg=dbg 2 {{ parm }}] ********************************************** 
ok: [localhost] => { 
    "changed": false, 
    "msg": "dbg 2 AAA" 
} 

PLAY RECAP ********************************************************************* 
localhost     : ok=4 changed=0 unreachable=0 failed=0 

Что мне не хватает? Нет ошибок или сбоев, и две строки в файле include почти идентичны. Почему имеет место более чем одна строка в первом файле include, потому что вторая часть должна быть пропущена?

Если добавить больше отладки строки в сборник пьес:

site.yml:

--- 
- tasks: 
    - include: test.yml parm=AAA 
    - debug: msg="1" 
    - include: test2.yml parm=BBB 
    - debug: msg="2" 
    - debug: msg="3" 

Сообщения отладки выводятся только если включить файл, который предшествует им иметь ровно одну строку.

Я бегу Ansible from git: //github.com/ansible/ansible.git ветвь devel, обновленная непосредственно перед тестированием.

ответ

0

Проблема сначала появляется в git here.

This оптимизация вызывает проблему.

0

Я предлагаю подавать это как проблему против основного проекта @https://github.com/ansible/ansible/issues. Было внесено много изменений в состав динамической задачи очереди задач в версии 2.0, и это звучит как законная ошибка.

+1

Это была ошибка, но теперь они исправлены. – DaveK

Смежные вопросы