首页>参考读物>计算机科学与技术>软件与程序设计

OpenStack CI/CD:原理与实践
作者 : 董文娟 尚小冬 张军 著
出版日期 : 2018-10-25
ISBN : 978-7-111-61191-2
定价 : 69.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 292
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容介绍
中兴通讯OPNFV开源团队不仅技术实力雄厚,而且一直致力于为OPNFV团队做贡献,团队的贡献值在社区里排名全球前3。本书由中兴OPNFV开源团队撰写,从系统管理员角度阐述了OpenStack CI/CD系统的组成、架构和原理,涉及从代码提交到测试、部署的各个环节,本书提到的 Gerrit 服务器管理、JJB、Zuul、Nodepool等内容国内都鲜有介绍,本书能让您快速了解这套系统。
全书共11章,在逻辑上分为4个部分:
第一部分(第1~2章) 基础篇
首先从宏观上对DevOps的发展、文化、工具和转型做了介绍,然后重点介绍了OpenStack CI/CD的概念、功能、工作流程和架构等,这是阅读本书的基础;
第二部分(第3~9章)技术篇
从系统管理员的视角,对OpenStack CI/CD中的每一项关键技术都进行了讲解,包括版本控制系统(Git)、代码评审系统(Gerrit)、持续集成系统(Jenkins)、门控系统(Zuul)、资源管理系统(NodePool)、日志服务器、日志分析系统、公共组件等。
第三部分(第10章) 经验篇
主要总结了团队在OpenStack CI/CD上积累的经验、方法和案例,以及如何进行裁剪、扩展和定制化修改。
第四部分(第11章) 优化篇
总结了当前解决方案中存在的不足和可行的优化方案,以及社区当前经历的变化和未来的演进路线。

图书特色

由中兴通讯OPNFV开源团队撰写,团队对社区的贡献位居全球前3
从系统管理员的角度阐述OpenStack CI/CD系统的组成、架构和原理,是中兴技术团队在OpenStack CI/CD领域的实践经验总结

图书前言

本书由来
过去十年,中国电信业快速发展,语音和数据业务需求极大提升,尤其当以安卓、iPhone为代表的智能手机推出后,数据业务的增长速度远超预期。近三年,移动数据业务每年以大约90%的复合增长率增长,这对设备商交付新版本的速度提出了更高的要求。中兴通讯在2013年就启动了无线接入网项目移植虚拟化技术预研,希望实现软硬件解耦以缩短版本交付周期,满足运营商业务飞速发展的需求。目前,这些虚拟化研究成果已经成为5G的基础技术标准。
虚拟化预研项目不仅涉及电信网元本身的适配,还涉及开发云操作系统和制定操作管理规范、接口标准。而云操作系统是虚拟化的关键技术之一,综合考虑云操作系统开源社区影响力、项目热度、扩展性、可维护性、业界认可度等因素,项目团队选择OpenStack作为云操作系统的开源解决方案。但电信领域常见的需求,如网口绑定、高速转发、巨页(Huge Page)、CPU绑核等功能在OpenStack社区尚不支持,如何把虚拟化的电信网元(Virtual Network Function)运行在OpenStack上,并提供高性能服务,是项目面临的巨大挑战。在此背景下,笔者所在的团队开始深入参与到OpenStack开源社区的开发工作中,推动社区一起解决这些关键技术问题。
计算、存储和网络是OpenStack虚拟层三大基础设施服务,其中存储(Cinder)项目涉及厂商的硬件集成。Cinder项目制定了一套API接口规范,厂商的存储设备若需要集成,需向社区提交遵守该接口规范的驱动程序,并搭建一套CI系统来验证,该CI系统需要遵守社区第三方CI规范。
图0-1是一个简化的第三方CI系统架构图,厂商需要准备的有:
第三方CI系统,即本书所要讲述的OpenStack CI系统;该系统连接厂商的存储硬件,并与社区的Gerrit系统连接,监控stream-events事件流;当社区Gerrit有新的变更和补丁提交时,将变更代码与厂商提供的硬件环境进行集成测试并向社区Gerrit反馈测试结果;
本地OpenStack资源池,为第三方CI系统运行提供虚拟机资源;
存储设备,用于对变更代码进行验证。

