【发布时间】: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