ansible роль, странное поведение вызова из командной строки - PullRequest
0 голосов
/ 29 мая 2020

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

- name: "find smth"
  find:
    paths: "{{ search_path }}"
    file_type: file
    patterns: "*.gz"
    recurse: no
  loop_control:
    loop_var: search_path
  loop: "{{ search_paths }}"
  register: find_result

- debug:
    msg: "{{ file_path }}"
  loop_control:
    loop_var: file_path
  loop: "{{ find_result.results | map(attribute='files') | sum(start=[]) | map(attribute='path') | list }}"

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

ansible HOST -u REMOTE_USER -m include_role -a name=ROLE_NAME -e '{"include": {"step1": "06_test"}}' -e '{"search_paths":["/tmp","/opt/tmp"]}'

main.yml (просто для объяснения включения step1):

- include: "{{ item.value }}.yml"
  loop: "{{ lookup('dict', include, wantlist=True) }}"

В этом случае задача отладки всегда печатает:

HOST | SUCCESS => {
    "msg": "All items completed"
}

Это сообщение результата l oop, зарегистрированная структура find_result присутствует, но я не могу получить к ней доступ через l oop в задаче отладки. Однако доступ к значению работает (например, msg: "{{find_result.results [0] .files [0] .path}}").

Я использую ansible в версии 2.9.9 с python 3.5.7 на debian stretch. Вышеуказанные задачи представляют собой лишь частичную проверку реального сценария.

...