Saltstack批量编译部署Nginx(多模块)

最近一直在研究saltstack的同步文件和批量执行命令,随着架构的变大,批量部署的需求也变得明显起来了,我需要用一条命令就部署好nginx和tomcat,并且符合我所有的环境需求,可以直接投入生产环境使用,这就需要用到saltstack的批量安装部署功能了。这篇文章主要介绍nginx的批量部署,下篇讲解tomcat多实例的批量部署方法。

环境介绍:

CentOS 6.5

salt 2015.5.10

nginx 1.12.0

minion:test

1.修改master配置文件,修改后重启服务,因为saltstack是用python写的,所以所有配置文件缩进和空格必须和文中一致!

mkdir -p /srv/salt

vim /etc/salt/master

  file_roots:    #前面必须有俩空格,下面缩进同理        base:            - /srv/salt/

2.主入口文件top.sls

vim /srv/salt/top.sls

 base:       'test':    #只作用于test这台minion           - nginx.init    #使用nginx下的init.sls文件进行初始化

3.创建nginx目录

mkdir -p /srv/salt/nginx/files    #用于存放模块和配置文件

mkdir -p /srv/salt/soft/    #用于存放模块的安装方法

cd /srv/salt/nginx && tree

Saltstack批量编译部署Nginx(多模块)

4.编辑初始化文件init.sls

vim /srv/salt/nginx/init.sls

 include:     - nginx.install    #包含nginx下的install.sls

5.编辑安装部署文件install.sls

vim /srv/salt/nginx/install.sls

include:   - soft.modules        #包含模块配置文件 #nginx.tar.gz nginx_source:   file.managed:     - name: /tmp/nginx-1.12.0.tar.gz        #标识文件所在位置     - unless: test -e /tmp/nginx-1.12.0.tar.gz    #检测文件是否存在,只在第一次检测     - source: salt://nginx/files/nginx-1.12.0.tar.gz    #把maser上的文件传过去 #extract extract_nginx:   cmd.run:     - cwd: /tmp        #进入/tmp目录     - names:       - tar zxvf nginx-1.12.0.tar.gz        #解压     - unless: test -d /tmp/nginx-1.12.0.tar.gz     - require:       - file: nginx_source        #这个命令必须在上面的函数执行成功后才继续执行 #user nginx_user:   user.present:        #用户创建     - name: nginx     - createhome: False        #不用家目录     - gid_from_name: True     - shell: /sbin/nologin        #指定shell #nginx_pkgs nginx_pkg:   pkg.installed:        #安装必备组件     - pkgs:       - gcc       - gcc-c++       - epel-release       - openssl-devel       - pcre-devel       - zlib-devel       - gd-devel       - lua-devel #nginx_compile nginx_compile:        #nginx进行编译   cmd.run:     - cwd: /tmp/nginx-1.12.0     - names:       - ./configure --prefix=/usr/local/nginx  --user=nginx  --group=nginx --with-file-aio        --with-http_ssl_module --with-http_realip_module --with-http_addition_module         --with-http_image_filter_module --with-http_gzip_static_module         --with-http_stub_status_module --with-mail --with-mail_ssl_module         --with-pcre --with-ld-opt=-Wl,-rpath,/usr/local/luajit/lib         --with-http_sub_module --add-module=/soft/ngx_cache_purge-2.3         --add-module=/soft/ngx_devel_kit-0.3.0rc1         --add-module=/soft/echo-nginx-module-master         --add-module=/soft/lua-nginx-module-master && make && make install     - require:       - cmd: extract_nginx       - pkg:  nginx_pkg     #- unless: test -d /usr/local/nginx/    #检测或不检测目录是否存在 #cache_dir cache_dir:   cmd.run:     - names:        #创建虚拟主机目录,把nginx目录权限给相关用户       - mkdir -p /usr/local/nginx/conf/vhosts && chown -R nginx.nginx /usr/local/nginx/     - require:       - cmd: nginx_compile     - unless: test -d /usr/local/nginx/conf/vhosts/   #vhosts   file.managed:     - name: /usr/local/nginx/conf/nginx.conf    #修改后的配置文件复制过去     - source: salt://nginx/files/nginx.conf     #- unless: test -e /usr/local/nginx/conf/nginx.conf    #建议不进行检测,如果检测,有这个文件将不会进行更新 /usr/local/nginx/conf/proxy.conf:   file.managed:     - name: /usr/local/nginx/conf/proxy.conf     - source: salt://nginx/files/proxy.conf     #- unless: test -e /usr/local/nginx/conf/proxy.conf

5.编辑模块配置文件

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/e7191137996fd0527078bc3652b9c7ea.html