ansible - Ansible 和 Jinja2 变量组合
问题描述
我有一个生成两个 Ansible 列表的 bash 脚本的剧本。
在 Jinja2 模板文件中,我试图for
在一个 Ansible 列表上运行循环,然后for
根据第一个列表的输出在其中运行另一个循环。
这是我的 Ansible defaults.yml
:
##################################
# FIRST LOOP #
##################################
prefix_list:
- prefix1
- prefix2
##################################
# SECOND LOOP #
##################################
prefix1:
- kola
- wlcom
- linkstory
prefix2:
- kola
Jinja2 模板:
#!/bin/bash
date=$(date +'%Y.%m' -d "month ago")
exdate=$(date +'%Y.%m' -d "{{ exdate }} months ago")
{% for prefix in prefix_list %}
{% for index in prefix %}
{{ index }}
{% endfor %}
{% endfor %}
结果:
#!/bin/bash
date=$(date +'%Y.%m' -d "month ago")
exdate=$(date +'%Y.%m' -d "12 months ago")
p
r
e
f
i
x
1
p
r
e
f
i
x
2
解决方案
使用vars
查找插件来引用变量(而不是像现在那样遍历名称中的字符)。
您的内部循环应该是:
{% for index in lookup('vars', prefix) %}
还要检查如何控制 Jinja2 中的空格,因为您将使用当前代码获得的输出会奇怪地缩进。
推荐阅读
- php - 我有两个数组。在第一个数组中我有一些空值,我想用第二个数组更新这些空值
- android - 使用 else 语句在一个微调器中包含两个 Json 列表
- python - bin/python3:无法执行二进制文件:执行格式错误
- c# - 有没有办法使用 C# 更新 Google Cloud Datastore 的 index.yaml 文件
- blockchain - 在发送大量交易期间内存池溢出
- javascript - 如何将数据从一个对象插入到具有不同结构的另一个对象以生成第三个对象
- html - 是否可以在 CSS 中复制“div”?
- python-sphinx - 词汇表中的多个(嵌套)角色
- php - XSS 和回显