在盐中使用dns_check(其中文档看似错误)

时间:2018-02-15 18:50:17

标签: jinja2 salt-stack

saltstack docs注意2017.7.3中存在dns_check jinja过滤器:

{{ 'www.google.com' | dns_check }}

应该将ip4v地址作为字符串返回。

但是当我尝试时:

test_this_one:
  cmd.run:
    - name: |
        echo {{ 'www.google.com' | dns_check }}

我改为看

local:
    Data failed to compile:
----------
    Rendering SLS 'base:firewall' failed: Jinja error: dns_check() takes at least 2 arguments (1 given)
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/salt/utils/templates.py", line 418, in render_jinja_tmpl
    output = template.render(**decoded_context)
  File "/usr/lib/python2.7/dist-packages/jinja2/environment.py", line 989, in render
    return self.environment.handle_exception(exc_info, True)
  File "/usr/lib/python2.7/dist-packages/jinja2/environment.py", line 754, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "<template>", line 42, in top-level template code
TypeError: dns_check() takes at least 2 arguments (1 given)

我错过了什么吗?我倾向于相信我犯了一个错误,而不是说这些文件是如此公开错误。

1 个答案:

答案 0 :(得分:1)

查看源代码看起来dns_check现在需要一个port参数 - 文档字符串说:

  

在考虑有用之前尝试连接到该地址。如果无法到达地址,则解决的第一个地址将用作后备。

https://github.com/saltstack/salt/blob/06a00be0e1f06399805e19261e4d00f6cfd9c6a0/salt/utils/network.py#L1750

所以它可能足以将任何端口放在这里,它应该工作。 (也许应该提出一个关于使端口可选的问题?)