在ansible中如何从另一个变量初始化变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在ansible中如何从另一个变量初始化变量?相关的知识,希望对你有一定的参考价值。

在Ansible角色中,如何根据另一个变量定义变量?

我正在设计一个角色,并希望它的界面能够理解像framework_enable_java = yesframework_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 %}

结果他们都没有发挥作用。 similar looking question是无关的,因为它更像是实现变量间接而不是变量推导。

是否可以为我的角色写下所需的vars/main.yml?它看起来怎么样?如果不可能,这些扣除的最佳方法是什么? (例如,使用任务包括?)

答案

回答评论:

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

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

以上是关于在ansible中如何从另一个变量初始化变量?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个函数中获取变量

部署etcd中使用ansible进行变量初始化

Ansible:从JSON响应创建变量

如何从另一个类(java)访问主类的变量?

如何从另一个if条件中的一个if条件中获取变量的值?

如何在swiftUI的父视图中从另一个视图访问变量?