Jenkins+Ansible+Gitlab自动化部署实践

Stella981
• 阅读 462

Jenkins+Ansible+Gitlab自动化部署实践

Jenkins+Ansible+Gitlab自动化部署实践

yx1991523 关注 0人评论 15581人阅读 2018-04-17 11:33:11

   最近一直在学Ansible,详见上篇博客,但是总感觉使用ssh命令行操作有点low,另外官方也有收费版的Ansible Tower可视化软件,但是由于不开源,可以参考的资料很少,官方倒是有一些英文手册,但都是只说了功能,并没有操作步骤,对于我们来讲实在是难以上手,但是还是想试试到底它有什么高明的功能,于是下载了官方的试用版体验一把。

   最初的体验还是不错的,可以在页面上添加主机,添加任务,添加项目等等,并且执行起来效果也很舒服,如下图:

Jenkins+Ansible+Gitlab自动化部署实践

有各种各样的状态和信息,并且以彩色显示,一眼就能看出成功与失败。但是正要兴奋的时候,问题来了,测试机器有一两台很好说,如果是大量集群,有成百上千台机器怎么办呢?我在inentory添加host的页面只看到了如下界面

Jenkins+Ansible+Gitlab自动化部署实践

难道只能一台一台添加吗?这岂不是开玩笑?我继续检索相关文档,官方只是说可以通过云主机的source添加(如下图),可是我们不是云主机啊,就是物理机,难道就没有办法了吗?

Jenkins+Ansible+Gitlab自动化部署实践

经过一天的检索依然未果,如果各路大神有办法批量添加主机请联系我,qq1848473726.谢谢。

既然付费的软件都行不通,那估计还是闭源就无人问津,社区也就不活跃,也就没办法帮他优化,那作为一个互联网人还是诉诸于开源吧,经过检索资料,查到如下一篇文章,叫《Jenkins+Ansible+Gitlab自动化部署三剑客》(http://www.showerlee.com/archives/1880)。所以我就模仿前辈的方法自己做了一个nginx的部署实验。

一、开通github账号,并创建仓库

二、在虚拟机上安装Java、resin(下载二进制包即可,tar.gz)和ansible(yum install ansible –y)

三、下载jenkins的war包(http://mirrors.jenkins.io/war-stable/)到resin的webapps文件夹,并重命名为ROOT.war

四、启动resin(./bin/resin.sh start)

五、在windows操作系统上编写playbooks,并用git-bash终端上传至github仓库,这一步可以参考该文章:https://blog.csdn.net/qq_31852701/article/details/52944312 需要注意的是如果使用ssh方式要先把主机的公钥上传至GitHub,该步骤可参考:https://blog.csdn.net/qq_35246620/article/details/69061355?locationNum=11&fps=1

六、登录刚刚建好的jenkins服务器

1、新建项目

Jenkins+Ansible+Gitlab自动化部署实践

2、配置项目

Jenkins+Ansible+Gitlab自动化部署实践

3、填写代码,确认项目

Jenkins+Ansible+Gitlab自动化部署实践

4、上线演示

为了保证安全,可以分为两个下拉菜单,一个是单台主机,另一个为主机组,如下图。nb441为单台主机的主机名,web为一个主机组。第一次建议部署一台主机,测试后没问题再部署整个组。

Jenkins+Ansible+Gitlab自动化部署实践

5、上线过程展示

Jenkins+Ansible+Gitlab自动化部署实践

6、当单台部署没问题之后,方可部署整个主机组,如下图。

Jenkins+Ansible+Gitlab自动化部署实践

至此,演示完毕,如果需要演示代码可以去我的github下载(https://github.com/yx1991523/ansibledemo.git),感谢大家支持。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Jenkins+Ansible+Gitlab自动化部署三剑客
JenkinsAnsibleGitlab自动化部署三剑客小中大showerlee2016031113:00Ansible(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这