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
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,查看具体失败原因,解决问题后可继续推送
Saltstack批量编译部署nginx(多模块)的更多相关文章
- 随手写的自动批量编译部署NativeAndroid程序Python脚本
背景 有一堆工程NativeAndroid程序,要一一编译部署编译测试,手头只有AndroidManifest和Makefile,需要一个个Update,Ndk-build,和发包安装测试,很是头疼, ...
- suse 12 编译部署 Nginx
文章目录 编译前准备 创建nginx用户 下载nginx源码包 安装编译环境依赖 编译nginx 配置nginx为systemctl管理 Linux:~ # cat /etc/os-release N ...
- suse 12 编译部署Keepalived + nginx 为 kube-apiserver 提供高可用
文章目录 编译部署nginx 下载nginx源码包 编译nginx 配置nginx.conf 配置nginx为systemctl管理 分发nginx二进制文件和配置文件 启动kube-nginx服务 ...
- debian完整部署 Nginx + uWSGI + Django
手工部署一个Django服务器真心不容易,需要安装很多东西.从头开始搭建服务器,主要是为了梳理一下后续开发中一般为碰到的平台部署.对后续问题的解决有一定帮助. 通常部署有2中方式: 一种是使用现成提供 ...
- 使用saltstack批量部署服务器运行环境事例——批量部署nagios客户端
之前关于搭建web服务器集群实验的这篇文章http://www.cnblogs.com/cjyfff/p/3553579.html中,关于如何用saltstack批量部署服务器这一点当时没有记录到文章 ...
- nginx使用热部署添加新模块
简介 当初次编译安装nginx时,http_ssl_module 模块默认是不编译进nginx的二进制文件当中,如果需要添加 ssl 证书.也就是使用 https协议.那么则需要添加 http_ssl ...
- mac下Nginx+lua模块编译安装
Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...
- Nginx 最新版源码编译安装 包含常用模块作用及所需依赖
第一部分 Nginx最新版源码编译安装 1. 使用的模块 模块1:http_rewrite_module 基于正则匹配来实现重定向.依赖PCRE库,见依赖1 模块2:http_gzip_module ...
- 在已编译安装nginx上动态添加模块
一.添加nginx模块 找到安装nginx的源码根目录,如果没有的话下载新的源码 wget http://nginx.org/download/nginx-1.8.1.tar.gz 查看ngixn版本 ...
随机推荐
- Deadclock on calling async methond
Issue: HttpClient.GetAsync(…) never returns when using await/async Related Posts: http://stackoverfl ...
- Ext.NET webform
Ext.NET是基于跨浏览器的ExtJS库和.NET Framework的一套支持ASP.NET AJAX的非开源Web控件,包含有丰富的Ajax运用,其前身是Coolite[1] .
- windows 资源监视器
windows的资源监视器有很强大的资源监视能力 win+r输入resmon.exe即可打开
- 解说asp.net core MVC 过滤器的执行顺序
asp.net core MVC 过滤器会在请求管道的各个阶段触发.同一阶段又可以注册多个范围的过滤器,例如Global范围,controller范围等.以ActionFilter为例,我们来看看过滤 ...
- python+selenium自动化软件测试(第16章):基础实战(3)
#coding:utf-8 from time import sleep from selenium import webdriver class cloudedge_register(object) ...
- pomelo 安装 windows 下
最近一直在捣鼓这个东西,看着个的先记录下发帖时间, pomelo 现在最新版是2.0 的,和之前的版本的启动时有区别的(命令行)的,可以进pomelo官网去看下基本的信息, 在pomelo官方论坛上的 ...
- oracle语句批处理
数据量有40万条,从一个对象table_01一条一条取数到对象table_02,如果用原始的 Statement Statmt =comm.createStatement(); String sql= ...
- HDU 6185 Covering 矩阵快速幂
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6185 题意:用 1 * 2 的小长方形完全覆盖 4 * n的矩形有多少方案. 解法:小范围是一个经典题 ...
- window的设置属性
1.windowAnimationStyle 用于设置一组window动画的引用style资源,window的动画属性由R.styleable.WindowAnimation定义. Winow动画类属 ...
- 多模字符串匹配算法之AC自动机—原理与实现
简介: 本文是博主自身对AC自动机的原理的一些理解和看法,主要以举例的方式讲解,同时又配以相应的图片.代码实现部分也予以明确的注释,希望给大家不一样的感受.AC自动机主要用于多模式字符串的匹配,本质上 ...