SaltStack自定義modules模塊


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文件的執行目錄,這一點要特別注意 
  •  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM