вставка логики c в ansible переменную - PullRequest
0 голосов
/ 06 апреля 2020

очень нубский вопрос, у меня есть этот фрагмент кода ansible в /vars/myvars.yml:

service: "{{ 'service1' if litespeed|bool==true else 'service2' }}" 

services_node:
    - foo
    - bar
    - "{{ service }}"
    - baz

Я пытался найти ответ в Интернете, но ничего не могу найти, каков синтаксис в фигурных скобках? Результаты поиска в Интернете в большинстве случаев "нет if / else в ansible или YAML". К какому типу запроса или языка этот синтаксис относится?

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Скобки являются частью шаблона Jinja2 в данных YAML. См. Templating (Jinja2) для полной информации.

0 голосов
/ 06 апреля 2020

Ansible использует Jinja для шаблонизации. Вы должны прочитать ansible, шаблонизирующий do c. Вы также найдете много полезной информации о конструкторе шаблонов Jinja do c.

. В вашем примере синтаксис с каналом (символ |) является синтаксисом. для фильтров. Здесь вы найдете список встроенных фильтров с документацией и примерами.

Вы увидите, что фильтр bool не указан, так как это фильтр, выданный ansible. Вы найдете список этих фильтров здесь .

Сам шаблон не является частью Yaml, поэтому он выражается в виде строки.

...