前面学习了Saltstack安装和基本的配置,可以通过Saltstack批量执行系统命令,包括系统重启,查看系统负载,添加/删除用户等等。也可以把线上WEB,DB,BBS等安装和配置相同或相近的服务器分为一组,通过Saltstack的group功能批量执行管理。下面通过Saltstack来实现批量安装,卸载RPM软件包,批量分发文件,压缩包和推送目录到指定的minion,定期修改Apache/Nginx/Mysql等配置文件并实施推送到minion。
1.物理环境
<a href="http://blog.51cto.com/attachment/201310/154621933.jpg" target="_blank"></a>
2.配置Saltstack master
1)编辑/etc/salt/master, 取掉下面注释行,目录/srv/salt是Saltstack核心配置文件目录。
1
2
3
<code>file_roots:</code>
<code> </code><code>base:</code>
<code> </code><code>- </code><code>/srv/salt/</code>
2)查看我规划的Saltstack的.sls,配置文件和软件包的目录结构。
<a href="http://blog.51cto.com/attachment/201310/170953759.jpg" target="_blank"></a>
3)在/srv/salt目录下面新建top.sls文件,该文件是Saltstack入口配置文件。Saltstack "top.sls"文件开头一般用base:书写,通配符'*'表示所有的minion,-conf.pack表示conf目录下面的pack.sls文件,在这里我定义的是RPM软件包管理。
4
5
6
7
<code>base:</code>
<code> </code><code>'*'</code><code>:</code>
<code> </code><code>- conf.pack</code>
<code> </code><code>- conf.nginx</code>
<code> </code><code>- conf.apache</code>
<code> </code><code>- conf.mysql</code>
<code> </code><code>- conf.software</code>
3.软件包的管理
1)创建软件包管理的配置文件pack.sls 文件,httpd表示要安装软件包,pkg:表示Saltstack安装包管理,-name表示安装软件包名称,-installed表示安装,-removed表示卸载,service:表示Saltstack服务管理,后两行保证apache的服务是开启的。
<code>httpd:</code>
<code> </code><code>pkg:</code>
<code> </code><code>- name: httpd</code>
<code> </code><code>- installed</code>
<code> </code><code>service:</code>
<code> </code><code>- running</code>
<code> </code><code>- </code><code>enable</code><code>: True</code>
2)软件包管理测试,在ID为WEB2013-10-23的服务器上面已经安装apache服务并启动。
<a href="http://blog.51cto.com/attachment/201310/162528587.jpg" target="_blank"></a>
4.Nginx/apache配置文件的分发
1)创建Nginx sls配置文件nginx.sls ,第一行表示分发到minion文件路径,-managed表示Saltstack文件管理,-source:表示master端配置文件地址,是从master配置文件定义的路径/srv/salt开始查找的,下面三行表示文件的属性。
8
<code>/usr/local/nginx/conf/nginx</code><code>.conf:</code>
<code> </code><code>file</code><code>:</code>
<code> </code><code>- managed</code>
<code> </code><code>- </code><code>source</code><code>: salt:</code><code>//nginx/nginx</code><code>.conf</code>
<code> </code><code>- user: www</code>
<code> </code><code>- group: www</code>
<code> </code><code>- mode: 644</code>
<code> </code><code>- backup: minion</code>
2)Nginx/apache配置文件的分发测试,在ID为WEB2013-10-23的服务器查看Nginx配置文件及其属性都是OK的。
<a href="http://blog.51cto.com/attachment/201310/164149904.jpg" target="_blank"></a>
5.Saltstack常用命令总结
通过salt '*' sys.doc | grep "salt '*'"可以查看所有salt帮助文档的说明。
1)Saltstack通过cp.get_file可以将master文件分发到minion,/software/Install_Centos_LAMP_v.0.1.sh表示把文件分发到minion上的文件路径,makedirs=True表示如果目录不存在自动创建,在传输大文件的时候还支持压缩传输,在传输大文件的时候还支持压缩传输gzip。
<a href="http://blog.51cto.com/attachment/201310/165519954.jpg" target="_blank"></a>
2)cp.get_dir和cp.get_file一样,不过get_dir是用来下载整个目录的,也支持压缩传输。
<a href="http://blog.51cto.com/attachment/201310/170043966.jpg" target="_blank"></a>
3)Saltstack cmd.run 命令可以执行系统命令并把结果返回。
<a href="http://blog.51cto.com/attachment/201310/171756726.jpg" target="_blank"></a>
3)Saltstack state.highstate命令表示主动推送master和minion同步,也可以通过schedule方式让客户端minion定期同步master。
<code>salt </code><code>'*'</code> <code>state.highstate</code>
4)2013.12.27补充,上次网友和博友提问说如何只同步top.sls下面的nginx或者mysql的配置文件,而不是全部同步。当然应该也支持N(分组)和E(正则)参数。
<code>salt </code><code>'*'</code> <code>state.sls conf.nginx</code>
<code></code>
本文转自 sfzhang 51CTO博客,原文链接:http://blog.51cto.com/sfzhang88/1317802,如需转载请自行联系原作者