Ansible 访问文件查找路径中的循环变量
我正在尝试动态读取模板中for循环的文件内容。但当我尝试在文件路径中使用Ansible 访问文件查找路径中的循环变量,ansible,jinja2,Ansible,Jinja2,我正在尝试动态读取模板中for循环的文件内容。但当我尝试在文件路径中使用host变量时,它就失败了 一些背景: 组中有三个条目。docker\u主机为 它试图读取的所有文件都存在并且可读 每个文件都有文件内容xx的内容,其中xx是主机索引 例如,此示例非常有效: template.j2 {% for host in groups.docker_hosts %} "{{lookup('file', '{{inventory_dir}}/pki/dev-docke
host
变量时,它就失败了
一些背景:
组中有三个条目。docker\u主机为
李>
- 它试图读取的所有文件都存在并且可读李>
- 每个文件都有
的内容,其中文件内容xx
是主机索引xx
template.j2
{% for host in groups.docker_hosts %}
"{{lookup('file', '{{inventory_dir}}/pki/dev-docker01/test')}}"
{% endfor %}
result
"file content 01"
"file content 01"
"file content 01"
这一个也可以正确地渲染每个主机
template.j2
{% for host in groups.docker_hosts %}
"{{host}}"
{% endfor %}
result:
"dev-docker01"
"dev-docker02"
"dev-docker03"
但是,当我尝试在文件路径中使用host
时,我得到了一个错误“msg”:“AnsibleUndefinedVariable:'host'未定义”
它似乎运行在新的隔离上下文中,该上下文只能访问全局变量。你知道如何让它正确地看到
host
变量吗 您正在将值{{host}}作为名称传递给主机。只需使用host作为变量
{% for host in groups['webservers'] %}
"{{ lookup('file', 'test/' + host + '/foo.txt') }}"
{% endfor %}
您正在将值{{host}}作为名称传递给主机。只需使用host作为变量
{% for host in groups['webservers'] %}
"{{ lookup('file', 'test/' + host + '/foo.txt') }}"
{% endfor %}