10.2 利用Saltstack远程执行命令

1、saltstack的一个比较突出的优势是具备执行远程命令的功能,操作方法与func(https://fedorahosted.org/func/)类是
 
命令格式:
salt '<操作目标>' <方法>[参数]
 
查看被控主机的内存使用情况
# salt '*' cmd.run 'free -h'
jenkins:
total used free shared buffers cached
Mem: 975M 326M 648M 976K 55M 134M
-/+ buffers/cache: 137M 837M
Swap: 1.0G 0B 1.0G
chosefine-cnetos:
total used free shared buff/cache available
Mem: 976M 235M 201M 6.6M 539M 559M
Swap: 2.0G 0B 2.0G
 
 
 
2、其中saltstack提供了多种方法对被控端主机id进行过滤。
1)-E,-pcre,通过正则表达式进行匹配。
如:
salt -E '^SN2013.*' test.ping
 
2)-L,--list,以主机id名列表的形式进行过滤,格式与python的列表相似,即不同主机id名称使用逗号分开。
# salt -L 'chosefine-cnetos,jenkins' cmd.run 'free -h
 
 
3)-G,--grain,根据被空主机的grains(10.4节详解)信息进行匹配过滤,格式为'<grain value>:<glob expression>',例如,过滤内核为Linux的主机可以写成‘kernel:Linux’,如果同时需要正则表达式的支持,可切换成--grain-pcre参数来执行。示例:过去主机发型版本号为6.4的python版本号,命令:salt -G 'osrelease:6.4' cmd.run 'python -V'
 
4)-I , --pillar,根据被控主机的pillar(10.5节详细)信息进行匹配过滤,格式为“对象名称:对象值”,列如,过滤所有具备‘apache:httpd’ pillar值的主机。示例:探测具有"nginx:root:/data"信息的主机两桶性,命令 : salt -I 'nginx:root:/data' test.ping
 
 
5)-N,--nodegroup,根据主控端master配置文件中的分株进行过滤,以逼着定义的组为例(主机信息支持正则表达式、grain、条件运算符等)
# cat /etc/salt/master
interface: 192.168.1.127
auto_accept: True
file_roots:
base:
- /srv/salt
nodegroups:
web1group: 'L@chosefine-cnetos,jenkins'
web2group: 'L@jenkins,chosefine-cnetos'
 
问题:我测试了很多次,分组控制对Ubuntu系统好像会有问题,无法正确响应
 
6) -C , --compound,根据条件运算符not、and、or去匹配不同规则的主机信息。示例:探测SN2013开头并且操作系统为CentOS的主机连通性
 
salt -C 'E@^SN2013.* and G@os:Centos' test.ping
 
其中not语句不能作为第一个条件执行,不过可以通过以下方法来规避,示例:探测非SN2013开头的主机连通性,其命令为:salt -C '* and not E@^SN2013.*' test.ping
 
7)-S,--ipcidr,根据被控主机的IP地址或IP子网进行匹配,示例
salt -S 192.168.0.0/16 test.ping
salt -S 192.168.1.10 test.ping
 
posted @ 2017-08-16 18:18  Vperson  阅读(485)  评论(0)    收藏  举报