Ansible отладка дает все метаданные при переходе через цикл - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь получить сообщение об отладке из результатов предыдущего l oop, но я не могу получить только то, что мне нужно. Ansible продолжает давать мне весь результат вместо строки, которую я прошу.

Вот 2 модуля, которые я использую:

- name: Make the curl call
  uri:
    url: https://www.theurl.com
    method: GET
    return_content: yes
    headers:
      XXXX: "xxxxxxxxxx"
  loop: "{{ simplelist }}"
  register: this



 - name: just testing
    debug:
      msg: "I just want to see: {{ item.json.section.test }}"
    loop: "{{ this.results}}"

Как вы можете видеть из сообщения, я просто пытаюсь вывести это заданное значение c, но что Ansible дает мне:

{
"ansible_loop_var": "item",
"_ansible_no_log": false,
"item": {
    "content_length": "",
    "cookies": {},
    "via": "1.1 varnish",
    "connection": "",
    "vary": "Accept-Encoding",
    "x_timer": "",
    "access_control_allow_methods": "OPTIONS, HEAD, GET, PATCH, DELETE",
    "x_cache_hits": "0",
    "failed": false,
    "access_control_allow_credentials": "true",
    "content": blah blah blah,
    "json": { the json },  
    "changed": false,
    "msg": "I just want to see: False",

Итак, он устанавливает сообщение, как вы можете видеть из последней строки, и получает правильное значение, но не выводит это сообщение. Как я могу получить только сообщение для вывода? Я проверил и знаю, что могу получить значение, потому что у msg есть False, и я проверил с ошибкой / когда с этим значением.

1 Ответ

1 голос
/ 04 марта 2020

То, что вы видите, выглядит как подробный вывод ansible -плейбара, работающего с опцией -v[vv]. Вы можете отменить эту опцию, чтобы уменьшить детализацию.

Между тем, даже в не многословном режиме и независимо от используемого вами модуля, при переходе по al oop, ansible выводит label для каждой итерации Примерно выглядит следующим образом (обратите внимание на часть экрана (item=....)).

TASK [test] *******************************************************************************
ok: [localhost] => (item={'a': 1, 'b': 2}) => {
    "msg": "This is the value of a: 1"
}
ok: [localhost] => (item={'a': 3, 'b': 4}) => {
    "msg": "This is the value of a: 3"
}

По умолчанию метка представляет собой полный элемент, над которым в данный момент выполняется цикл. Но вы можете изменить эту метку в параметре loop_control, который может быть слишком многословным для сложных структур данных. Если вы действительно хотите пустую метку, вы можете использовать следующий пример. Но вы все равно будете получать ok: [server1] => (item=) => перед каждым итерационным выводом.

 - name: just testing
   debug:
     msg: "I just want to see: {{ item.json.section.test }}"
   loop: "{{ this.results }}"
   loop_control:
     label: ""

Для получения дополнительной информации см. ограничение l oop вывода с меткой

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