首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >食盐习俗粮

食盐习俗粮
EN

Stack Overflow用户
提问于 2014-12-09 10:10:02
回答 1查看 7.9K关注 0票数 4

我在试着写定制的谷物。我把这段代码放在/etc/salt/grains

代码语言:javascript
复制
#!/usr/bin/env python
def function():
    grains = {}
    grains['test'] = "test"
    return grains

为了测试它,我创建了这个脚本:

代码语言:javascript
复制
import salt.config
import salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
test = __grains__['test']
print test

我有个错误:

代码语言:javascript
复制
dirs = __grains__['test']
KeyError: 'test'

这是怎么回事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-09 16:04:50

/etc/salt/grains是存放由salt targetid grains.setval和朋友们设置的谷物的地方。它是一个平面的,静态的yaml文件。

通过python定制的谷物可以进入/srv/salt/_ salt \* saltutil.sync_grains,然后与salt \* saltutil.sync_grains同步。这是您应该将python脚本放在这里的地方。

下面是一个与日志记录和验证代码类似的示例:

代码语言:javascript
复制
$ cat /srv/salt/_grains/spam.py 
#!/usr/bin/env python
import logging
log = logging.getLogger(__name__)

def function():
    log.trace('Setting grains["spam"] to "eggs"')
    grains = {}
    grains['spam'] = "eggs"
    return grains

$ sudo salt lead saltutil.sync_grains
lead:
    - grains.spam

$ sudo salt-call grains.item spam -l trace 2>&1 \
  | egrep '^local|spam'
[TRACE   ] Added spam.function to grain
[TRACE   ] Setting grains["spam"] to "eggs"
local:
  spam: eggs

$ cat /tmp/spam_taster.py 
#!/usr/bin/env python
import salt.config
import salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
spam = __grains__['spam']
print spam

$ python /tmp/spam_taster.py 
eggs
票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27376313

复制
相关文章

相似问题

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