使用sls安装nginx,并管理nginx的配置文件,当nginx配置文件被修改时,自动更新配置文件,并重启nginx
mkdir -p /srv/salt/nginx
cd /srv/salt/nginx/
vim init.sls
nginx:
pkg:
- installed
service:
- running
- enable: True
- reload: True
- watch:
- pkg: nginx
- file: /etc/nginx/nginx.conf
- file: /etc/nginx/conf.d/default.conf
/etc/nginx/nginx.conf:
file.managed:
- source: salt://etc/nginx/nginx.conf
- user: root
- group: root
- mode: 644
/etc/nginx/conf.d/default.conf:
file.managed:
- source: salt://etc/nginx/conf.d/default.conf
- user: root
- group: root
- mode: 644
1:在master端上安装nginx,方便生成nginx的配置文件
yum -y install nginx
2:创建nginx同步目录
mkdir /srv/salt/etc/nginx/conf.d -p
3:拷贝nginx的配置文件到/srv/salt/etc/nginx/目录下
cp /etc/nginx/nginx.conf /srv/salt/etc/nginx/
4:拷贝default.conf配置文件到/srv/salt/nginx/conf.d/目录下
cp /etc/nginx/conf.d/default.conf /srv/salt/etc/nginx/conf.d/
5:开始安装
salt '*' state.sls nginx
6:测试是否安装成功
salt '*' cmd.run 'rpm -qa | grep nginx'
接下来实现配置更新
在master端将默认端口更改为8080
vim /srv/salt/etc/nginx/conf.d/default.conf
listen 8080 default_server;
在minion端执行指令,观察
salt-call state.sls nginx
定义pillar的主目录,同时创建pillar目录(master端)
vim /etc/salt/master #找到以下内容取消注释
pillar_roots:
base:
- /srv/pillar
pillar_opts: True
mkdir -p /srv/pillar
定义入口文件top.sls
入口文件的作用一般是定义pillar的数据覆盖被控主机的有效范围,’*’代表任意主机,默认从 base 标签开始解析执行,下一级是操作的目标
cat /srv/pillar/top.sls
base:
'*':
- nginx #指代的是nginx.sls文件
定义nginx文件,每分钟更新一次
install -d /srv/pillar/nginx
cd nginx/
cat init.sls
schedule:
nginx:
function: state.sls
minutes: 1
args:
- 'nginx'
刷新被控主机的pillar信息
salt '*' saltutil.refresh_pillar
查看上面定义的nginx.sls数据项,出现以下内容表示成功
salt '*' pillar.data
192.168.31.166:
----------
schedule:
----------
nginx:
----------
args:
- nginx
function:
state.sls
minutes:
1
192.168.31.188:
----------
schedule:
----------
nginx:
----------
args:
- nginx
function:
state.sls
minutes:
1
在master端将默认端口更改为666
vim /srv/salt/etc/nginx/conf.d/default.conf
listen 666 default_server;
一分钟后在minion端查看端口:
netstat -tnl