在Ansible角色中,如何根据另一个变量定义变量?
我正在设计一个角色,并希望其界面能够理解像framework_enable_java = yes
或framework_enable_java = mysql tomcat
这样的playbook变量,并希望编写一个定义布尔值的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 %}
他们都没有成功。 similar looking question是无关的,因为它更像是实现变量间接而不是变量推导。
是否可以为我的角色编写所需的vars/main.yml
?它看起来怎么样?如果不可能,这些扣除的最佳方法是什么? (例如使用任务包括?)
答案 0 :(得分:1)
评论中的回答:
framework_enable_java_mysql: "{{ 'mysql' in framework_enable_java }}"
双引号在这里是必不可少的,因为否则YAML解析器会尝试构造一个对象(字典)而不是模板变量。