【问题标题】:SaltStack lazy variable evaluation when rendering template渲染模板时的 SaltStack 惰性变量评估
【发布时间】:2014-06-21 19:35:51
【问题描述】:

我需要在我的 SaltStack 状态文件中获取 docker0 网络接口的默认网关 IP 地址。 .sls 可能看起来像这样

include:
    - docker

postgresql:
    docker.running:
        - container: postgresql 
        - port_bindings:
            "5432/tcp":
                HostIp: {{ grains['ip_interfaces']['docker0'][0]}}
                HostPort: "5432"

这在我运行 state.highstate 之前配置了 docker 时有效,但是,当 SaltStack 呈现此模板时,实际上并未配置 docker,因此此时 docker0 网络接口不可用。因此,将引发关键错误。

我知道在大多数情况下,docker0 默认网关是172.17.42.1,我可以直接将它设置为这个值。但是,如果我遇到这样的另一种情况怎么办?有什么方法可以懒惰地渲染模板,我认为这就像

lazy_render: True

这样它只会在执行之前呈现。 SaltStack中有这样的东西吗?或者你们有其他解决这个问题的方法吗?

【问题讨论】:

  • 似乎 salt 将 jinja 渲染为第一步,然后运行状态。你解决了这个问题吗?

标签: salt-stack


【解决方案1】:

我认为您应该等待 docker 状态执行或其他一些条件。

例如

include:
    - docker

postgresql:
    docker.running:
        - container: postgresql 
        - port_bindings:
            "5432/tcp":
                HostIp: {{ grains['ip_interfaces']['docker0'][0]}}
                HostPort: "5432"
        - require:
          - sls: docker

【讨论】:

  • 这没有帮助,问题来自于在执行任何状态之前完成的 jinja 渲染。我有同样的问题......正在寻找解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2018-07-03
  • 2014-02-08
  • 1970-01-01
  • 2016-05-22
  • 2013-03-11
相关资源
最近更新 更多