Возможная переменная рендеринга из заданной переменной - PullRequest
0 голосов
/ 11 декабря 2018

Я хочу использовать jinja2's template для генерации конфигурации.Но я застрял с этим.Я использую set для создания новой переменной, после этого мне нужно использовать следующую строку в качестве новой переменной для рендеринга.Мой пример кода, который показывает, чего я хочу достичь:

play.yml

- hosts: localhost
  gather_facts: no
  vars:
     x: a
     y: 1

  tasks:
    - name: templating
      template:
        src: test.j2
        dest: test.txt
      vars:
       a1b: 'OK - work'

$ test.j2

{% set host = x ~ y|string ~ 'b' %}
base: {{ host }}
expected: {{ a1b }}

После этого я получаю:

base: a1b
expected: OK - work

Но я ожидал:

base: OK - work
expected: OK - work

Можно ли сказать Jinja, что она может отобразить новую строку?Что-то вроде | render фильтра?

Примечание: vars раздел необходим, потому что, наконец, я хочу использовать vars_prompt

1 Ответ

0 голосов
/ 11 декабря 2018

Я нашел смертельный простой обходной путь, но если у кого-то есть «нативный» ответ, это было бы здорово.

Итак: play.yml

- hosts: localhost
  gather_facts: no
  vars:
     x: a
     y: 1
     a1b: 'super_variable'

  tasks:

    - name: templating
      template:
        src: test.j2
        dest: tmp.j2

test.j2 Я просто добавляю {{ как строку к шаблону.

{% set o = '{{' ~ x ~ y|string ~ 'b' ~ '}}' %
base: {{ host }}
expected: {{ a1b }}
...