1. 程式人生 > >SaltStack遠程執行兩大模塊:cmd與cp模塊測試

SaltStack遠程執行兩大模塊:cmd與cp模塊測試

SaltStack cp.get_file cp.push cmd.run cmd.script

上一篇分享了《SaltStack安裝配置與遠程執行測試》,涉及到了test.ping和cmd.run兩個模塊方法,實際上SaltStack的模塊有140多個之多,每個模塊又有多種函數(function,也有的稱為方法),但我在查閱和測試了多個模塊如archive 、file、user、network、pkg、service、status等之後,發現很多模塊的功能實際上大多都可以用萬能的cmd.run加相應的系統命令來代替。如果SaltStack所管理的服務器系統發行版眾多,系統命令有差異(比如yum和apt-get),用cmd.run的話需要分開執行,而用SaltStack相應的系統模塊可以屏蔽這種差異性,一次執行就可以搞定多種發行版。如果不是這種情況的話我覺得用cmd.run加相應的系統命令就可以了。最後我覺得比較實用和值得寫一寫的是cmd與cp模塊,本文主要內容是這兩個模塊及其基本用法。


一、SaltStack的模塊及其函數

1、使用命令salt 'salt-minion01' sys.list_modules可以列出所有的模塊,可以看到多達146個

技術分享圖片

技術分享圖片

2、使用命令salt 'salt-minion01' sys.list_functions test可以列出具體模塊(如test模塊)的所有函數

技術分享圖片

3、使用命令salt 'salt-minion01' sys.doc test可以列出具體模塊(如test模塊)全部函數的幫助及示例,若指定模塊的具體函數,則可以單獨查看該函數(如test.ping)的幫助及示例,類似查看man手冊

技術分享圖片

技術分享圖片


二、cmd模塊及其常用函數測試

1、cmd模塊有不少函數,本節主要測試的是cmd.run、cmd.run_bg、cmd.script三個函數的使用

技術分享圖片

2、cmd.run的命令中若使用了awk,則$符前面需要加轉義符

技術分享圖片

3、cmd.run可以使用參數stdin指定標準輸入字符串

技術分享圖片

4、使用cmd.run_bg可以將命令放到minion後臺執行

技術分享圖片

5、使用cmd.script可以將master上的腳本推送到minion並執行,通過查看/etc/salt/master文件可以知道master默認的文件根目錄是/src/salt,需將測試腳本放到該目錄

技術分享圖片

技術分享圖片

技術分享圖片

6、cmd.script推送腳本時也可以帶參數

技術分享圖片


三、cp模塊及其常用函數測試

1、cp模塊可以實現master推送文件或目錄給minion,也可以實現從minion拉取文件或目錄,cp模塊也有不少函數,本節主要測試cp.get_file、cp.get_dir、cp.push、cp.push_dir四個函數的使用

技術分享圖片

2、使用cp.get_file可以推送master上的文件到minion,文件需要位於master的文件根目錄中,即默認的/srv/salt

技術分享圖片

技術分享圖片

3、當推送文件給minion時指定的存放路徑在minion上不存在時會失敗,這時可以加參數makedirs=true自動在minion上創建目錄

技術分享圖片

4、使用cp.get_dir可以推送master上的目錄到minion,目錄需要位於master的文件根目錄中,即默認的/srv/salt

技術分享圖片

技術分享圖片

5、從minion拉取文件或目錄到master,默認是被禁用的,需要修改master上的/etc/salt/master文件啟用,並重啟salt-master服務。拉取的文件或目錄默認存放在/var/cache/salt/master/minions/minion-id/files下

技術分享圖片

6、當使用cp.push從多臺minion拉取文件時,即時使用了通配符,也只有文件名在多臺minion上都相同的文件才會被拉取

技術分享圖片

7、如果想使用通配符拉取同一類文件,可以使用cp.push_dir加上glob參數

技術分享圖片

8、使用cp.push_dir如果不指定glob參數,則是拉取整個目錄

技術分享圖片

9、雖然從不同的minion拉取的文件都存放在minion各自的目錄下,但使用通配符可以輕松地把文件集中復制到同一個目錄中

技術分享圖片

本文出自江健龍的技術博客 jiangjianlong.blog.51cto.com,轉載請註明出處。


SaltStack遠程執行兩大模塊:cmd與cp模塊測試