你好,游客 登录 注册 搜索
背景:
阅读新闻

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

[日期:2017-09-24] 来源:Linux社区  作者:forall [字体: ]

最近一直在研究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

5.编辑模块配置文件

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

6.执行同步推送

salt 'test' state.highstate

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

Nginx 403 forbidden的解决办法  http://www.linuxidc.com/Linux/2017-08/146084.htm

CentOS 7下Nginx服务器的安装配置  http://www.linuxidc.com/Linux/2017-04/142986.htm

CentOS上安装Nginx服务器实现虚拟主机和域名重定向  http://www.linuxidc.com/Linux/2017-04/142642.htm

CentOS 6.8 安装LNMP环境(Linux+Nginx+MySQL+PHP)  http://www.linuxidc.com/Linux/2017-04/142880.htm

Linux下安装PHP环境并配置Nginx支持php-fpm模块  http://www.linuxidc.com/Linux/2017-05/144333.htm

Nginx服务的SSL认证和htpasswd认证  http://www.linuxidc.com/Linux/2017-04/142478.htm

Ubuntu 16.04上启用加密安全的Nginx Web服务器  http://www.linuxidc.com/Linux/2017-07/145522.htm

Nginx会话保持之nginx-sticky-module模块  http://www.linuxidc.com/Linux/2017-09/146776.htm

使用Nginx制作内网yum镜像代理  http://www.linuxidc.com/Linux/2017-08/146598.htm

CentOS 7.2下Nginx+PHP+MySQL+Memcache缓存服务器安装配置  http://www.linuxidc.com/Linux/2017-03/142168.htm

CentOS6.9编译安装Nginx1.4.7  http://www.linuxidc.com/Linux/2017-06/144473.htm

Nginx 的详细介绍请点这里
Nginx 的下载地址请点这里

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-09/147034.htm

linux
相关资讯       Saltstack批量部署Nginx  部署Nginx 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款