在大规模的配置管理工作中,我们要编写大量的states.sls文件。top.sls是states系统的入口文件,它负责指定哪些设备调用哪些states.sls文件。statse的默认工作目录是在/srv/salt目录下:
[root@master salt]# vim /etc/salt/master
599 file_roots:
600 base:
601 - /srv/salt/
接下来我们以一个简单的例子来了解一下states文件。
<1>创建nginx目录,并且区分生产环境目录和测试环境目录。
[root@master salt]# pwd
/srv/salt
[root@master salt]# tree
.
├── nginx
│ ├── produced //生产环境目录
│ │ ├── nginx.conf
│ │ └── nginx.sls
│ └── testing //测试环境目录
│ ├── nginx.conf
│ └── one.sls
└── top.sls //入口文件
<2>编辑一下states入口文件
[root@master salt]# vim top.sls
base:
'minion-1': //代表匹配minion-1
- nginx.produced.nginx //引用nginx/produced/nginx.sls文件
'minion-2': //代表匹配minion-2
- nginx.testing.nginx //引用nginx/testing/nginx.sls文件
<3>编辑生产环境的sls文件
[root@master salt]# vim nginx/produced/nginx.sls
/usr/local/nginx/config/nginx.conf: //远端的需要管理的文件及路径
file.managed:
- source: salt://nginx/produced/nginx.conf //本地的文件地址
- user: root //文件属主
- group: root //文件属组
- mode: 755 //权限
<4>编辑nginx.conf文件以区别和测试环境的差异,在此我们就修改第一行
[root@master salt]# vim nginx/produced/nginx.conf
1 user nginx nginx;
<5>编辑测试环境的sls文件
[root@master salt]# vim nginx/testing/nginx.sls
/usr/local/nginx/config/nginx.conf:
file.managed:
- source: salt://nginx/testing/nginx.conf
- user: www
- group: www
- mode: 755
<6>编辑nginx.conf文件以区别和生产环境的差异,在此我们也修改第一行
[root@master salt]# vim nginx/testing/nginx.conf
1 user www www;
<7>执行生产环境的sls文件
[root@master salt]# salt 'minion-1' state.highstate
<8>去minion-1主机上看一下nginx.conf文件内容
[root@minion-1 ~]# vim /usr/local/nginx/config/nginx.conf
1 user nginx nginx;
<9>再执行测试环境的sls文件
[root@master salt]# salt 'minion-2' state.highstate
<10>去测试环境服务器上看一下nginx.conf文件
[root@minion-2 ~]# vim /usr/local/nginx/config/nginx.conf
1 user www www;