gpt4 book ai didi

Ansible Jinja 模板 - 逐行读取文件

转载 作者:行者123 更新时间:2023-12-02 19:49:48 29 4
gpt4 key购买 nike

我正在尝试在 for 循环内逐行解析文本文件。我可以很好地解析 JSON 数据,但一个看似简单的任务在这里失败了。看起来 Jinja 并不是根据换行来描绘的。

在我的 YAML 剧本中,我声明了源文件和查找(查询)函数:

vars:
myfile: /some/text/file.txt
myfile_list: "{{ query('file', myfile) }}"

源文件“myfile”只是 CIDR 格式的 IP 列表:

1.2.3.4/32
5.6.7.8/32
10.20.30.0/24

在 Jinja2 模板文件中,我正在运行一个 for 循环:

{% for line in myfile_list %}
permit ip {{ line }} any
{% endfor %}

所需的输出是:

permit ip 1.2.3.4/32 any
permit ip 5.6.7.8/32 any
permit ip 10.20.30.0/24 any

相反,我得到了这个:

permit ip 1.2.3.4/32
5.6.7.8/32
10.20.30.0/24 any

我尝试了查找插件。设置“wantlist=True”。使用列表过滤器进行查找调用之后。我要么每行得到一个字符,要么得到一团文本,如上所示。如果我对源文件运行 Linux shell 命令“file”,它将被视为“ASCII 文本”。

最佳答案

Q: "Read file line by line"

A: 可以只读取整个文件并分割行

myfile_list: "{{ lookup('file', myfile).splitlines() }}"

关于Ansible Jinja 模板 - 逐行读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58424981/

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