GitOps—通过CI/CD自动化构建虚拟机模版
文章插图
概述: 从2月份开始的[模版自动化系列] , 已通过一系列的文章熟悉多种虚拟机模版的自动化构建 , 但在企业实际环境中模版的数量会远远超过这些 , 此时单一通过shell进行管理和更新 , 依然非常复杂和繁琐的(虽然相比以前已经有了很大的提高) 。 现在把自己基于GitOps的方式来管理模版分享出来 , 进一步提高模版的构建和管理效率 , 本篇文章将介绍如何通过GitLab CI/CD对模版进行自动化管理 。
对于模版保存还存在一个重要的难题需要解决 , 那就是当云平台或其他自动调用的时候 , 并不是通过模版名称进行识别 , 那仅仅通过名称更新模版 , 就会导致其他系统无法正确识别新模版 。 vCenter 6.5开始支持模版更新 , 此特性正解决了我们遇到的问题 , 并且Packer也是在8月底的版本支持此特性(OVF模版) 。 使用vCenter内容库还有一个好处 , 内容库支持订阅 , 在企业内部如果包含多个vCenter环境的情况下 , 只需构建一次即可 。
通过之前的文章大家对模版构建已经很熟悉了 , 为了提高移动设备的阅读体验 , 本手册不再介绍详细的模版配置 , 您可以通过访问 https://github.com/6547709/gitops-packer 直接查看代码和配置 。
基于GitOps自动化构建vSphere模版特性:
- 使用Gitlab存储模版配置文件;
- 基于Gitlab CI/CD实现自动化模版构建;
- 基于Git提交记录进行语义版本管理(feet、fix) , 版本号自增 , 并存储到模版的Notes中;
- 定时执行CI/CD任务实现模版变异;
- 采用vCenter内容库存储模版 , 并以-latest为后缀;
- 每次构建自动更新vCenter内容库模版 , 保持ID不变 , 以保证vRA云平台或其他工具调用最新模版;
- 所有密码和配置 , 通过.gitlab-ci.yml进行定义;
- 提供Windows2016/2019、Ubuntu1804/1910/2004、CentOS7/8等多种模版;
- 所有模版进行基础优化(可参考对应模版的自动应答文件);
- Windows模版使用ISO镜像已集成最新补丁 , 缩短了部署时间;
- 经过vSphere 7.0、Packer 1.6.4环境测试 。
vSphere:是VMware企业级虚拟化软件 , 被企业客户广泛使用 , 具备稳定性高、性能好、安全性高和易使用的特点 。
govc:是一个基于govmomi的cli工具 , 实现对vSphere的远程管理 。
Packer-provisioner-windows-update:Windows Update for packer插件 。
Gitlab CI/CD:是一个CI/CD工具 , 与代码集成在一起工作 。
Semantic-delivery-gitlab:镜像用于实现语义版本管理 。 Harbor:是私有Docker镜像仓库 , 用于存储用于执行Packer、Govc和Genisoimage的Docker镜像 。
相关代码:中包含了Gitlab CI/CD所需的所有文件 。
针对各模版的配置请参考历史的文章 。 CI/CD可以根据情况选择不同工具 , 原理都相同 。
环境需求
- Gitlab服务器和Gitlab-Runner服务器 , 其中Runner运行在Docker模式;
- 一台Windows/Linux/MacOS电脑 , 能够连接vCenter Server;
- Packer程序、Govc程序、Windows Update for Packer程序;
- 各操作系统安装镜像;
- VMware Tools、Windows pvscsi驱动;
- vCenter内容库;
- Semantic-delivery-gitlab镜像;
- 搭建Harbor镜像仓库 , 用于存储本地镜像;
- 搭建Gitlab和Gitlab CI/CD相关环境 , 使用Docker Runner模式;
- 在Gitlab中创建项目 , 并上传相关代码、修改相关配置;
推荐阅读
- 新专利显示苹果在未来可能让Apple Watch通过传感器测量血压
- 初探 iOS 自动化工具——快捷指令
- iPhone折叠屏要来?两种设计通过初步测试
- LG展示全球首款通过Eyesafe认证的电视显示屏
- 提案通过:Fedora 34默认启用systemd-oomd
- 外媒:苹果两款可折叠iPhone样品通过富士康第一项质量检测
- 三星Galaxy A52 5G通过3C认证 支持最高15W快速充电
- 谷歌可能会通过不更新iOS应用来规避苹果的隐私披露
- 三个型号 三星Galaxy A32 5G通过Bluetooth SIG认证
- 虾米音乐宣布:永别