ansible l oop над списком python - PullRequest
1 голос
/ 17 июня 2020

У меня есть роль ansible, которая содержит следующие задачи:

- name: get Units from xml - local action
  delegate_to: localhost
  become: true
  shell: python -c 'import parse_xml2json; print(parse_xml2json.parse("{{ env }}", "{{ component }}", "units", "unitID"))'
  args:
    chdir: "{{ scripts_path }}"
  register: units

- debug:
  var: "{{ units.stdout_lines }}"

Она запускает функцию python с именем 'parse' из файла с именем 'parse_xml2 json .py' и его вывод выглядит так:

"stdout_lines": [
        "['1', '3', '5', '7', '9', '11', '13', '15', '17', '19', '21', '23']"

Но задача отладки не выполняется с ошибкой:

"<type 'list'>": "VARIABLE IS NOT DEFINED!:"

У меня также есть еще одна задача после этих двух, и она должна принимать вывод как переменная (как вы можете видеть выше) и запустите al oop, который запускает задачу для каждого из элементов. Как я могу преобразовать переменную списка python ('units') в список, который ansible может читать, а l oop поверх него?

1 Ответ

0 голосов
/ 17 июня 2020

При использовании var с модулем debug вы не заключаете переменную в скобки. Это приведет к ошибке, которую вы видите.

Следующее должно отображаться должным образом:

- debug:
    var: units.stdout_lines

Взгляните на примеры в документации:

https://docs.ansible.com/ansible/latest/modules/debug_module.html#examples

Конечно, вам может понадобиться использовать скобки в других частях вашего кода.

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