在ansible中如何从另一个变量初始化一个变量?
In ansible how to initialise a variable from another variable?
在Ansible角色中,如何定义依赖于另一个变量的变量?
我正在设计一个角色,希望它的界面能够理解像 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 %}
None 结果证明是有效的。 是不相关的,因为它更像是实现变量间接而不是变量推导。
是否可以为我的角色编写所需的vars/main.yml
?它会是什么样子?如果不可能,进行这些扣除的最佳方法是什么? (例如 使用任务包含?)
评论回复:
framework_enable_java_mysql: "{{ 'mysql' in framework_enable_java }}"
这里双引号是必不可少的,否则 YAML 解析器会尝试构造对象(字典)而不是模板化变量。
在Ansible角色中,如何定义依赖于另一个变量的变量?
我正在设计一个角色,希望它的界面能够理解像 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 %}
None 结果证明是有效的。
是否可以为我的角色编写所需的vars/main.yml
?它会是什么样子?如果不可能,进行这些扣除的最佳方法是什么? (例如 使用任务包含?)
评论回复:
framework_enable_java_mysql: "{{ 'mysql' in framework_enable_java }}"
这里双引号是必不可少的,否则 YAML 解析器会尝试构造对象(字典)而不是模板化变量。