在Ansible playbook

时间:2015-06-08 19:43:18

标签: ansible ansible-playbook

我试图根据现有变量值设置Ansible playbook中的变量,该值可能是许多不同字符串中的一个。它基本上是一个case / switch语句,这是逻辑(语法不正确):

if {{ existing_ansible_var }} == "string1"
  new_ansible_var = "a"
else if {{ existing_ansible_var }} == "string2"
  new_ansible_var = "b"
<...>
else
  new_ansible_var = ""

我可以使用一个漂亮的光滑技术,在Jinja中使用这样的字典:

{% set new_ansible_var = {"string1": "a", "string2": "b"}[existing_ansible_var] | default("") -%}

我可以使用类似的字典构造在剧本中设置变量(set_fact)吗?

1 个答案:

答案 0 :(得分:2)

如其他question/answer所述,您可以这样做:

vars: 
   myDict: {"string1": "a", "string2": "b"}
   new_ansible_var: '{{myDict[existing_ansible_var | default("this key does not exist in the dict")] | default("") }}'