Saltstack遠程執行命令(3)
- 2020 年 1 月 7 日
- 筆記
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'