一·【server3】配置yum源以及安装salt
[root@server3 salt]# vim /etc/yum.repos.d/rhel-source.repo
[root@server3 salt]# yum install -y salt-minion
[root@server3 salt]# cd /etc/salt/
[root@server3 salt]# vim minion
16 master: 172.25.41.1
[root@server3 salt]# /etc/init.d/salt-minion start
二·认证key
[root@server1 ~]# salt-key -L
[root@server1 ~]# salt-key -a server3
[root@server1 ~]# salt-key -L
三·自动安装nginx
[root@foundation41 Desktop]# scp nginx-1.14.0.tar.gz root@172.25.41.1:/srv/salt/nginx/files/ #将安装包首先传给master 【server1】
[root@server1 ~]# cd /srv/salt/htppd
[root@server1 httpd]# mkdir nginx
[root@server1 httpd]# cd nginx/
[root@server1 nginx]# mkdir files
[root@server1 nginx]# cd ..
[root@server1 nginx]# vim install.sls #编辑安装内容
nginx-install:
pkg.installed:
- pkgs:
- pcre-devel
- openssl-devel
- gcc
file.managed:
- name: /mnt/nginx-1.14.0.tar.gz
- source: salt://nginx/files/nginx-1.14.0.tar.gz
cmd.run:
- name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null
-
[root@server1 nginx]# salt server3 state.sls nginx.install
[root@server3 nginx-1.14.0]# ps ax
[root@server1 nginx]# vim install.sls #添加配置文件目录
- creates: /usr/local/nginx
[root@server1 nginx]# salt server3 state.sls nginx.install
[root@server3 nginx-1.14.0]# ps ax
四·编辑执行脚本
[root@server1 nginx]# vim service.sls
[root@server1 nginx]# cat service.sls
include:
- nginx.install
nginx-service:
cmd.run:
- name: /usr/local/nginx/sbin/nginx
[root@server1 nginx]# salt server3 state.sls nginx.service
[root@server3 nginx-1.14.0]# netstat -antlp #查看端口
编辑一个脚本nginx
[root@server3 nginx-1.14.0]# cd /usr/local/nginx/conf/
[root@server3 conf]# scp nginx.conf server1:/srv/salt/nginx/files
nginx #自己编辑的脚本
nginx-1.14.0.tar.gz
nginx.conf #从server3中传过来的文件
[root@server1 files]# cd ..
[root@server1 nginx]# vim service.sls
include:
- nginx.install
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/files/nginx.conf
nginx-service:
file.managed:
- name: /etc/init.d/nginx
- source: salt://nginx/files/nginx
- mode: 755
service.running:
- name: nginx
- reload: True
- watch:
- file: /usr/local/nginx/conf/nginx.conf
[root@server1 nginx]# salt server3 state.sls nginx.service
[root@server3 conf]# ps ax
在server1改变进程数再次推送
[root@server1 nginx]# vim files/nginx.conf
3 worker_processes 2;
[root@server1 nginx]# salt server3 state.sls nginx.service
[root@server3 conf]# ps ax
添加用户
[root@server1 nginx]# vim files/nginx.conf
user nginx nginx; #更改用户和组
[root@server1 nginx]# cd ..
[root@server1 salt]# mkdir users
[root@server1 salt]# cd users/
[root@server1 users]# ls
[root@server1 users]# vim nginx.sls
nginx-group:
group.present:
- name: nginx
- gid: 800
nginx-user:
user.present:
- name: nginx
- uid: 800
- gid: 800
- shell: /sbin/nologin
- createhome: False
- home: /usr/local/nginx
[root@server1 users]# cd ..
[root@server1 salt]# cd nginx/
[root@server1 nginx]# vim service.sls
include:
- users.nginx
- nginx.install
/usr/local/nginx/conf/nginx.conf:
file.managed:
- source: salt://nginx/files/nginx.conf
nginx-service:
file.managed:
- name: /etc/init.d/nginx
- source: salt://nginx/files/nginx
- mode: 755
service.running:
- name: nginx
- reload: True
- watch:
- file: /usr/local/nginx/conf/nginx.conf
[root@server1 nginx]# salt server3 state.sls nginx.service
[root@server3 conf]# id nginx
uid=800(nginx) gid=800(nginx) groups=800(nginx)
简化安装nginx脚本内容
[root@server1 nginx]# cd ..
[root@server1 salt]# mkdir pkgs
[root@server1 salt]# cd pkgs/
[root@server1 pkgs]# vim make.sls
make-gcc:
pkg.installed:
- pkgs:
- pcre-devel
- openssl-devel
- gcc
[root@server1 pkgs]# ls
make.sls
[root@server1 pkgs]# cd ..
[root@server1 salt]# ls
httpd nginx pkgs users
[root@server1 salt]# cd nginx/
[root@server1 nginx]# vim install.sls
include:
- pkgs.make
nginx-install:
file.managed:
- name: /mnt/nginx-1.14.0.tar.gz
- source: salt://nginx/files/nginx-1.14.0.tar.gz
cmd.run:
- name: cd /mnt && tar zxf nginx-1.14.0.tar.gz && cd nginx-1.14.0 && sed -i.bak 's/#define NGINX_VER "nginx\/" NGINX_VERSION/#define NGINX_VER "nginx"/g' src/core/nginx.h && sed -i.bak 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio &> /dev/null && make &> /dev/null && make install &> /dev/null
- creates: /usr/local/nginx
[root@server1 nginx]# salt server3 state.sls nginx.service
[root@server3 conf]# ps ax