访问Salt

时间:2016-01-13 21:47:26

标签: python salt-stack

这可能不是设置定制谷物的最佳方式,但我想设置定制谷物"角色"通过阅读支柱数据。这样可以轻松编辑支柱数据的YAML语法,同时将自定义粒度设置为最高优先级,而不会被其他配置覆盖。

我的问题是如何访问_grain目录中自定义grain python文件中的支柱数据?

我试过了:

hosts = __salt__['pillar.get']('hosts',None)

但是我收到了错误:

NameError: global name '__salt__' is not defined

即使我添加

import salt.client
import salt.config

1 个答案:

答案 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__词典。