代码之家  ›  专栏  ›  技术社区  ›  jma

使用dns\U签入salt(其中文档似乎错误)

  •  1
  • jma  · 技术社区  · 7 年前

    这个 saltstack docs 请注意 dns_check 2017年7月3日的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 回复  |  直到 7 年前
        1
  •  1
  •   match    7 年前

    看看源代码 dns_check 现在需要 port 参数-docstring表示:

    在认为该地址有用之前,尝试连接到该地址。如果找不到地址,则将解决的第一个地址用作回退。

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

    因此,在这里放置任何端口都可能足够了,它应该可以工作。(也许应该提出一个让端口可选的问题?)