首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何将一个爪牙的颗粒传递给另一个爪牙?

我如何将一个爪牙的颗粒传递给另一个爪牙?
EN

Stack Overflow用户
提问于 2018-12-27 20:22:45
回答 1查看 436关注 0票数 0

我正在使用Salt来配置许多服务器。其中两台分配了DNS服务器的角色,并使用dnsmasq-formula进行了配置。其他人则有不同的角色,比如在支柱中定义的gitlab-server

这是如何配置的:

代码语言:javascript
复制
/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>是硬编码的。我更愿意查询minion,找到具有正确角色的minion,并以编程方式提取其IP地址。

在处理/srv/pillar/dns/dnsserv.sls时,将使用具有"dns-server“角色的minion可用的信息对其进行处理。通过在dnsserv.sls中加载roles.yaml,我可以设法获得gitlab-server的minion ID (使用一些非常丑陋的代码)。但是我怎样才能从这个文件中获得它的IP呢?

我已经看到了关于盐矿的提及,但还没有真正找到一个完整的示例来使用这个功能。

这个问题很可能是XY问题的一个例子。如果是这样的话,一个“正确的方式”的例子将是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2019-01-15 00:03:07

要将谷物或支柱从一个跟班传递到另一个跟班,您需要使用“盐矿”(https://docs.saltstack.com/en/latest/topics/mine/)。这个主题不是简单的,而是简短的:

  • 定义可供您的助手使用的新mine_function,如

代码语言:javascript
复制
mine_functions:
  grains:
    grains.items: []

然后在您所在的州与https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.mine.html#salt.modules.mine.get一起使用

我建议您在开始编写状态之前,先在命令行上尝试mine.get,看看是否能够检索数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53945025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档