У меня есть роль, которую я хотел бы выполнять несколько раз, каждое выполнение с другой переменной. Однако я бы также хотел, чтобы некоторые из этих казней были условными.
Вот файл main.yml:
- hosts: localhost
roles:
- { role: test, test_files_group: 'a'}
- { role: test, test_files_group: 'b', when: False}
Вот файл main.yml из тестовой роли (roles/test/tasks/main.yml
):
- name: List files
command: "find . ! -path . -type f"
args:
chdir: "{{ role_path }}/files/{{ test_files_group }}"
register: files
- debug: var=files.stdout_lines
- name: do something with the files
shell: "echo {{ item }}"
with_items: "{{ files.stdout_lines }}"
А вот часть вывода команды ansible-playbook:
TASK [test : List files]
*******************************************************
changed: [localhost]
TASK [test : debug] ************************************************************
ok: [localhost] => {
"files.stdout_lines": [
"./testfile-a"
]
}
TASK [test : do something with the files] **************************************
changed: [localhost] => (item=./testfile-a)
TASK [test : List files] *******************************************************
skipping: [localhost]
TASK [test : debug] ************************************************************
skipping: [localhost]
TASK [test : do something with the files] **************************************
fatal: [localhost]: FAILED! => {"failed": true, "msg": "'dict object' has no attribute 'stdout_lines'"}
Все работает для 'a', как и ожидалось, но затем задача do something with the files
выполняется для b, хотя я установил when: False
.
Мне кажется, что я чего-то упускаю - я хочу, чтобы все в roles/test/tasks/main.yml
выполнялось с соответствующим установленным test_files_group
var или не выполнялось вовсе. Что я делаю неправильно? :)