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版本 ...
随机推荐
- HTML5+js页面传值给Java后台的小技巧
页面传值小技巧 平常我们在做的web项目,一般一个HTML页面上会有好几个步骤,step_num①,step_num②,step_num③,一般先显示step_num①,根据跳转条件显示step_nu ...
- Andrew Ng机器学习课程笔记--week10(优化梯度下降)
本周主要介绍了梯度下降算法运用到大数据时的优化方法. 一.内容概要 Gradient Descent with Large Datasets Stochastic Gradient Descent M ...
- “最美天气”Python抓取天气
import urllib.request import urllib.parse import json """ 利用"最美天气"抓取即时天 ...
- PowerShell 脚本执行策略
为防止恶意脚本的执行,PowerShell 中设计了一个叫做执行策略(Execution Policy)的东西(我更倾向于把它叫做脚本执行策略).我们可以在不同的应用场景中设置不同的策略来防止恶意脚本 ...
- 基于dijkstra算法求地铁站最短路径以及打印出所有的路径
拓展dijkstra算法,实现利用vector存储多条路径: #include <iostream> #include <vector> #include <stack& ...
- macaca 测试web(2)
还是以博客园登录为例, 可以查看上一篇上一篇 这次只测试登录,使用ddt的数据驱动,这里我博客也有记录 地址 其实我在uiautomator +python 实现安卓自动化 一文当中我已经使用过ddt ...
- selenium 对https网站(加密证书)进行自动化测试
由于公司需要,被测网站有证书加密,由于在selenium启动firefox的时候,它会重新建一个profile作为启动的profile,所以无论你怎么把站点设为可信任站点,在selenium启动的fi ...
- Java:用Lambda表达式简化代码一例
之前,调用第3方服务,每个方法都差不多“长”这样, 写起来啰嗦, 改起来麻烦, 还容易改漏. public void authorizeRoleToUser(Long userId, List< ...
- 程序员也是弱势群体?——从WePhone开发者事件说起
作为一名不爱凑热闹的人,今天一直在持续关注一个热点事件--WePhone开发者自杀,即使前几天热议的孕妇跳楼新闻我都不太关注,但是这个事件却让我深深的震撼,花了几个小时在微博上搜索了相关的信息,去了解 ...
- 打开safari开发者选项
1.点击Safari启动浏览器 2.点击左上Safari标志,选择偏好设置 3.选择高级,勾选下方的在菜单栏显示开发菜单. 如此,Safari就出现了开发菜单,右键网页元素也会出现查看元素功能了.