Совместное использование set_facts и with_items в Ansible
В настоящее время я использую Ansible 1.7.2. У меня есть следующий тестовый сборник:
---
- hosts: localhost
tasks:
- name: set fact 1
set_fact: foo="[ 'zero' ]"
- name: set fact 2
set_fact: foo="{{ foo }} + [ 'one' ]"
- name: set fact 3
set_fact: foo="{{ foo }} + [ 'two', 'three' ]"
- name: set fact 4
set_fact: foo="{{ foo }} + [ '{{ item }}' ]"
with_items:
- four
- five
- six
- debug: var=foo
Первая задача устанавливает факт, что это список с одним элементом. Последующие задачи добавляются в этот список с большим количеством значений. Первые три задачи работают как положено, но последнее - нет. Вот вывод, когда я запускаю это:
PLAY [localhost] **************************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [set fact 1] ************************************************************
ok: [localhost]
TASK: [set fact 2] ************************************************************
ok: [localhost]
TASK: [set fact 3] ************************************************************
ok: [localhost]
TASK: [set fact 4] ************************************************************
ok: [localhost] => (item=four)
ok: [localhost] => (item=five)
ok: [localhost] => (item=six)
TASK: [debug var=foo] *********************************************************
ok: [localhost] => {
"foo": [
"zero",
"one",
"two",
"three",
"six"
]
}
PLAY RECAP ********************************************************************
localhost : ok=6 changed=0 unreachable=0 failed=0
Учитывая with_items в задаче 4 и тот факт, что выходные данные показывают, что задача правильно повторена по элементам в этом списке, я ожидал бы, что результат будет содержать все числа от нуля до шести. Но эта последняя задача, похоже, оценивает set_fact только с последним элементом в списке. Это возможно ошибка в Ansible?
Редактировать: я также только что проверил это на ANSIBLE 1.8, и результат был идентичным.