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  

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  

6、编辑模块配置文件

vim /srv/salt/soft/modules.sls  
echo-install:        #每个文件管理必须配置不同的名字,缩进必须一致,name:和source:后面的空格必须有!    file.managed:      - name: /soft/echo-nginx-module-master.zip      - source: salt://nginx/files/echo-nginx-module-master.zip      - user: root        #用户指定可有可无      - group: root      - mode: 755        #权限指定可有可无      cmd.run:      - name: cd /soft && unzip echo-nginx-module-master.zip      - unless: test -d /soft/echo-nginx-module-master    lua-install:    file.managed:      - name: /soft/lua-nginx-module-master.zip      - source: salt://nginx/files/lua-nginx-module-master.zip      cmd.run:      - name: cd /soft && unzip lua-nginx-module-master.zip      - unless: test -d /soft/lua-nginx-module-master    purge-install:    file.managed:      - name: /soft/ngx_cache_purge-2.3.tar.gz      - source: salt://nginx/files/ngx_cache_purge-2.3.tar.gz      cmd.run:      - name: cd /soft && tar xvf ngx_cache_purge-2.3.tar.gz      - unless: test -d /soft/ngx_cache_purge-2.3    devel-install:    file.managed:      - name: /soft/ngx_devel_kit-0.3.0rc1.tar.gz      - source: salt://nginx/files/ngx_devel_kit-0.3.0rc1.tar.gz      cmd.run:      - name: cd /soft && tar xvf ngx_devel_kit-0.3.0rc1.tar.gz      - unless: test -d /soft/ngx_devel_kit-0.3.0rc1  

7、执行同步推送

salt 'test' state.highstate  

观察是否全部为success,如果有fail,查看具体失败原因,解决问题后可继续推送。

原文出处:yunwzs -> http://www.yunwzs.com/1286.html

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。