gpt4 book ai didi

Ansible,set_fact使用if then else语句

转载 作者:行者123 更新时间:2023-12-04 13:37:05 35 4
gpt4 key购买 nike

我试图在运行时基于另一个变量在Ansible中使用set_fact设置一个变量。如果使用第一个值,则无论实际值是多少。这是我的代码示例:

- name: Global_vars - get date info
set_fact:
jm_env: "{{lookup('env', 'Environment')}}"
l_env: "{% if '{{jm_env}}==Develop' %}d{% elif '{{jm_env}}==Staging'%}s{% else %}p{% endif %}"

无论设置了什么 l_envd都是 jm_env

最佳答案

首先,YAML中的字典没有顺序(并且Ansible使用的语法是YAML字典),因此您无法保证Ansible在进行jm_env之前会先设置l_env -您需要将分配分为两个任务。

其次,您的测试表达式不正确-'{{jm_env}}==Develop'是字符串,因为它被加了引号;并且测试if 'string'将始终评估为true(这是您始终在输出中始终获得d的直接原因)。

用:

- name: Set the jm_env
set_fact:
jm_env: "{{lookup('env', 'Environment')}}"

- name: Set the l_env
set_fact:
l_env: "{% if jm_env=='Develop' %}d{% elif jm_env=='Staging'%}s{% else %}p{% endif %}"

关于Ansible,set_fact使用if then else语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42935820/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com