首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在自定义盐栈谷物中使用谷物数据

在自定义盐栈谷物中使用谷物数据
EN

Server Fault用户
提问于 2014-09-29 00:42:31
回答 1查看 2K关注 0票数 0

我想写一个有效的“虚拟谷物”,它使用自定义的谷物来根据其他谷物的值来确定一些值。具体来说,我想提供一个谷物值env,它告诉我主机运行在哪个虚拟环境中。这些选项将是aws,或者目前没有,但将来将包括数据中心和office。我将使用这些信息来确定诸如使用哪个SMTP中继之类的信息。

我的第一次尝试是使用__grains__ dict,但是当在自定义粒度中访问它时,它似乎是空的。

代码语言:javascript
复制
def find_env():
    if __grains__['os'] == 'Amazon':
        return {'env':['aws']}
    return {'env': []}

这导致了一个例外:

代码语言:javascript
复制
KeyError: 'os'

我意识到我可以静态地在仆从或命令行上分配谷物,但是我觉得任何可以自动导出的信息都应该是静态的。

是否有一种在编写自定义谷物时访问现有谷物数据的方法,或者另一种自动对主机进行分类的方法,以便我可以将状态定向到它们?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2014-09-29 18:11:45

我建议酌情使用来分配谷物值。例如,类似于:

top.sls

代码语言:javascript
复制
base:
  'kernel:Linux':
    - match: grain
    - linux

linux.sls

代码语言:javascript
复制
env:
  grains.present:
    {% if grains ['os'] == 'Amazon' %}
    - value: aws
    {% else %}
    - value: somethingelse
    {% endif %}

有其他更清洁的方法来做这件事,但这应该会让你开始。

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

https://serverfault.com/questions/631942

复制
相关文章

相似问题

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