我需要在我的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有这样的东西吗?或者你们有其他解决办法吗?
我认为你应该等待docker状态执行或其他条件。
。
include:
- docker
postgresql:
docker.running:
- container: postgresql
- port_bindings:
"5432/tcp":
HostIp: {{ grains['ip_interfaces']['docker0'][0]}}
HostPort: "5432"
- require:
- sls: docker