В 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 пытается создать объект (словарь), а не шаблонную переменную.