Chinaunix首页 | 论坛 | 博客
  • 博客访问: 141188
  • 博文数量: 31
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 318
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-24 22:10
个人简介

2011.4 ~ 2015.7 就职于百度运维部,负责百度推广后台系统运维; 2015.7至今,就职于北京屏芯科技(互联网+餐饮),负责稳定性、安全、敏捷、速度等工作。

文章分类

全部博文(31)

文章存档

2016年(4)

2015年(27)

我的朋友

分类: 系统运维

2015-06-17 22:09:36

只说持续部署

* Jenkins *
配置尽量通用,在有新模块要部署时,尽可能少的修改JOB模板。
   * JOB_NAME规范: abc.deploy 必须要包含模块名(MODULE_NAME=abc),并与后面字段用.分隔
   * 调用机器管理工具通过MODULE_NAME,获取到所有应该部署的机器,如online.abc.ecs.bj
   * 部署时,制定要部署的版本号(VERSION). 作为Jenkins的参数传入,支持默认的latest参数
   * 版本号如果是latest,则去oss对应路径下获取真正的版本号
   * ansible-playbook内容尽可能通用,只通过参数标志不同,必须要传给ansible的参数
      * MODULE_NAME
      * VERSION
      * HTTP_PORT(生成模板所用)
   * 测试通过的发布包,上传到oss的固定位置,供部署时下载。

* 线上目录结构规范 *
/home/work
  |- apache-tomcat-7.0.${MODULE_NAME}
  |- jdk-1.8
  |- production
    |- ${MODULE_NAME}
      |- ${MODULE_NAME}_${VERSION}
  |- ${MODULE_NAME} -> /home/work/production/${MODULE_NAME}/${MODULE_NAME}_${VERSION}
    |- deploy_script
      |- run.sh
      |- java_env.sh
      |- tomcat_env.sh
      |- webserver_env.sh

* ansible-playbook *
使用roles, Don’t Repeat Yourself.
roles: 
  - java
  - tomcat
  - webserver

把整个部署过程抽象为以下几个任务
roles = java
  task: install jdk

roles = tomcat
  task: install tomcat
  task: configure tomcat (如server.xml中需要配置http_port和context_path)

roles = webserver
  task: download service package.tar.gz and decompress it
  task: stop service and check
  task: make symlink
  task: start service and check 

相关脚本:
阅读(7399) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

guofzhao2015-10-26 13:15:34

从访问量来看,貌似大家对ansbile + jenkins持续部署的热情很是高涨。有什么问题可以在评论区留言