SaltStack可以分為Master和Minion,自定義modules模塊可以讓你更加便捷的在兩者之間進行信息收集和獲取。
首先需要在master機器的file_roots 下建一個_modules文件夾,里面放.py 文件,也就是自定義模塊。
- 1.1: file_roots 在/etc/salt/master 里可以設置,默認是/srv/salt/,即你需要在這個目錄下新建文件夾_modules
srv \-- salt \-- _modules \-- test.py -
1.2: test.py
def world(): return 'hello world'
- 1.3 在master使用salt "*" saltutil.sync_modules對_modules里面的文件同步到minion
- 1.4 然后使用salt "*" test.hello,輸出結果,記得test.py文件里面要加return,不然在master是無法顯示接收到的信息。
- ---------------------------------------------------------------------------------------------------------------------------------------------------------
- 2.1 windows安裝的minion默認路徑存放在C:\salt
- 2.2 同步之后的_modules模塊存放在C:\salt\var\cache\salt\minion\extmods\modules
- 2.3 如果在master寫好Python文件之后進行推送測試未免太麻煩,可以在salt目錄下,按住Shift鍵打開命令行,輸入salt-call.bat a(文件名).world(文件當中的模塊名),進行快速測試PS:每一次測試完記得要將__pycache__文件夾刪除,不然他會重新編譯之前的文件,無法得到你想要的結果
- 例子

- 如果pillar取不到數據,很可能是你沒有定義,或者忘了刷新pillar數據 salt '*' saltutil.refresh_pillar
- ---------------------------------------------------------------------------------------------------------------------------------------------------------
- 3.1 runner模塊其實可以用salt-run來快速調用,首先在打開master的配置文件,vim /etc/salt/master,在里面加入如下代碼,然后創建相應的文件夾。
- 3.2 在 /srv/runner/ 文件夾當中可以編寫你所需要的Python文件,如新建一個a.py文件

- 這樣一來便可以在任何目錄輸入這條指令,直接執行,只不過在編寫比較復雜的程序時,需要注意導入模塊的路徑問題,最好使用os.path.abspath來獲取文件的絕對路徑,而不是使用os.getpwd,因為os.getcwd是會獲取當前的工作目錄,得到的是salt-run語句執行的目錄,並不會到python文件的執行目錄,這一點要特別注意
