CI/CD持续集成与持续交付(五)钉钉报警、ansible自动化构建部署

一、钉钉报警

 接下来我们在上文流水线任务的基础上,利用jenkins中的插件,做一个钉钉报警系统。无论部署上线是否成功,都在钉钉群里报警@某人。

安装插件

新建钉钉群

首先我们需要在钉钉上创建一个群,这个群是用来接收我们的告警信息的: 

 

添加智能群助手

 选择自定义机器人

注意:此webhook 一定要保留。在jenkins系统设置中添加钉钉机器人:

保存后再进来就有机器人的UUID了:

我们点击测试后:

 

我们再进入devops项目中进行配置:

 jenkins钉钉官方文档:在 pipeline 中使用 | 钉钉机器人插件

 在之前的pipline代码之后添加:

保存后立即构建:

 构建成功!我的钉钉上也收到了消息:

我们注释调登陆代码,并从server6 执行节点上退出harbor仓库的登陆来模拟项目失败的情况:

 

再次构建:

 构建失败,钉钉提示:

二、将pipline代码放入gitlab中做版本控制

 我们的代码写在pipline中是不太严谨的,接下来我们要在gitlab上写pipline,做到可以进行版本控制。我们先在gitlab中新建一个项目:

使用ssh克隆将其复制到本地:

进入devops创建Jenkinsfile,将刚刚pipline的代码复制进去,上传到gitlab中:

此时我们进入jenkins 的devops项目中进行修改,将所有的流水线都放在gitlab中做控制:

去掉触发器:
 

 

 保存。现在我们jenkins中的流水线和项目代码都是在gitlab中拿的。接下来构建项目:

项目构建成功,这说明我们将整个流水线代码放入gitlab中做版本控制是没有问题的。

三、ansible自动化部署构建

为了实验方便,我们接下来要完成的是,在gitlab中写好ansible 的相关配置文件,持续集成到jenkins主机server4,同时server4作为ansible管理端进行持续交付,将ansible的playbook.yml的内容部署到server5、6、7上。

jenkins设置执行节点

首先在节点master上开3个子节点,将builder-1删掉:

安装ansible

在jenkins主机上安装ansible:

注:安装时会有许多依赖项,建议提前配置好阿里云的centos7的源。

gitlab中新建项目

 将ansible项目clone到gitlab本地:

新建测试主机

我们将server5、6、7作为我们的测试主机,删除之前的容器并停掉docker: 

 即jenkins主机server4作为ansible管理端,需要推ansible的playbook 到server5、6、7上。

编辑ansible配置文件

在gitlab主机上项目里,编辑ansible配置文件:

 

同时我们建立了两个组,一个test测试组,一个prod生产组。编辑playbook:

创建模板 index.html.j2 ,目的是为了获取主机名:

推送至gitlab

创建完成后提交git推送:

 

jenkins中新建项目并配置

接下来我们就要在jenkins中做拉取了,在jenkins中新建项目:

设置参数化构建,添加prod和test两个参数,让用户选择往哪个组的主机推playbook: 

 添加git:

ansible用户设置

在ansible的配置文件中写了我们是通过连接远程的devops用户来操作的,所以我们在远程主机server5、6、7上创建devops用户同时赋予权限:

我们要在jenkins用户和devops用户之间做免密:

 jenkins在访问server5时,以devops用户身份访问免密。server6、7同理:

jenkins脚本设置

接下来再进入jenkins的playbook项目配置,构建时直接执行shell脚本: 

构建测试

选择test进行构建:
 

 运行成功:

运行成功说明test组server5、6都已经成功安装httpd并更改发布文件index.html,我们来查看一下:

 

