Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ansible 嵌套的jinja2 dns查询_Ansible_Jinja2 - Fatal编程技术网

Ansible 嵌套的jinja2 dns查询

Ansible 嵌套的jinja2 dns查询,ansible,jinja2,Ansible,Jinja2,我需要在Ansible中使用jinja2模板构建rsyslog配置。为了按设备分隔日志,我创建了以下模板,为每个设备生成rsyslog config条目,这些条目保存在Ansible资源清册中,并具有保存日志的正确位置: {% for device in groups["devices"] %} $template device_{{ device }},"/var/log/devices/{{ device }}/%timegenerated:1:10:date-rfc3339%" if $f

我需要在Ansible中使用jinja2模板构建rsyslog配置。为了按设备分隔日志,我创建了以下模板,为每个设备生成rsyslog config条目,这些条目保存在Ansible资源清册中,并具有保存日志的正确位置:

{% for device in groups["devices"] %}
$template device_{{ device }},"/var/log/devices/{{ device }}/%timegenerated:1:10:date-rfc3339%"
if $fromhost-ip = '{{ lookup('dig', '{{ device }}.example.org') }}' then ?device_{{ device }}
{% endfor %}
最后,我想得到一个配置,其中包含例如:

$template device_raspi,"/var/log/devices/raspi/%timegenerated:1:10:date-rfc3339%"
if $fromhost-ip = '10.2.3.4' then ?device_raspi       # with 10.2.3.4 as IP of raspi
但是,在执行DNS查找的第二个变量(example.org)时,会触发以下错误:


fatal:[日志记录]:失败!=>{“changed”:false,“msg”:“AnsibleUndefinedVariable:'设备'未定义”}

此问题是您无法像此处所做的那样嵌套
{}

{{lookup('dig',{{device}}}.example.org')}}}{/code>


您可以改为执行此操作,并且应正确解析
设备


{{lookup('dig',device+'.example.org')}}

这能回答你的问题吗?