Configuration-Management

saltstack:在狀態和支柱中使用 Python 模組

  • February 28, 2017

我有一個自定義模組,它的功能可以在我的狀態下使用,就像這樣

{% set myvar = salt['mymodule.myfunction']() %}

現在我想/需要在我的支柱中使用它。我試過用同樣的方式呼叫它,但我得到了一個錯誤

Jinja variable 'salt.loader.LazyLoader object' has no attribute 'mymodule.myfunction'

有沒有辦法聲明這個模組和功能在支柱中有效?

謝謝

編輯

實際函式是一個簡單的正則表達式,用於將 minion ID 轉換為它的縮寫形式。我終於在狀態和支柱中使用 Jinja 實現了實際功能,並且它有效。我想在狀態和支柱中使用它,以便能夠載入 .sls 文件(如果存在),以使用每個僕從覆蓋預設設置。

所以我的問題實際上已經解決了,但背後的問題:如何擁有一個可以在狀態和支柱中載入的(執行)模組,我認為仍然是相關的。我可以重命名我的問題。

支柱編譯發生在 master 上,而不是 minion 上。這意味著僅在salt://...樹中可用的模組(例如 in salt://_modules)不能在支柱文件中使用。

為了在支柱文件中使用模組,它還必須對主控器可用。在預設配置中,這應該可以通過將模組複製到/var/cache/salt/master/extmods/modules. 為了避免必須在兩個位置維護模組,可以簡單地添加一個符號連結:

ln -s /srv/salt/_modules /var/cache/salt/master/extmods/modules

根據 中extension_modulesmodule_dirs選項的值/etc/salt/master,必須使用的實際路徑可能會有所不同。

引用自:https://serverfault.com/questions/797105