大家好,GitOps——通过CI/CD自动构建虚拟机模板相信很多的网友都不是很明白,包括也是一样,不过没有关系,接下来就来为大家分享关于GitOps——通过CI/CD自动构建虚拟机模板和的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
通过之前的文章大家已经熟悉了模板构建。为了提高移动设备上的阅读体验,本手册将不再介绍详细的模板配置。您可以访问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 环境中进行了测试。
相关工具:
Packer:是一款开源自动化虚拟机模板构建工具,支持私有云和公有云,几乎覆盖所有环境。
vSphere:VMware企业级虚拟化软件,被企业客户广泛使用,具有稳定性高、性能好、安全性高、易用等特点。
govc:是一个基于govvmomi实现vSphere远程管理的cli工具。
https://github.com/vmware/govmomi
Packer-provisioner-windows-update:Packer 插件的Windows 更新。
https://github.com/rgl/packer-provisioner-windows-update
Gitlab CI/CD:它是一个与代码集成工作的CI/CD 工具。
https://docs.gitlab.com/ee/ci/
Semantic-delivery-gitlab:使用镜像来实现语义版本管理。 Harbor:是一个私有的Docker镜像仓库,用于存储用于执行Packer、Govc和Genisoimage的Docker镜像。
https://hub.docker.com/r/hutson/semantic-delivery-gitlab
相关代码:包含Gitlab CI/CD所需的所有文件。
https://github.com/6547709/gitops-packer
各个模板的配置请参考历史文章。 CI/CD可以根据情况选择不同的工具,原理是一样的。
环境需求
Gitlab服务器和Gitlab-Runner服务器,其中Runner以Docker模式运行;可以连接到vCenter Server 的Windows/Linux/MacOS 计算机; Packer 程序、Govc 程序、Packer 程序的Windows 更新;每个操作系统安装映像; VMware Tools、Windows pvscsi 驱动程序; vCenter 内容库;语义传递-gitlab 图像;
步骤概要
构建Harbor镜像仓库,用于存储本地镜像;搭建Gitlab和Gitlab CI/CD相关环境,使用Docker Runner模式;在Gitlab中创建项目,上传相关代码,并修改相关配置;执行自动构建测试;在Gitlab CI/CD中添加计划任务;完全的。
构建用于执行Packer命令的DockerIamge
需要先通过相关工具中的地址下载packer、govc、windows update for packer这三个执行文件,并存放在与Dockerfile同一目录下。 Dockerfile如下:
FROM centos:8LABEL 维护者='Alex Li'ENV PACKER_VERSION=1.6.4ENV GOVC_VERSION=v0.23.0ENV GOVC_INSECURE=trueENV TIME_ZONE Asia/ShanghaiRUN ln -sf /usr/share/zoneinfo/${TIME_ZONE} /etc/localtimeADD ./govc /usr /bin/ADD ./packer /usr/bin/ADD ./packer-provisioner-windows-update /usr/binRUN chmod a+x /usr/bin/govc /usr/bin/packer /usr/bin/packer-provisioner -windows-update yum install -y genisoimageWORKDIR /tmpCMD ['/bin/bash'] 使用Docker Build 构建Docker 镜像并将其上传到容器存储库(私有或公共):
docker build -tharbor.corp.local/library/gitops-packer:v1.0 .docker推送登录harbor.corp.localdocker登录-u adminharbor.corp.localdocker推送harbor.corp.local/library/gitops-packer:v1.0 :010 -1010 docker pull hutson/semantic-delivery-gitlab:9.1.0docker tag hutson/semantic-delivery-gitlab:9.1.0harbor.corp.local/library/semantic-delivery-gitlab:9.1.0docker推送harbor.corp.local/library/semantic -delivery-gitlab:9.1.0
上传semantic-devlivery-gitlab镜像到Harbor
使用个人账户登录Gitlab;转到用户设置- 访问令牌;填写令牌名称、到期日期并选择权限- 创建个人访问令牌;保存令牌以供以后使用;
在Gitlab中创建Access Token
这里不做详细说明,这里是最终仓库内容的屏幕截图:
创建项目,并提交所有代码到仓库中
该文件是Gitlab CI/CD的主要配置文件。该文件中定义了常用的配置参数。无需修改加壳器和操作系统自动响应文件。
标准、标准化的提交信息不仅可以保证版本历史的可读性,还可以了解每次变更的内容和影响范围,并在Release页面自动生成文档。因此,强烈建议使用标准的提交消息格式和内容。
fix: 修复代码问题时使用此标志。示例:fix: 修复Windows 模板ISO 文件错误。版本号变化:1.0.0-1.0.1
feat: 添加新功能或模板时使用此标签。示例:feat: 添加Photon 模板。版本号变化:1.0.0-1.1.0
[skip ci] 当您不想自动执行CI/CD 时,请将此标签添加到消息中。示例:fix: 更新ReadME。[跳过ci]。版本号变化:无变化
修改.gitlab-ci.yml配置文件
提交更改后,Giab CI/CD 将根据.gitlab-ci.yml 中的配置自动执行管道。整个过程分为2组,每组5个步骤:
进行语义版本管理,为代码添加tag标签;基于标签进行加壳配置文件验证,CentOS8自动响应ISO构建、镜像构建,并列出内容库内容; pipeline执行流程如下图所示,总共需要25分钟,完成8个模板的自动化构建:
登录vCenter内容库查看模板更新:
验证执行过程和结果
在Gitlab CI/CD计划中,添加每周/每月的定时执行计划,添加完成后如下图所示。
添加定时任务
模板构建过程中,Windows构建耗时最长,部分情况长达2小时,可能会触发Gitlab CI/CD和Packer的超时机制,导致任务失败。为了提高模板构建效率,降低错误率,建议自行给模板打上最新补丁。以下是粗略的制作流程,供参考。
下载DISM++工具(汉化,图形化操作);将系统安装光盘解压到目录(d:\win2016-iso),解压解压目录中的\sources\install.wim文件,复制到另一个目录(d:\win2016-iso);打开DISM++工具,加载install.wim文件,安装路径需要提前创建(d:\win2016-iso\mnt);选择已加载的install.wim系统,打开会话;使用系统安装光盘安装系统,并进行系统更新。更新完成后,在已安装的系统更新(添加/删除程序)中找到已安装的补丁版本号;登录https://www.catalog.update.microsoft.com/网站,根据版本下载msu格式的补丁。文件,保存到目录(d:\win2016-iso\msu);在DISM++工具页面,控制面板-更新管理-添加(d:\win2016-iso\msu),并执行安装,等待安装完成(需要较长时间);补丁安装完成后,DISM++-文件-另存为镜像(d:\win2016-iso\new.wim)存储新镜像;使用new.wim替换系统安装盘解压目录下的install.wim(名称必须是install.wim); DISM++-常用工具-工具箱-ISO Generator,选择替换install.wim文件的系统安装盘和压缩目录作为源,选择d:\win2016-iso\目录作为目标,指定新的光盘名称并添加一个标签; DISM++ -文件-卸载镜像;制作包含指定补丁的系统安装光盘;将新的ISO 上传到共享存储,并修改.gitlab-ci.yml 文件以使用新的ISO 镜像路径。提示1:虽然DISM++提供了系统更新功能,但对于Windows Server系统似乎无法正常使用,所以建议手动添加补丁。
提示2:您还可以通过DISM工具将pvscsi驱动程序添加到安装光盘中,因此无需额外添加pvscsi驱动程序。
用户评论
这篇文章写的真不错!以前对自动化构建虚拟机模版的概念了解不多,现在看了这个GitOps的文章感觉豁然开朗了。CI/CD果然是非常强大的工具,能提高效率,减少错误!我以后一定要深入学习一下。
有15位网友表示赞同!
标题点明主题,文章讲解得非常清晰细致,尤其对GitOps的使用场景和优势分析的很到位。作为一名开发人员,我觉得这篇文章很有实用性,可以帮助我们更好地掌握自动化构建虚拟机模版的技巧。期待了解更多关于GitOps的学习资料!
有19位网友表示赞同!
我一直觉得开源项目里的一些工具很强大但用的不多,这次看到文章介绍了这个GitOps就有点心动啊!通过CI/CD来实现自动化构建虚拟机,想想就好棒了!以后如果有机会我一定要尝试一下,看看能不能提升我们的工作效率。
有9位网友表示赞同!
这篇文章的标题吸引眼球,内容也很详细,让我对GitOps有了更深刻的理解。特别是说到提高资源利用率和快速部署应用方面,真的是非常吸引人的优势呀! 虽然有点复杂,但我决定先去学习一下相关知识,看看能不能在实际项目中应用。
有9位网友表示赞同!
说的很有道理,自动化构建虚拟机模版确实能够提高效率,减少重复的劳动。不过,我也有些担心自动化后会不会导致缺乏灵活性和可控性呢?需要进一步了解GitOps是如何解决这些问题的
有12位网友表示赞同!
我感觉这篇文章写的有些过于理论化了,缺乏实际案例的支撑,有点难以理解。虽然介绍了GitOps的概念和原理,但对于如何具体操作应用却交代不足,希望作者能够补充一些实用的例子说明。
有20位网友表示赞同!
自动化构建虚拟机模版听起来确实很美,但现实中肯定也遇到各种问题吧?例如:万一脚本出错了怎么办?如果需要修改虚拟机模板,会不会带来麻烦?希望文章能提到一些常见问题和解决方案
有10位网友表示赞同!
对GitOps不是很了解,但是通过这篇文章的介绍,我初步了解它可以解决自动构建虚拟机模版的难题。其实很多公司都已经在使用这种方法提高效率了,看来未来还是得好好学习一下GitOps技术。
有13位网友表示赞同!
文章结构清晰、逻辑严密,从概念到应用都进行了详细解读。对于GitOps的理解更加深入了,尤其是在强调其优势和局限性方面做得比较好。期待作者能够继续输出高质量的科技内容。
有9位网友表示赞同!
我目前在学习DevOps相关知识,这篇文章对我的帮助很大!GitOps的概念和实践经验都介绍得非常详细,让我对自动化构建虚拟机模版有了更清晰的认识。感谢作者分享valuable insights!
有17位网友表示赞同!
以前听过一些关于自动化部署的方案,但是从来没有深入了解过GitOps。看了这篇文章之后,我对它充满了信心!希望以后企业能够越来越多地采用这种先进的技术模式,提升开发效率和应用质量。
有5位网友表示赞同!
文章里提到的CI/CD流程,我感觉有点复杂啊!自动化构建虚拟机模版听起来很有吸引力,但是会不会提高工作难度呢?我还需要进一步学习学习这个GitOps的具体用法才行。
有19位网友表示赞同!
我赞同作者观点,自动化构建虚拟机 模版可以带来不少好处,例如提高效率、减少错误等等。 不过,我也想补充一下,在实施GitOps之前,可能还需要考虑一些风险因素,例如网络安全隐患和系统维护难度等方面。 希望未来会有更多研究和探讨围绕这一主题展开。
有5位网友表示赞同!
看了这篇文章之后,我对GitOps有了更深入的理解。自动化构建虚拟机模版确实是一个很好的解决方案,可以帮助开发人员更高效地完成任务。 但是,我觉得文章里对GitOps的应用场景还比较有限,希望能看到更多实际案例和经验分享。
有8位网友表示赞同!
很不错的一篇文章!作者把复杂的主题解释得简单易懂,让人很容易理解。尤其是强调了GitOps能够带来的优势,例如提高资源利用率、快速部署应用等方面,确实很有吸引力!我打算尽快学习一下相关的知识和技能。
有5位网友表示赞同!
这篇文章让我想起之前曾经使用的自动化工具,有些思路很相似。不过,我还是想说,GitOps的运用场景还是比较广阔的,未来的发展方向值得期待。希望可以看见更多创新应用案例。
有10位网友表示赞同!
文章内容丰富,逻辑清晰,对于想要了解GitOps的用户来说非常有帮助。我已经将这篇文章收藏起来,后续再仔细阅读学习一下相关知识。期待看到作者更多关于DevOps方面的创作!
有9位网友表示赞同!