图0-1 第三方CI架构图
通过这种机制,Cinder项目可以及时发现变更代码的兼容性问题,厂商也能及时发现变更代码对设备驱动的影响。所有第三方CI系统的执行结果都会显示在社区Gerrit系统每个代码变更的评审记录中。
OpenStack CI系统提供了一套动态调度测试任务的方法,极大提升了开发效率,具体优点如下:
提高CI系统的并发性,开发人员的多个变更测试任务不需要在环境排队等待执行,只要本地OpenStack资源池资源足够多,就可以并行执行所有测试任务,这可以显著减少开发人员的等待时间;
提高测试任务的可管理性,使用YAML文件描述测试任务,易阅读、评审,可进行版本管理,容易在不同团队之间复制和重用;
可定制虚拟机基础镜像,如支持不同的操作系统、不同的软件栈配置,增加了在项目实际使用中的适用性和灵活性;
提高测试任务的准确性,每次测试任务都在相同的环境和配置下执行,不存在静态环境中测试任务执行后对软件、配置文件等清理不完整而导致测试任务执行不一致的问题;
可复用云环境,统一运维资源,减少维护开销并提高资源利用率。
这套CI系统不仅适用于OpenStack社区组件研发,也适用于电信网元的开发。基于此,笔者所在的团队潜心研究OpenStack CI这套系统,结合自身需求,增强了CD的方案和实践,最终形成一套完整的CI/CD解决方案。这套解决方案在团队得到广泛应用,无论是内部的维护工作,还是对外的技术合作,都由该CI/CD系统提供技术支撑。公司数字化转型战略和敏捷实践触发了内部项目对CI/CD技术的重视,越来越多的团队渴望获得和提升这方面的技能。所以,笔者所在的团队作为开源技术的先锋,在给内部进行培训和技术转移的过程中,诞生了把对该系统的经验、实践汇总整理并出版成书的想法。
了解OpenStack的人很多,但对OpenStack CI系统有实际应用经验的人很少,主要是因为OpenStack CI系统目前只用于OpenStack社区基础设施的管理。国内DevOps思想和技术在最近两年才得到大规模接受和实践,大家对了解CI/CD相关技术的需求非常高。笔者很荣幸把这套适用性广、定制性强和并发性高的CI系统介绍给大家,同时回馈社区,推广和普及这些基础设施技术。目前,国内外几乎没有该套系统的完整描述,因其组件众多,且搭建该系统需要投入大量的人力物力(笔者团队搭建该系统花费了近两个月的时间,这还是在使用社区已有安装脚本进行最简安装的情况下)。从目前已经接入的第三方CI环境来看,国内搭建OpenStack CI系统的公司凤毛麟角,说明在OpenStack技术如此普及的情况下,国内公司对这套OpenStack CI系统仍然知之甚少。希望本书能让读者少走弯路,事半功倍。
本书结构
本书从逻辑上可分为四部分:
第一部分(第1章和第2章)对DevOps的发展、文化和转型进行了简单说明,并引入本书的重点内容OpenStack CI/CD说明其对DevOps转型的重要性。
第二部分(第3~9章)以系统管理员视角对OpenStack CI/CD中的每一项关键技术进行详细的分析和阐述,这些关键技术包括:
版本控制(Git)与代码评审(Gerrit)系统,开源社区最常用的代码管理和代码评审工具,Gerrit系统与本书介绍的持续集成系统和门控系统进行密切配合,共同完成整个开发流程。
持续集成系统(Jenkins),最为流行的一款开源持续集成工具,用于代替人工进行重复的持续集成工作,同时也为促进持续交付提供技术支撑;该章还介绍了JJB(Jenkins Job Builder)工具,通过YAML文件来定义Jenkins任务,提升Jenkins任务的开发和运维效率。
门控系统(Zuul),确保主线稳定,仅当与变更相关的所有测试都通过后,才会将变更合入相应的目标分支中。它保障了测试任务获得最大程度的并行,且在发生错误的情况下,自动回滚;它支持指定项目间变更依赖关系,解决跨项目集成问题,致力于守护项目及关联项目。
资源管理系统(Nodepool),通过在OpenStack资源池中动态创建虚拟机并作为Jenkins
Slave节点添加到Jenkins的资源池中,确保不同的测试之间互不影响;在测试结束后,删除使用过的虚拟机,保证对每个测试任务都能提供一致的测试环境;此外,Nodepool还集成了镜像制作功能,支持测试环境的定制开发。
日志服务器,对所有测试任务提供统一的日志存储服务,以便回溯测试故障。
日志分析系统,将测试过程中的测试日志导入Elasticsearch中,便于出现问题时,快速检查和分析故障。
公共组件,重点介绍了支持OpenStack CI系统组件之间进行协作和通信的系统,包括任务分发(Gearman)、消息队列(ZeroMQ)和分布式协调服务(ZooKeeper)等组件。
第三部分(第10章)描述团队在社区工具和经验的基础上的经典实践,以及如何进行裁剪、扩展和定制化修改以满足团队需求。
第四部分(第11章)探讨当前解决方案中存在的不足和可行的优化方案,并描述了社区当前正在经历的变化和未来的演进路线。
尽管本书各章节功能相对独立,笔者建议顺序阅读第3~5章,因为这些章节大量使用了前序章节的基本概念和术语;其他章节可以根据需要进行翻阅。
本书读者
本书面向基础设施管理团队、DevOps团队或致力于了解CI/CD的技术人员,可作为学习OpenStack社区CI/CD基础设施解决方案的教材,协助你高效搭建社区第三方CI系统。
勘误与交流
笔者团队在编写本书的过程中虽已经进行了大量的内部评审和检验工作,但因时间紧、精力有限,难免会出现一些错漏,敬请广大专家和读者批评、指正。你可以把与本书相关的意见或建议发送到电子邮箱openzero@aliyun.com中。
本书中团队实践和示例代码都可以在GitHub上进行下载,读者可以尝试使用并与我们进行探讨。
致谢
本书的创作团队是一支拥有丰富专业技术经验的团队,团队成员有十年以上电信领域的工作经验、四年以上开源社区技术研究和贡献经验。本书是团队智慧和多年经验的结晶。使用本书介绍的技术和经验,希望可以帮助你的团队高效管理公司内部的基础设施,节省大量人力资源,并提供快速而稳定的服务。
本书由创作团队在业余时间编写,占用了团队成员很多家庭生活的时间,每位成员都付出了极大的努力并克服了诸多困难,对此表示感谢。感谢所有团队成员不厌其烦,一次又一次地评审修订,以认真严谨的态度验证了本书所有的代码实践。感谢董文娟在本书编写过程中有力地组织、协调和推进,没有你辛勤的付出,本书不可能顺利完成。
在此,还要感谢我的领导潘峰、王前和施嵘,没有你们的信任和支持,不可能有本书的诞生。感谢中兴学院的闫林院长对本书的指导和建议。感谢OpenStack基础设施团队设计出如此优秀的工具和系统,感谢你们在日常工作中及时答疑解惑。感谢机械工业出版社的杨福川和李艺编辑的信任和支持,及时更正了本书中较多的排版问题。

