我想写一个有效的“虚拟谷物”,它使用自定义的谷物来根据其他谷物的值来确定一些值。具体来说,我想提供一个谷物值env,它告诉我主机运行在哪个虚拟环境中。这些选项将是aws,或者目前没有,但将来将包括数据中心和office。我将使用这些信息来确定诸如使用哪个SMTP中继之类的信息。
我的第一次尝试是使用__grains__ dict,但是当在自定义粒度中访问它时,它似乎是空的。
def find_env():
if __grains__['os'] == 'Amazon':
return {'env':['aws']}
return {'env': []}这导致了一个例外:
KeyError: 'os'我意识到我可以静态地在仆从或命令行上分配谷物,但是我觉得任何可以自动导出的信息都应该是静态的。
是否有一种在编写自定义谷物时访问现有谷物数据的方法,或者另一种自动对主机进行分类的方法,以便我可以将状态定向到它们?
发布于 2014-09-29 18:11:45
我建议酌情使用州来分配谷物值。例如,类似于:
top.sls
base:
'kernel:Linux':
- match: grain
- linuxlinux.sls
env:
grains.present:
{% if grains ['os'] == 'Amazon' %}
- value: aws
{% else %}
- value: somethingelse
{% endif %}有其他更清洁的方法来做这件事,但这应该会让你开始。
https://serverfault.com/questions/631942
复制相似问题