上次记录了一下salt的安装和配置,下面记录一下如何去编写一个配置并且应用到minion. SaltStack默认的配置文件路径在/srv/slat下,如果没有这个目录就新建个。如果不确定可以打开Master的主配置文件看下。 在master主配置文件中,打开一下三行的注释,这就是salt的默认配置路径。 [

1](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/1.png)
1](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/1.png)
这里默认配置文件是注释了的,如果需要直接取消注释就行了。 切记,每次修改了配置文件都要重启服务 下面以两个需求为例子进行学习: a.在minion上面安装httpd服务,并且启动之 b.自建index.html文件,在master端应用配置完成后直接访问minion的http服务,在浏览器中显示我自定的index.html文件内容 额,刚开始学习这个的时候配置文件编写很是一件头疼的事情; 一、配置文件说明 1.引导配置文件 top.sls saltstack的第一个配置文件默认为top.sls,是位于/srv/salt/目录下的,当然这不是绝对的,可以修改配置文件的哦。这个文件是必须要有的。 例如:

[root@saltstack-node1 salt]# more top.sls
base: ###可以理解为仓库
‘node0.example.com’: ###对象名,就是针对那些minion,这里可以支持组什么的,就是各种匹配吧
- apache ###资源名(自定义)

说明:资源名需要在/srv/salt目录新建文件为apache.sls,注意:所有生效的配置文件都是以sls结尾的。 2.资源配置文件 /srv/salt/apache.sls 这个就是上面top中指定的资源名

[root@saltstack-node1 salt]# cat apache.sls
apache-service: ###ID,自定义
pkg.installed: ###使用包管理的insalled方法
- names: ###名称
- httpd ###软件包名
- httpd-devel
service.running: ###模块名称,安装好之后要启动它
- name: httpd ###启动什么
- enable: True ###开机自启动
- reload: True ###监视这个文件,如果有变动,我们要重载服务
- watch:
- file: /var/www/html/index.html ###文件路径
- require: ###应用前提,httpd这个软件包安装好之后,才执行service这个模块
- pkg: httpd
file.managed: ###模块名称,使用file模块的managed这个方法,目的,文件管理
- name: /var/www/html/index.html ###minion端的文件具体路径
- source: salt://index.html ###源文件
- user: apache ###这个文件的一些属性
- group: root
- mode: 644
- backup: minion ###改变之前备份
- require: ###同上,执行完上面的,在执行这个
- pkg: httpd

说明:源文件的位置就是在/srv/salt目录下新建一个文件index.html。 我这里内容自定义: echo “

SaltStack

“ > index.html 配置编写完毕最后的目录结构如下: [
2](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/2.png)
2](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/2.png)
二、应用于客户端 经过上面Master端编写配置文件后,此时已经生效。Minions只要同步资源即可实现上面的两个需求。那么就是如何来同步? 这里有两种方式: 第一种手动在Master上执行推送命令,第二种是在Minion设置时间间隔自动想Master端同步最新的资源。 1、Master手动同步 在Master上执行# salt ‘*’ state.highstate ###意思是向所有Minions推送最新资源 2、Minion自动同步 在/etc/salt/minion配置文件中增加

schedule:
highstate:
function: state.highstate
seconds: 30 ###意思是每30秒向Master同步一次最新资源,也可设置分-mintus、小时-hours

下面是在master端执行的结果: 当然在推送资源时我们可以先测试一下,命令: salt ‘node0.example.com’ state.highstate test=True [

3](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/3.png)](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/3.png) [![4](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/4.png)](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/4.png) 上面的推送已经完成,下面验证结果: [![6](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/6.png)
3](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/3.png)](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/3.png) [![4](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/4.png)](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/4.png) 上面的推送已经完成,下面验证结果: [![6](https://qcloud.coding.net/u/guomaoqiu/p/guomaoqiu/git/raw/master/uploads/2015/08/6.png)
至此上面两个需求已经实现了。这也是salt最基本的用法及功能啦。后面继续学习。 看来搞个lamp或者lnmp平台也可以轻而易举的实现了。