用AnsibleDeploy构建自己的持续集成环境

本文介绍了如何使用AnsibleDeploy工具构建具备K8S与裸机环境部署能力的持续集成流程。详细阐述了从自定义变量、构建、发布、部署到回滚、重启等操作的实现,并展示了在K8S环境中Tomcat应用的流程设计。同时,提到了创建Tomcat应用构建容器Docker映像的步骤。
摘要由CSDN通过智能技术生成

目录

一、前言

1、目标环境
1.1 线上环境是IDC机房一组老旧的实体PC服务器,操作系统是CentOS6.5。
1.2 测试环境是本地机房一组裸机,不过为了让团队了解K8S环境,申请开了几个虚拟机安装K8S测试环境。

所以定制的部署流程要能同时具备向裸机环境部署的能力,也要具备在K8S集群中部署的能力。

2、部署工具

AnsibleDeploy 是一个管理并执行Ansible脚本的Web工具,我将在这里定制适合自己团队的部署流程。

3、效果展示

这里只例举K8S环境的定制效果。

1)添加的操作

第二章将详述部分操作的配置:构建发布并部署、回滚、重启、节点、日志
在这里插入图片描述

2)支持Gitlab指定分支提交后自动触发部署操作
  • 操作记录

在这里插入图片描述

  • AnsibleDeploy触发器设置

在这里插入图片描述

  • gitlab的CI配置文件.gitlab-ci.yml
deploy-to-test-k8s:
  script: curl -d "projectTag=$PROJECT_NAME:qa" -d "git_branches=$CI_BUILD_REF_NAME" -d "token=***" -X POST http://deploy.mydomain.com:8062/api/triggers/jobs
  only:
    - develop

deploy-to-online-green:
  script: curl -d "projectTag=$PROJECT_NAME:online" -d "git_branches=$CI_BUILD_REF_NAME" -d "token=***" -X POST http://deploy.mydomain.com:8062/api/triggers/jobs
  only:
    - /^release/green-.*$/
    - /^hotfix/green-.*$/

deploy-to-online-blue:
  script: curl -d "projectTag=$PROJECT_NAME:blue" -d "git_branches=$CI_BUILD_REF_NAME" -d "token=***" -X POST http://192.168.0.100:8062/api/triggers/jobs
  only:
    - /^release/blue-.*$/
    - /^hotfix/blue-.*$/
3)支持手动指定分支进行部署

在这里插入图片描述

4)日志样例

见文末附录

二、流程设计与实现:Tomcat for K8S

AnsibleDeploy中附带了K8S环境Java应用、Tomcat,裸机环境Tomcat、Java、Command应用的流程样例。

本章将讲解Tomcat for Kubernetes类型的应用流程设计与实现。

自定义变量

首先需要定义一些变量,用于填写与应用项目相关的配置,这些定义的变量AnsibleDeploy将会在执行操作时写到vars.sh文件中,可以在脚本里用$VAR_NAME的格式进行引用。

1、应用变量定义

在这里插入图片描述

2、版本变量定义

在这里插入图片描述

操作1:构建、发布并部署

1、操作入口:play.sh
1)流程
启动构建容器
显示构建过程
将生成映像部署到K8S
清理仓库中3个版本前的旧Image
环境变量定义
build-operation.yml
followJobLog
deploy-operation.yml
delete-image.groovy
2) 脚本实现
#!/bin/bash
PRG="$0"
PRGDIR=`dirname "$PRG"`
cd $PRGDIR
export ANSIBLE_HOME=$HOME/ansible
export MANPATH=$MANPATH:$ANSIBLE_HOME/docs/man
export PYTHONPATH=$PYTHONPATH:$ANSIBLE_HOME/lib
export PATH=$PATH:$ANSIBLE_HOME/bin
export LANG=en_US.UTF-8
# AnsibleDeploy系统中为项目、版本、操作等定义的变量保存在vars.sh中
if [ -r "$PRGDIR/vars.sh" ]; then
  . "$PRGDIR/vars.sh"
fi
# 因为AnsibleDeploy本身启动时有一个JAVA_OPTS环境变量,
# 其中开启了JMX端口,所以此处需要定义一个新的变量覆盖它,
# 以免执行groovy脚本时因端口重复无法启动
export JAVA_OPTS=
set -o errexit \
    && ansible-playbook -i hosts build-operation.yml \
    && kube-api $cluster_name followJobLog publish-$apptag-$version "BUILD SUCCESSFUL in \d+"\
    && ansible-playbook -i hosts deploy-operation.yml \
    && groovy delete-image.groovy
2、build-operation.yml

这是一个Ansible脚本,负责生成K8S构建脚本并执行

1) 流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值