Ansible 嵌套的jinja2 dns查询
我需要在Ansible中使用jinja2模板构建rsyslog配置。为了按设备分隔日志,我创建了以下模板,为每个设备生成rsyslog config条目,这些条目保存在Ansible资源清册中,并具有保存日志的正确位置: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
{% 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')}}
这能回答你的问题吗?