Python 在Salt中访问自定义谷物模块中的支柱数据

Python 在Salt中访问自定义谷物模块中的支柱数据,python,salt-stack,Python,Salt Stack,这可能不是设置自定义颗粒的最佳方法,但我希望通过读取支柱数据来设置自定义颗粒的“角色”。这将允许在YAML语法中轻松编辑支柱数据,同时将自定义颗粒设置为最高优先级,并且不会被其他配置覆盖 我的问题是如何访问\u grain目录中自定义grains python文件中的支柱数据 我试过: hosts = __salt__['pillar.get']('hosts',None) 但我有一个错误: NameError: global name '__salt__' is not defined 即

这可能不是设置自定义颗粒的最佳方法,但我希望通过读取支柱数据来设置自定义颗粒的“角色”。这将允许在YAML语法中轻松编辑支柱数据,同时将自定义颗粒设置为最高优先级,并且不会被其他配置覆盖

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

我试过:

hosts = __salt__['pillar.get']('hosts',None)
但我有一个错误:

NameError: global name '__salt__' is not defined
即使我加上

import salt.client
import salt.config

我已经研究了盐的内置颗粒(更具体地说,是盐)。在那里,他们实际上定义了
\uuuuuuuuuuuuuuuuuuuuuuuuuuuz
对象本身():

从理论上讲(未经测试!),您也应该能够在自定义粒度中实现这一点。当您需要
支柱.get
模块时,您需要导入不同的功能,当然:

import salt.modules.pillar

__salt__ = {
    'pillar.get': salt.modules.pillar.get
}

当然,您也可以直接调用
salt.modules.pillar.get('hosts',None)
,而无需费心创建
\uuuuu salt\uuuuuuu
字典。

谢谢您的回复。我试图使用salt.modules.pillar.get,但我得到一个关于未定义选项的错误!我记得我在某个地方读到,你需要以某种方式定义这个选项变量,但我似乎不知道如何定义。有什么想法吗?
import salt.modules.pillar

__salt__ = {
    'pillar.get': salt.modules.pillar.get
}