2016-01-13 30 views
2

這可能不是設置自定義穀物的最佳方式,但我想通過讀取柱子數據來設置自定義穀物「角色」。這將允許在支柱數據的YAML語法中輕鬆編輯,而自定義穀物設置爲最高優先級並且不會被其他配置覆蓋。訪問Salt中custome grain模塊中的柱子數據

我的問題是如何訪問_grain目錄中的自定義穀物python文件中的支柱數據?

我已經試過:

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

,但我得到一個錯誤:

NameError: global name '__salt__' is not defined 

即使當我添加

import salt.client 
import salt.config 

有什麼想法?

回答

0

我已經看過鹽內置穀物(更具體地說是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__字典。

+0

感謝您的回覆。我試圖用戶salt.modules.pillar.get,但我得到一個關於__opts__未定義的錯誤!我記得我讀過某處,你需要以某種方式定義這個選項變量,但我似乎無法找到如何。有任何想法嗎? – jinzoo