一个简单的例子了解states

 在大规模的配置管理工作中,我们要编写大量的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;

上一篇:一个简单的例子搞懂ES6之Promise


下一篇:扩展Python模块系列(二)----一个简单的例子