【发布时间】:2018-12-27 12:22:44
【问题描述】:
我正在使用 Salt 配置多个服务器。其中两个被分配了 DNS 服务器的角色并使用dnsmasq-formula 进行配置。其他的则有不同的角色,例如gitlab-server,在柱子中定义。
这是如何配置的:
/srv/salt/top.sls
---
base:
'roles:dns-server':
- match: pillar
- dnsmasq
'roles:gitlab-server'
- gitlab
/srv/pillar/top.sls
---
{% import_yaml "roles.yaml" as r %}
base:
{% if 'dns-server' in r[grains['id']] %}
- dns.dnsserv
{% endif %}
/srv/pillar/dns/dnsserv.sls
---
dnsmasq:
...
hosts:
domain.name:
git: <GIT_SERVER_IP>
...
/srv/pillar/roles.yaml
---
'minion1-id':
- role1
- role2
'minion2-id':
- role3
- role4
# and so on
现在<GIT_SERVER_IP> 是硬编码的。我宁愿查询小兵,找到具有正确角色的小兵并以编程方式提取其 IP 地址。
当/srv/pillar/dns/dnsserv.sls 被处理时,它会使用角色“dns-server”的minion 可用的信息进行处理。通过在dnsserv.sls 中加载roles.yaml,我可以设法获取gitlab-server 的minion ID(带有一些非常丑陋的代码)。但是我怎样才能从这个文件中获取它的 IP 呢?
我看到有人提到盐矿,但还没有真正找到如何使用此功能的完整示例。
这个问题很可能是 XY 问题的一个例子。如果是这样,将非常感谢“正确方式”的示例。
【问题讨论】:
标签: salt-stack