在ansible

时间:2017-07-12 02:14:23

标签: ansible jinja2

我需要遍历变量列表并将<debug nested for loop>代码嵌入到jinja2模板中。

这是剧本的样子

 vars:
  env:
  - dev
  - prod
  - staging

 tasks:
 - name: set variable
   set_fact:
   denv: 'dev'

 - name: debug for loop
   debug: msg='{% for i in env %} {{i}} {% endfor %}'

 - name: debug nested for loop
   debug: msg='{% if denv =='{% for i in env %} {{i}} {% endfor %}' %} yay {% else %} nay {% endif %}'

目标是遍历env列表,如果值与denv匹配,则打印yay,否则打印nay

关于如何更好地写这个的任何想法?目前编写的方式是触发错误。

1 个答案:

答案 0 :(得分:0)

我不确定你为什么需要一个嵌套循环。你想要的是检查列表中的值是否正确?尝试使用when关键字。这样,你的调试消息只会在找到正确的值时说出Yay。

{
    $id="1", //What is this doing here? Is being put there when I got the object from server to update it
    name="John",
    pet={
        $id="1", //same as above
        name="Jim",
        type="dog"
}