没有问题,都是从index.html.j2 中获取的本机的hostname。 说明ansible通过CI/CD进行持续集成交付没有问题。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
为了减轻多服务器配置和操作工作量以及安全性,特研究此课题,理论上可以同步所有想同步的文件,并且做到一键操作,不需要切换用户,不需要多次操作脚本,中途不需要输入任何字。 1, hosts文件 2, play.yml文件 剧本文件,按标准放到tasks文件夹内,因后面脚本写了路径,如果不愿意放tasks文件夹,需要改后面sh脚本路径参数 3, rsync_notice.py文件 钉钉机器人发送消息文件,此文件放在tools文件夹内,会调用备份日志进行分析,过滤后,发送到钉钉群内。各位同事可修改文件里的Webhoo为自己的机器人key 4, deploy.sh 文件 调用py钉钉文件发消息,并且处理备份日志,删除近期日志等后续事宜,请放在tools文件夹内 1.3.3. 功能基本介绍 1, 在对应脚本里基本都有注释,这里简单介绍下 2, 剧本文件需要在主控机器(备份机器),root用户下运行,运行一次即可,后续sh及py脚本会自动处理。一键搞定所有事情,中途无需手动干预; 3, 自行修改host文件为自己项目地址,bak为备份文件服务器,为安全起见,hosts文件进行了vault加密,密码123456,运行剧本文件,请加—ask-vault-pass 4, 再次提醒,在脚本运行完成后,为保险起见,可将hosts文件中的root密码删除,或修改复杂密码,不会影响后续同步功能。 5, 剧本流程介绍: 1) 主控被控端安装rsync及相关依赖软件; 2) 主控与被控端添加备份用户,rsync; 3) 主控端即备份服务器建立备份文件夹,设置归属用户; 4) 主控及被控端自动切换rsync用户,使用rsync用户配置免密访问所有被控端,即便服务器被黑,rsync用户访问也做不了什么; 5) 主控端即备份服务器使用rsync用户增加同步、日志记录、钉钉发送消息等定时任务; 6) 定时任务里各个需要同步的源地址及项目名称,请自行修改; 7) 日志为叠加记录,钉钉消息发完后,会按日期进行备份,同时删除原日志,因为钉钉消息每天都发,避免冗余数据; 6, 钉钉消息脚本介绍: 1) 访问实时备份日志,考虑到钉钉消息,只需要知道同步是否成功,其余数据不关心,所以读取后,进行数据处理,取出服务器地址、成功标识,或未成功标识; 2) 调用钉钉机器人接口,采取markdown形式,此形式可以定义一个固定的标题,比如:rsync同步情况汇总,这样在钉钉机器人安全设置里,只需要将标题设为关键字即可,具体发送内容千奇百怪也没关系。另外两种方式各有弊端,未研究。
Ansible是一种自动化IT工具,可以自动化部署、管理和配置系统。在使用Ansible自动化部署OpenGAS系统时,您需要以下步骤: 1. 配置目标主机:确保目标主机安装了必要的软件和服务,并且可以从Ansible服务器访问。 2. 创建Ansible playbook:使用YAML编写Ansible playbook文件,定义要执行的任务。 3. 配置Ansible inventory:创建Ansible inventory文件,指定要部署OpenGAS系统的主机。 4. 运行Ansible playbook:使用ansible-playbook命令运行playbook,让Ansible自动化地完成部署和配置工作。 以下是具体步骤: 1. 安装Ansible:使用系统包管理器或从官方网站下载安装Ansible。 2. 配置目标主机:确保目标主机上安装了必要的软件和服务,例如Java、Tomcat、MySQL等,并且可以从Ansible服务器访问。 3. 创建playbook文件:使用YAML编写playbook文件。例如,可以创建一个名为opengas.yml的文件,其中包含以下内容: ``` - name: Deploy and configure OpenGAS hosts: opengas_servers become: yes tasks: - name: Install Java apt: name: openjdk-8-jre-headless state: present - name: Install Tomcat apt: name: tomcat8 state: present - name: Deploy OpenGAS WAR file copy: src: /path/to/opengas.war dest: /var/lib/tomcat8/webapps/opengas.war notify: - restart Tomcat - name: Configure OpenGAS database mysql_db: name: opengas state: present - name: Start Tomcat service service: name: tomcat8 state: started handlers: - name: restart Tomcat service: name: tomcat8 state: restarted ``` 在上面的例子中,我们使用apt模块安装Java和Tomcat,使用copy模块将opengas.war文件复制到Tomcat的webapps目录中,使用mysql_db模块创建MySQL数据库,使用service模块启动Tomcat服务。 4. 配置Ansible inventory:创建一个名为inventory的文件,并指定要部署OpenGAS系统的主机。例如: ``` [opengas_servers] opengas.example.com ``` 5. 运行playbook:使用ansible-playbook命令运行playbook。例如: ``` $ ansible-playbook opengas.yml -i inventory ``` 在运行过程中,Ansible将自动连接到目标主机,并执行定义在playbook文件中的任务。完成后,您可以在浏览器中访问OpenGAS系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值