Рейтинг:2

Использование списков переменных в ansible возвращает неопределенную переменную

флаг ph

Вот мой файл списка переменных vars/blah.yml:

---
вещи:
 -stuff1: счет
   материал2: подать в суд

Я просто пытаюсь получить значения переменных.

Вот моя книга игр:

  хозяева: все
  стать: да
  vars_files:
    - варс/blah.yml
  задачи:

  - название: тест
    отлаживать:
      переменная: "{{ item.stuff1 }} {{ item.stuff2 }}"
    петля :
      - "{{ вещи }}"

Я получаю эту ошибку.

фатальный: [узел1]: FAILED! => {"msg": "Задача включает параметр с неопределенной переменной. Ошибка: 'объект списка' не имеет атрибута 'stuff1'\n\nОшибка, по-видимому, находится в '/home/automation/plays/test1 .yml': строка 11, столбец 5, но может\nбыть где-то еще в файле в зависимости от конкретной проблемы с синтаксисом.\n\nОшибочная строка выглядит следующим образом:\n\n\n - имя: test\n ^ здесь\ п"}

Может кто-нибудь сказать мне, что я делаю неправильно?

Отредактировал форматирование переменных. Все еще получаю те же результаты.

Рейтинг:1
флаг in

Неверный формат вашего файла переменных. Верхний уровень — это не список, он должен выглядеть так:

---
вещи:
  -stuff1: счет
    материал2: подать в суд

Кроме того, путь к файлу vars должен начинаться с / из корня Ansible:

vars_files:
  - /vars/blah.yml
флаг ph
Изменил формат и та же ошибка.
Рейтинг:1
флаг fr

TL;DR

  цикл: "{{вещи}}"

Полная история

В отличие от прежнего и все еще широко используемого по умолчанию with_items:, голый петля: не применяется автоматический сгладить (уровень = 1) по переданным аргументам.

Для получения дополнительной информации об этой функции вы можете увидеть:

Если ваш пример использовал with_items

  with_items: 
    - "{{ вещи }}"

результирующий список все равно будет именно тем, который вы определили в своем файле.

Теперь используется с петля

  петля:
    - "{{ вещи }}"

вы перебираете список списков, который выглядит так (обратите внимание на тире в верхней части приведенного ниже примера и отступ остального содержимого: это не опечатка).

- 
  -stuff1: счет
    материал2: подать в суд

Таким образом, первый элемент, который вы получаете в своем цикле, на самом деле является вашим полным списком в вашем файле var.

Чтобы это исправить, просто правильно передайте переменную в петля, т.е.

  цикл: "{{вещи}}"

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.