В ansible как инициализировать переменную из другой переменной?

В роли Ansible, как определить переменную в зависимости от другой?

Я создаю роль и хочу, чтобы ее интерфейс понимал переменную playbook, например framework_enable_java = yes или же framework_enable_java = mysql tomcat и хочу написать vars/main.yml файлы, которые определяют логические значения

framework_enable_java_core
framework_enable_java_mysql
framework_enable_java_tomcat

в соответствии с содержанием framework_enable_java, Я попробовал очевидные определения, похожие на

framework_enable_java_mysql: 'mysql' in framework_enable_java

и несколько более или менее тонких подходов, таких как

framework_enable_java_mysql: {{ 'mysql' in framework_enable_java }}

или же

{% if 'mysql' in framework_enable_java %}
framework_enable_java_mysql: yes
{% else %}
framework_enable_java_mysql: no
{% endif %}

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

Можно ли вообще написать желаемое? vars/main.yml для моей роли? Как бы это выглядело? Если это невозможно, каков будет лучший способ сделать эти выводы? (например, используя задачу include?)

1 ответ

Решение

Ответ из комментариев:

framework_enable_java_mysql: "{{ 'mysql' in framework_enable_java }}"

Двойные кавычки здесь важны, потому что в противном случае парсер YAML пытается создать объект (словарь), а не шаблонную переменную.

Другие вопросы по тегам