0

在 Ansible 角色中,如何定义一个依赖于另一个变量的变量?

我正在设计一个角色,并希望它的界面能够理解一个剧本变量,比如framework_enable_java = yesorframework_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为我的角色编写所需的内容?它会是什么样子?如果不可能,那么进行这些扣除的最佳方法是什么?(例如使用任务包括?)

4

1 回答 1

1

评论中的回答:

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

双引号在这里是必不可少的,因为否则 YAML 解析器会尝试构造一个对象(字典)而不是模板化变量。

于 2018-03-01T09:42:33.787 回答