张 军

上架指导

计算机\程序设计

封底文字

OpenStack 作为基于社区开发的大型开源项目的典范,在过去的七八年里获得了巨大的成功。在产品背后,支撑其稳步发展的是一套高度自动化的持续集成系统。这套系统能够让上千名贡献者协同工作,一起构建一个如此复杂的基础设施(即服务产品),说明它必有其过人之处。本书将带你洞悉其中的各个细节,对企业构建满足自身需求的持续集成系统具有很大的借鉴价值!
——孙振鹏  国际最佳实践管理联盟主席/EXIN 国际信息科学考试学会亚太区总经理
在敏捷开发大行其道的时代,CI/CD的自动化变得非常重要。本书深入介绍了OpenStack CI/CD系统的组成部分及相关实践,对于致力于构建DevOps系统的企业和软件开发人员来说,具有重要的借鉴意义!
——何宝宏  中国信息通信研究院云计算与大数据研究所所长
随着云计算的兴起,软件架构已经发生了巨大的变化,对集成测试提出了更大的挑战。本书选取了典型的云计算平台OpenStack 的CI/CD架构,由浅入深,由理论到实践,详细阐述了OpenStack CI/CD系统及各组件的功能,并应用该系统定制企业级CI/CD,对建设企业级DevOps有很好的借鉴意义。
——袁春风  南京大学计算机系教授
OpenStack是著名的开源云计算管理平台,CI/CD是其关键特性。本书的作者团队是一支卓越的敏捷自组织团队,他们深耕社区,回馈社会。他们创作的《OpenStack CI/CD:原理与实践》全面剖析了OpenStack CI/CD的组成部分,既有深入浅出的理论介绍,又有生动丰富的案例分享,是本领域的必备佳作。
——闫林  中兴通讯IT技术学院副院长

