渲染模板时SaltStack延迟变量评估

时间:2014-06-21 19:35:52

标签: salt-stack

我需要在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中有这样的东西吗?或者你们有这个问题的其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

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

e.g。

include:
    - docker

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

希望有帮助