Как заполнить шаблон Jinja2, который хранится в переменной Ansible? - PullRequest
0 голосов
/ 08 января 2019

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

metadata:
  name: {{ metadata_name }}-prod
  labels:
    app: {{ app_name }}
    env: {{ load_zone }}

В моей пьесе я прочитал файл в переменную manifest:

name: load file into variable
include_vars:
  file: "/etc/configs/mydata"
  name: manifest

Теперь мне нужен способ заменить шаблоны Jinja2 в переменной manifest фактическими значениями. Например, учитывая факты, что значение metadata_name равно «my_app», app_name означает «Мое приложение», а load_zone означает «us_east», тогда вместо значения manifest, которое равно:

metadata:
  name: {{ metadata_name }}-prod
  labels:
    app: {{ app_name }}
    env: {{ load_zone }}

Я хотел бы получить это значение:

metadata:
  name: my_app-prod
  labels:
    app: My Application
    env: us_east

Кто-нибудь может посоветовать модуль или функцию Ansible ... или хитрость?

1 Ответ

0 голосов
/ 07 февраля 2019

Кажется, что любая оценка переменной (факта) с использованием фильтра Jinja2 сделает это. Например, если словарь из вопроса хранится в переменной manifest и других переменных, которые являются шаблонами в значениях словаря, следующее выражение подставит значения переменных в значения словаря:

- hosts: localhost
  tasks:
    - name: evaluate dictionary
      set_fact:
        manifest: "{{ manifest }}"

Помните, что если переменные, которые используются в шаблонах, были неопределенными, вместо значений будет использоваться строка undefined.

...