作者简介

董文娟 尚小冬 张军 著:作者介绍
董文娟
中兴通讯高级软件工程师,2015年参与开源社区,从事故障管理和根因分析等相关的工作,是OpenStack社区Vitrage项目和OPNFV社区Doctor项目的核心贡献者。一直从事企业内部CI/CD方面的研究,对CI/CD的基础设施搭建有丰富的实践经验,致力于研究构建企业级高性能、高可靠的DevOps平台的解决方案。
尚小冬
中兴通讯资深系统工程师,近10年通信系统产品平台研发经验,发表多篇专利。2015参与OpenStack、OPNFV和ONAP等开源社区,目前为OPNFV社区Parser项目PTL。对OpenStack各个核心组件和OpenStack CI/CD均有较深入的理解和深度实践,目前聚焦于Cloud Native相关产品的设计和实现。
张军
中兴通讯首席架构师,超过15年的通讯系统的设计和研发经验,发表专利约15篇。2014年起,带领团队进行NFV转型,负责从基于OpenStack的IaaS平台到基于Kubernetes的PaaS平台的架构设计。带领团队积极参与外部OpenStack、OPNFV和CNCF等外部社区贡献,在公司内承担开源布道的工作,推动公司研发转型。目前是中兴通讯在OPNFV的TSC代表和Pharos项目PTL。

推荐序

