ansible+jenkins+svn实现生产环境自动发布

ansible+jenkins实战

1、部分机器信息:

2、远程执行用户:(ansible机器并没有开通外网哦)


3、ansible用到的两个重要角色

/etc/ansible/hosts      #hosts文件定义主机与和执行权限
/etc/ansible/roles       #roles是任务集合,可在roles下面新建多模块,如tomcat,jdk、yum源,防火墙等,分角色方便管理且灵活

##Jenkins配置
1、新建-自由分格项目
项目名称:lbbs
Svn配置:(这个svn地址也是内网哦)
地址:svn://172.17.103.10:3391/lbproject/bs/

###构建:
1)、增加构建后的操作-->Invoke Ansible Playbook

Playbook path:/etc/ansible/roles/lbbs/lbbs.yml (备注:该路径为ansible的roles)
Inventory:选择File or host list File path or comma separated host list:/etc/ansible/hosts (备注:该路径为ansible的hosts文件)
Hostsubset:lbbs (备注:此处为hosts文件中ip或者定义的主机组都行

[[email protected] bs]# cat /etc/ansible/roles/lbbs/tasks/main.yml
- name: copy package to 103.111
  copy:
    src={{ src_path }}/103.111/ne-ops-1.0.0.war
    dest={{ dest_path }}
    backup=yes  #开启远程备份,在远程主机/ane/update下备份
  when: "ansible_nodename == ‘lb_bs1‘ and ansible_eth0.ipv4.address == ‘172.17.103.111‘"   #条件判断
- name: copy package to 103.32
  copy:
    src={{ src_path }}/103.32/ne-ops-1.0.0.war
    dest={{ dest_path }}
    backup=yes
  when: "ansible_nodename == ‘bs-web04‘ and ansible_eth0.ipv4.address == ‘172.17.103.32‘"
备注:加when条件判断原因是:war包里有个文件引用了当前的主机ip,没办法,只能这样了

[[email protected] bs]# cat  /etc/ansible/roles/lbbs/vars/main.yml   #vars定义了上面用到的两个变量路径
src_path: /var/lib/jenkins/workspace/lbbs    #源路径
dest_path: /ane/update   #目标路径


2)、增加构建后的操作-->(Invoke Ansible Ad-Hoc Command)

###发布
1、Jenkins中点击立即构建,或者指定定时任务,

2、编写计划任务发布
发布时间一般是固定的,所以可以指定定时任务(通linux下的crond),让其自动构建操作

检查执行结果


原文地址:http://blog.51cto.com/9682938/2134829

时间: 2024-10-28 20:29:38

ansible+jenkins+svn实现生产环境自动发布的相关文章

手游公司运维之利用Rundeck自动化运维工具和Shell脚本构建测试环境代码发布平台和生产环境代码发布平台

在做手游运维工作之前,我接触的代码发布都是常规的软件发布,有固定的发布周期.之前工作的那个外企有严格的发布周期,一年中的所有发布计划都是由Release Manager来控制,每次发布之前都需要做一些准备工作,如填写发布表单,上传发布需要的资源文件,联系发布过程中的相关人员,如开发和测试.最后在公司内部开发的发布平台上按照指定的时间点击鼠标对一个集群内的几台主机或全部主机进行代码发布.这个发布平台还是基于rsync服务实现的.虽然每个星期都有各种服务的发布,但是整个发布流程是可以控制的,并且发布

vue cli脚手架项目利用webpack给生产环境和发布环境配置不同的接口地址或者不同的变量值。

废话不多说,直接进入正题,此文以配置不同的接口域名地址为例子 项目根目录下有一个config文件夹,基础项目的话里面至少包括三个文件, 1.dev.env.js 2.index.js 3.prod.env.js 我们需要做配置的就是第一个和第三个. 其实这两个文件内容就是针对生产环境和发布环境设置不同的参数的文件,那么打开dev.en.js,开发环境.原本代码如下: 'use strict' const merge = require('webpack-merge') const prodEnv

VUE 利用webpack 给生产环境和发布环境配置不同的接口地址

第一步,分别设置不同的接口地址 首先,我们分别找到下面的文件: /config/dev.env.js /config/prod.env.js 其实,这两个文件就是针对生产环境和发布环境设置不同参数的文件.我们打开dev.en.js文件.代码如下: var merge = require('webpack-merge') var prodEnv = require('./prod.env') module.exports = merge(prodEnv, { NODE_ENV: '"develop

[MySQL-MM] 生产环境自动恢复MM中一台M2库的过程,分享从零开始写的自动化重建脚本以及思路 (转)

必须是MM架构,而且一台主库M1是完好无损的,一台主库M2可以根据M1主库来进行重建:如果MS架构,自己可以稍微做一下脚本修改动作,也能使用,架构如下图所示: 3  总体思路,建立主脚本a_build_rep.sh 思路分为13个步骤,如a_build_rep.sh脚本中的备注 [python] view plain copy print? #!/bin/bash set -x set -e set -u #(1)准备好目录以及全局变量 BACKUP_FOLDER=/mysqldata/shar

vue-cli 利用 webpack 给生产环境和发布环境配置不同的接口地址的三种方法

第一种方法: 在/config/dev.env.js下配置如下 在/config/prod.env.js下配置如下 已经分别设定路径,接下来就是如何调用的问题了. 原来api文件里代码如图所示 修改为 然后就完成了我们的配置工作.最后,重启项目,就能使新配置的接口地址生效了. 在经过这样的配置之后,我们在运行 npm run dev 的时候,跑的就是开发环境的接口.而我们运行 npm run build 打包项目的时候,打包的是服务器正式接口,我们就不用调来调去得了. 第二种方法: 可以使用 "

利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

一.环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新版本war包位置 生产环境服务器:192.168.13.51 /home/app/api-tomcat/webapps/api.war为生产环境war包位置     /home/app/api-tomcat/webapps/api为生产环境项目位置 /home/app/tomcat.bak/api/

通过jenkins平台自动发布程序到dokcer容器

前言: 最近在研究docker持续集成发布,从2015年8月份开始学习docker,两个月的时间学习了docker的基础理论,进行了项目通过Docker容器运行的多次实验.我想通过jenkins构建发布docker容器,试验了很久都没成功,目前完成了一个简单的发布流程,即通过jenkins构建代码,调用shell,更新到目标服务器的容器里. 一.Jenkins安装部署 1,部署java环境.(这里用的是jdk7和tomcat7) mkdir -p /data/webservercd /data/

取消生产环境/开发环境 控制台输出

取消生产环境控制台输出 const UglifyJsPlugin = require('uglifyjs-webpack-plugin'); module.exports = { devServer: { port: 8899, // 端口 }, lintOnSave: false, // 取消 eslint 验证 configureWebpack:{ optimization: { minimizer: [ new UglifyJsPlugin({ uglifyOptions: { compr

jenkins+maven+ansible实现测试环境完全自动发布

1.jenkins安装配置略2.配置maven [[email protected] maven]# cat /etc/profile.d/maven.sh export MAVEN_HOME=/usr/local/maven export PATH=$PATH:$MAVEN_HOME/bin [[email protected] maven]# source /etc/profile 3.jenkins里配置maven环境 4.新建自动风格项目-api_125_8181 5.编写ansilbe