我正在尝试编写自定义谷物.我把这段代码放进去了/etc/salt/grains
#!/usr/bin/env python
def function():
grains = {}
grains['test'] = "test"
return grains
Run Code Online (Sandbox Code Playgroud)
并测试它我创建了这个脚本:
import salt.config
import salt.loader
__opts__ = salt.config.minion_config('/etc/salt/minion')
__grains__ = salt.loader.grains(__opts__)
test = __grains__['test']
print test
Run Code Online (Sandbox Code Playgroud)
我有这个错误:
dirs = __grains__['test']
KeyError: 'test'
Run Code Online (Sandbox Code Playgroud)
这有什么问题?
/etc/salt/grains是盐储存谷物salt targetid grains.setval和朋友的地方.它是一个扁平的静态yaml文件.
通过python定制的谷物进入/ srv/salt/_grains,然后同步到仆从salt \* saltutil.sync_grains.这是你应该放置你的python脚本的地方.
以下示例与您的代码进行了类似的记录和验证:
$ 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6207 次 |
| 最近记录: |