Foreword?推荐序一
2018年7月12日,我正在美国波特兰出差,很荣幸收到张军的邀请,为他们团队最新撰写的书写序。与OpenStack相关的书籍在国内已经有很多了,而且OpenStack在国内的发展也进入了一个成熟期,但是特别讲OpenStack CI/CD或者定制化CI/CD系统的书籍,市场上鲜有耳闻。恰逢此时,7月14日,美国商务部正式发布公告,宣布解除对中兴的拒绝令。中兴通讯也在官方微博上发布一条振奋人心的信息:“满怀信心再出发!”。相信此刻中兴和上万员工的心情是激动的,我们所有人心情也是激动的。反思这件事情,我们的教训是深刻的,没有技术的自主创新和自主可控,就意味着将来可能要被别人牵着鼻子掐着脖子。因此,在我们专注的软件领域,我们要坚定不移地积极地投入开源事业。
言归正传,认识张军是通过OPNFV(Open Platform Network Function Virtualization)社区,他是中兴通讯在OPNFV技术指导委员会的代表,在我的印象中,他是一个十分严谨的人。当他把本书草稿的电子版发给我后,我粗略地看了一遍。这本书是他和他的团队对OpenStack CI/CD系统各个组件开发和研究多年的成果,也是团队多年实践和经验的总结。除了OpenStack系统,现在很多软件发行版比如Linux、Android、OPNFV,甚至是边缘计算项目StarlingX都可以充分利用CI/CD系统。正如他在书中所提到的,OpenStack CI的框架目前只用于OpenStack社区基础设施的管理,了解前台的OpenStack的人很多,但是由于CI/CD是在后台的,接触和了解后面CI/CD的开发者却很少。所以,对于一个要全面掌握系统的开发人员来说,了解和熟悉CI/CD也是十分必要的。而且,CI/CD的适用范围很广,定制化非常高,熟悉了OpenStack CI/CD,则一通而百通。
书中除了介绍OpenStack CI/CD中的关键技术和组件之外,还有一大特色是分享了中兴团队在社区CI/CD工具集上的实践经验,同时指导读者如何定制化和修改OpenStack CI/CD系统,包括剪裁和扩展,即告诉读者如何以一通百。这一点是非常有益的,因为针对不同内部使用需求,针对不同项目需求,是不能直接将OpenStack CI/CD拿来使用的,在这点上我深有体会。举个例子,我现在在英特尔公司从事边缘计算和StarlingX发行版的开发工作,第一个艰巨任务就是要编译和管理StarlingX的众多依赖包,并快速搭建起StarlingX的CI/CD体系。目前这项任务由以前负责Linux开发的墨西哥团队执行,同时该任务也是该边缘计算其他所有功能开发的前提和依赖。它不是简单OpenStack CI/CD的拷贝,在这条路上我们也费了些周折。如果墨西哥团队能了解OpenStack CI/CD,并掌握CI/CD的定制化,以后在任何项目的CI/CD搭建道路上就可以少走很多弯路,相信本书对需要根据项目搭建并定制CI/CD系统的读者有很大的帮助。
另外,开源的持续集成/部署平台Zuul项目最初是为OpenStack CI测试开发的,后来被许多不同的组织所贡献和使用。在今年5月份的OpenStack Vancouver Summit上,OpenStack
基金会宣布Zuul项目发布第3版,并且正式成为由OpenStack基金会托管的第三个独立项目。这一点也足以说明CI/CD系统对一个项目的重要性。需要了解Zuul项目的读者,在本书中也能找到相应的答案。
最后,感谢张军和他的团队为OpenStack社区,为开源软件社区贡献了这样一本好书,希望众多OpenStack的开源项目的开发人员、运维人员,以及爱好者们能在书中找到它的价值,并获得帮助。

王庆博士,英特尔开源技术中心网络和存储开发经理,OpenStack基金会个人独立董事



Foreword?推荐序二
读了董文娟等同事创作的这本书,我感到非常高兴,并由衷感谢创作团队的杰出贡献!
云计算、大数据、人工智能是21世纪发展的基石和助推器,它们将共同促进未来生产力的提升。电信设备在往NFV、云原生演进的过程中越来越多地使用和借鉴了IT思想和工具链。这些新技术的应用,加速了整个产业链的发展。5G就是典型的综合应用场景,云原生、微服务和HTTP接口规范,奠定了5G蓬勃发展的基础。中兴通讯在云计算领域深耕多年,致力于利用先进的技术,研发更快速度、更大容量、更高安全、更具弹性、更低成本的云计算基础设施。OpenStack已经成为开源云计算领域的事实标准,其社区拥有一套完整的、标准化的、自动化的持续集成测试平台,它不仅适用于开源社区本身,也有助于电信产品的研发。本书记录了中兴通讯在这个领域的探索、研究和实践,对于构建自动化的测试系统具有很好的借鉴意义,对于公司数字化转型起到了基础支撑作用。
中兴通讯非常认同和重视开源社区,且致力于建立开放合作的生态环境。公司加入了全球多个开源的社区,成为其中的关键伙伴,比如Apache、CNCF、OpenStack和OPNFV等。中兴通讯在NFV领域技术的发展,离不开与社区的合作。中兴通讯作为最负社会责任的高科技企业之一,我们非常愿意将我们的知识、经验和服务分享到社区,回馈到社会。
本书创作团队是公司在开源社区合作的典范,是一个优秀的自组织、自管理、自激励的开放合作的敏捷团队,他们内通外联与社区合作,共同推动NFV和开源技术的发展演进。本书是团队在OpenStack CI/CD领域多年的研究和实践总结,很乐意将这本优秀的著作分享给大家!
最后再次感谢创作团队的重大贡献,并欢迎各位读者开启精彩的阅读之旅!

