首页 文章

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

提问于
浏览
2

这可能不是设置自定义谷物的最佳方式,但我想通过阅读支柱数据来设置自定义谷物“角色” . 这将允许在支柱数据的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

    我已经看过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__ 字典 .

相关问题