这可能不是设置定制谷物的最佳方式,但我想设置定制谷物"角色"通过阅读支柱数据。这样可以轻松编辑支柱数据的YAML语法,同时将自定义粒度设置为最高优先级,而不会被其他配置覆盖。
我的问题是如何访问_grain
目录中自定义grain python文件中的支柱数据?
我试过了:
hosts = __salt__['pillar.get']('hosts',None)
但是我收到了错误:
NameError: global name '__salt__' is not defined
即使我添加
import salt.client
import salt.config
答案 0 :(得分:0)
我已经看过Salts内置谷物(更具体地说是core.py
grain module)。在那里,他们实际上定义了__salt__
对象本身(line 44ff.):
__salt__ = {
'cmd.run': salt.modules.cmdmod._run_quiet,
'cmd.retcode': salt.modules.cmdmod._retcode_quiet,
'cmd.run_all': salt.modules.cmdmod._run_all_quiet,
'smbios.records': salt.modules.smbios.records,
'smbios.get': salt.modules.smbios.get,
}
理论上(未经测试!),你也应该能够在你的自定义谷物中做到这一点。当您需要pillar.get
模块时,您当然需要导入不同的功能:
import salt.modules.pillar
__salt__ = {
'pillar.get': salt.modules.pillar.get
}
当然,您也可以直接拨打salt.modules.pillar.get('hosts', None)
,而无需费心创建__salt__
词典。