施嵘,中兴通讯无线研究院院长

图书目录

推荐序一
推荐序二
前言
第1章 DevOps 1
1.1 DevOps简介 1
1.1.1 软件开发模型 2
1.1.2 DevOps发展历史 2
1.1.3 DevOps循环 3
1.1.4 DevOps价值 4
1.2 DevOps与团队文化 4
1.3 DevOps工具链 6
1.4 DevOps转型 7
1.5 本章小结 8
第2章 CI/CD 9
2.1 CI/CD介绍 9
2.1.1 持续集成 9
2.1.2 持续交付 11
2.1.3 持续部署 12
2.1.4 CI/CD工作流 12
2.2 OpenStack CI/CD 14
2.2.1 当前CI/CD系统的形态 14
2.2.2 OpenStack CI/CD架构 15
2.2.3 CI/CD系统工作流程 18
2.3 本章小结 19
第3章 版本控制(Git)与代码评审 (Gerrit) 20
3.1 版本控制系统(Git) 20
3.1.1 Git仓库(repository) 21
3.1.2 Git分支(branch) 21
3.1.3 Git提交(commit) 21
3.1.4 Git标签(tag) 22
3.1.5 Git引用(refs) 22
3.2 代码评审工具(Gerrit) 23
3.2.1 架构 24
3.2.2 安装 25
3.2.3 项目配置 27
3.2.4 CI/CD系统对接 32
3.3 本章小结 33
第4章 持续集成系统(Jenkins) 34
4.1 Jenkins介绍 34
4.1.1 Jenkins是什么 34
4.1.2 Jenkins工作原理 35
4.1.3 部署Jenkins 37
4.1.4 插件管理 39
4.1.5 安全管理 44
4.1.6 创建Slave 46
4.1.7 创建Job 49
4.2 Jenkins Job Builder 57
4.2.1 安装JJB 57
4.2.2 配置JJB 57
4.2.3 使用JJB 58
4.2.4 JJB语法详解 58
4.3 Python Jenkins 70
4.3.1 安装python-jenkins 70
4.3.2 使用python-jenkins 70
4.4 本章小结 71
第5章 门控系统(Zuul) 72
5.1 Zuul组件介绍 73
5.1.1 Zuul工作原理 75
5.1.2 Zuul Server 76
5.1.3 Zuul Merger 79
5.1.4 Zuul Cloner 80
5.1.5 Zuul客户端 83
5.2 pipeline 83
5.2.1 并行测试 83
5.2.2 跨项目测试 85
5.2.3 跨项目依赖 87
5.3 连接器 88
5.3.1 Gerrit 89
5.3.2 SMTP 89
5.4 触发器 90
5.4.1 Gerrit 90
5.4.2 Timer 91
5.4.3 Zuul内部事件 92
5.5 报告器 92
5.5.1 Gerrit 92
5.5.2 SMTP 92
5.6 配置指导 93
5.6.1 pipeline 95
5.6.2 Jobs 101
5.6.3 Projects 103
5.6.4 Project Templates 104
5.7 本章小结 106
第6章 资源管理系统(Nodepool) 107
6.1 Nodepool简介 107
6.1.1 Nodepool引入的背景 107
6.1.2 Nodepool的功能 108
6.2 安装Nodepool 110
6.2.1 准备外部依赖服务 110
6.2.2 安装Nodepool 113
6.3 Nodepool的设计原理 113
6.3.1 资源管理(Nodepoold) 115
6.3.2 镜像管理(Nodepool-builder) 117
6.3.3 客户端(Nodepool Client) 119
6.4 配置Nodepool 129
6.4.1 云相关配置 129
6.4.2 Jenkins相关配置 137
6.4.3 镜像配置(diskimages) 140
6.4.4 其他配置 142
6.5 镜像管理系统 144
6.5.1 DIB介绍 145
6.5.2 DIB原理 146
6.5.3 定制镜像 155
6.6 本章小结 156
第7章 日志服务器 157
7.1 日志服务器的作用 157
7.2 安装和验证 158
7.3 使用方法 159
7.3.1 在Jenkins中使用日志服务器 159
7.3.2 如何获取日志文件 160
7.3.3 日志文件定期归档和清理 161
7.4 本章小结 161
第8章 日志分析系统 162
8.1 ELK Stack概况 162
8.2 日志分析系统架构 163
8.3 Log Pusher 165
8.3.1 处理流程 165
8.3.2 配置 165
8.4 Logstash Indexer 166
8.4.1 hello world 166
8.4.2 Logstash管道 167
8.4.3 管道配置 167
8.4.4 管道配置实例 169
8.5 Elasticsearch 171
8.5.1 面向文档的数据库 171
8.5.2 索引、检索和搜索 172
8.5.3 节点和集群 178
8.5.4 索引分片和索引副本 180
8.5.5 分布式特性 180
8.5.6 配置Elasticsearch 181
8.6 Kibana 183
8.6.1 让Kibana连接到
 Elasticsearch 183
