基础设施代码的模块化、版本管理、发布、共享与测试
在基础设施即代码(Infrastructure as Code)的实践中,模块化、版本管理、发布、共享以及测试是至关重要的环节,它们能够帮助我们更高效地管理和维护基础设施,降低变更失败的风险,提高系统的稳定性和可靠性。
模块版本管理
使用一致的版本管理方法可以有效地发展下游基础设施资源,同时避免破坏上游资源,因为我们可以控制它们之间的依赖关系。版本管理还有助于对活跃版本进行审计,通过识别和弃用旧的、不活跃的模块版本,可以节省资源、减少混淆并推广最新的变更。
不过,我们需要持续遵循某些版本管理实践。例如,延迟更新应用程序以使用数据库的“v2.0.0”版本,失败的可能性就会增加。我们可以为使用“v1.0.0”版本的模块设定一个时间线,但不必立即删除该版本。通常,在进行少量的小版本变更时更新依赖模块是比较安全的,跨越大版本进行升级会增加变更的风险和失败率。
对于补丁、支持变更或热修复版本,如果采用基于特性的开发或 Git Flow 工作流,可以在软件开发的同一工作流中处理这些变更。具体操作步骤如下:
1. 基于版本标签创建一个分支。
2. 在该分支上更新变更内容。
3. 增加补丁版本号。
4. 为热修复分支添加新的标签,并保留该分支以记录提交历史。
这种版本管理流程适用于多仓库结构。对于单仓库结构,同样可以应用版本控制标签方法。可以为标签添加模块名称作为前缀,如“module-name-v2.0.0”,然后将模块打包并发布到制品仓库。构建系统会打包模块子目录的内容,并在制品存储中标记版本。配置文件则引用制品仓库中的远程模块,而非本地文件。