Saltstack遠程執行命令(3)

    Saltstack的一個比較突出的優勢是具備執行遠程命令的功能,可以幫助運維人員完成集中化的操作平台(批量執行服務器命令)

命令格式:salt '<操作目標>' <方法>[參數]

實例:查看minion主機的內存使用情況

salt 'SN2013-08-021' cmd.run 'free -m'    

其中針對<操作目標>,Saltstack提供了多種方法對minion(id)進行過濾。

(1)-E, –pcre 通過正則進行匹配。

示例:檢測id是SN2013字符開頭的主機是否連通

salt -E '^SN2013.*' test.ping

(2)-L, –list 以主機名列表的形式進行選擇

示例:獲取主機id名為SN2013-08-021,SN2013-08-022兩台主機的完整操作系統發行版本名稱。

salt -L 'SN2013-08-021,SN2013-08-022' grains.item osfullname

(3)-G,–grain,根據minion主機的grains(之後詳細介紹)信息進行匹配過濾

示例:獲取主機髮型版本號為6.4的Python版本號

salt -G 'osrelease:6.4' cmd.run 'python -V'

(4)-I,–pillar,根據minion的pillar(之後詳細介紹)的信息進行匹配過濾

示例:探測具有「nginx:root:/date」信息的主機連通性

salt -I 'nginx:root:/date' test.ping

(5)-N,nodegroup,根據master配置文件中的分組名稱進行過濾,分組通常可以根據業務類型、主機配置等信息進行分組。

【etc/salt/master】

 nodegroups:

    web1group: 'L@SN2012-07-010,SN2012-07-011,SN2012-07-012'

    web2group: 'L@SN2013-08-021,SN2013-08-022'

其中,L@表示後面的主機id格式為列表,以逗號分隔;G@表示以grain而是描述;S@表示以IP子網或地址格式描述

示例:web2group組裡所有主機的連通性

salt -N web2group test.ping

(6)-C, –compound,根據條件運算符not、and、or去匹配不同規則的主機信息

示例:探測SN2013開頭並且操作系統版本為Centos的主機連通性

salt -c 'E@^2013.* and G@os:Centos' test.ping    E@的意思是根據正則匹配

(7)-S, –ipcidr,根據minion主機的IP或者IP子網進行匹配

示例:根據IP及子網進行匹配

salt -S 192.168.0.0/16 test.ping

salt -S 192.168.1.10 test.ping

批量修改遠程server密碼

salt '*' cmd.run 'echo "密碼"|passwd –stdin root'