8.6.2 Index Pattern 184
8.7 部署 186
8.8 本章小结 186
第9章 公共组件详解 187
9.1 任务分发系统(Gearman) 187
9.1.1 Gearman介绍 187
9.1.2 Gearman架构和工作原理 188
9.1.3 安装 189
9.1.4 利用Gearman实现Jenkins
 的HA 192
9.2 消息队列(ZeroMQ) 194
9.2.1 ZeroMQ介绍 194
9.2.2 ZeroMQ的特点 194
9.2.3 ZeroMQ的工作模式 195
9.2.4 安装 196
9.2.5 应用示例 196
9.2.6 ZeroMQ在OpenStack CI/CD
 系统中的作用 199
9.3 分布式协调服务(ZooKeeper) 199
9.3.1 ZooKeeper介绍 199
9.3.2 ZooKeeper架构和工作原理 200
9.3.3 ZooKeeper的安装和配置 203
9.3.4 ZooKeeper典型应用 205
9.3.5 Nodepool中使用ZooKeeper示例 208
9.4 本章小结 209
第10章 社区CI/CD实践 210
10.1 Puppet简介 210
10.1.1 概述 210
10.1.2 基础架构 214
10.2 单机部署 216
10.2.1 前期准备 216
10.2.2 安装部署 217
10.3 多节点部署 231
10.3.1 IaC 232
10.3.2 配置 233
10.3.3 自动化部署 239
10.4 使用CI/CD 242
10.4.1 新增项目 242
10.4.2 提交变更 253
10.4.3 定制优化 256
10.5 CI/CD还需要考虑的问题 271
10.6 本章小结 272
第11章 演进 273
11.1 存在的问题 273
11.1.1 耦合 273
11.1.2 Zuul 274
11.1.3 Jenkins 274
11.1.4 Nodepool 274
11.2 演进 275
11.2.1 架构 275
11.2.2 Zuul V3 277
11.2.3 Nodepool V3 278
11.3 CI/CD发展 278
11.4 本章小结 278

教学资源推荐
作者: 郭志强 邱李华 曹青 等编著
作者: 钱晓捷 编著
作者: Harvey M.Deitel,Paul J.Deitel
作者: Charles N.Fischer, Richard J.LeBlanc,Jr.
参考读物推荐
作者: 快学习教育 编著
作者: 张大伟 著 邓凡平 审校
作者: (希)Diomidis Spinellis