Я стараюсь перебрать with_subelements
и использовать item.0.id
ВНУТРИ файла шаблона, который загружается через lookup('template',...)
.
Кажется, что переменная недоступна во время шаблонов.
# data:
grafana_app_data:
pKWGOV9mk:
boardFiles: [
"server-ping.json.j2"
],
id: "2",
title: "SERVER"
kju...
# working:
- name: debug merge result
debug:
msg: "{{item.0.id}} --- {{item.1}}"
with_subelements:
- "{{ grafana_app_data }}"
- boardFiles
# not working:
- name: iterate over folders and create respective dashboards
win_uri:
url: '{{ grafana_app_external_url }}api/dashboards/db'
validate_certs: false
method: POST
status_code: '200,409'
headers:
Accept: 'application/json'
Content-Type: 'application/json'
Authorization: '{{ grafana_app_authorization_header }}'
body: "{{ lookup('template', 'dashboards/' + item.1 ) }}"
with_subelements:
- "{{ grafana_app_data }}"
- boardFiles
win_uri
всегда возвращается с ошибкой:
fatal: [....net]: FAILED! => {"msg": "The task includes an option with an
undefined variable. The error was: 'env' is undefined\n\nThe error appears
to have been in '/.../roles/...inject/tasks/main.yml': line 123, column 3,
but may\nbe elsewhere in the file depending on the exact syntax
problem.\n\nThe offending line appears to be:\n\n\n- name: iterate over
folders and create respective dashboards\n ^ here\n"}
Есть идеи?
THX заранее!
ОБНОВЛЕНИЕ
Найдена основная причина: мой файл шаблонов - это файл JSON.Это означает:
- Может произойти "}}"
- Значения иногда уже содержат "{{...}}", что означает, что я должен использовать другой начальныйконечная граница.
- Поддержка lookup + template + variable_start / end_string запланирована для ansible 2.8 (https://github.com/ansible/ansible/pull/49711) и должна выглядеть следующим образом:
body: "{{ lookup('template', 'dashboards/' + item.1, variable_start_string='[%', variable_end_string='%]' ) }}"
.
THX !!!