- 本书赞誉
- 前言
- 第一部分 基础篇
- 第1章 系统基础信息模块详解
- 第2章 业务服务监控详解
- 第3章 定制业务质量报表详解
- 第4章 Python 与系统安全
- 第二部分 高级篇
- 第5章 系统批量运维管理器 pexpect 详解
- 第6章 系统批量运维管理器 paramiko 详解
- 第7章 系统批量运维管理器Fabric详解
- 第8章 从零开发一个轻量级 WebServer
- 第9章 集中化管理平台 Ansible 详解
- 第10章 集中化管理平台 Saltstack 详解
- 第11章 统一网络控制器 Func 详解
- 第12章 Python 大数据应用详解
- 第三部分 案例篇
- 第13章 从零开始打造 B/S 自动化运维平台
- 第14章 打造 Linux 系统安全审计功能
- 第15章 构建分布式质量监控平台
- 第16章 构建桌面版 C/S 自动化运维平台
10.2 利用 Saltstack 远程执行命令
Saltstack的一个比较突出优势是具备执行远程命令的功能,操作及方法与func(https://fedorahosted.org/func/)相似,可以帮助运维人员完成集中化的操作平台。
命令格式:salt'<操作目标>'<方法>[参数]
示例:查看被控主机的内存使用情况,如图10-2所示。
图10-2 查看“SN2013-08-021”主机内存使用
其中针对<操作目标>,Saltstack提供了多种方法对被控端主机(id)进行过滤。下面列举常用的具体参数。
1)-E,--pcre,通过正则表达式进行匹配。示例:控测SN2013字符开头的主机id名是否连通,命令:salt-E'^SN2013.*'test.ping,运行结果如图10-3所示。
图10-3 正则匹配主机的连通性
2)-L,--list,以主机id名列表的形式进行过滤,格式与Python的列表相似,即不同主机id名称使用逗号分隔。示例:获取主机id名为SN2013-08-021、SN2013-08-022;获取完整操作系统发行版名称,命令:salt-L'SN2013-08-021,SN2013-08-022'grains.item osfullname,运行结果如图10-4所示。
图10-4 列表形式匹配主机的操作系统类型
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',运行结果如图10-5所示。
图10-5 grain形式匹配主机的Python版本
4)-I,--pillar,根据被控主机的pillar(10.5节详解)信息进行匹配过滤,格式为“对象名称:对象值”,例如,过滤所有具备'apache:httpd'pillar值的主机。示例:探测具有“nginx:root:/data”信息的主机连通性,命令:salt-I'nginx:root:/data'test.ping,运行结果如图10-6所示。
图10-6 pillar形式匹配主机的连通性
其中pillar属性配置文件如下(关于pillar后面10.5单独进行说明):
nginx: root: /data
5)-N,--nodegroup,根据主控端master配置文件中的分组名称进行过滤。以笔者定义的组为例(主机信息支持正则表达式、grain、条件运算符等),通常根据业务类型划分,不同业务具备相同的特点,包括部署环境、应用平台、配置文件等。举例分组配置信息如下:
【/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格式为列表,即主机id以逗号分隔;G@表示以grain格式描述;S@表示以IP子网或地址格式描述。
示例:探测web2group被控主机的连通性,其命令为:salt-N web2group test.ping,运行结果如图10-7所示。
图10-7 分组形式(nodegroup)匹配主机的连通性
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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论