基础设施即代码:从表达变更到理解不可变性
1. 表达基础设施变更
在开发和生产环境中,缺乏基础设施即代码(IaC)会带来诸多问题。例如,开发环境没有使用IaC,会影响创建生产环境的能力,主要体现在以下几点:
- 资源难以重现 :若没有IaC,要重现基础设施资源,需逆向工程数周的手动配置;而使用IaC,只需复制粘贴配置并修改,就能用于生产环境。
- 资源难以组合 :生产环境可能需要多个服务器,若构建了基础设施模块,就能用其创建多个服务器,无需从头更新配置。
- 环境难以演进 :生产环境有特定要求,如安全的操作系统和更大的数据库,手动调整未在开发环境运行过的配置很困难。
解决这些问题,提高可重现性、可组合性和可演进性,可从两方面入手:一是将手动配置的基础设施迁移到IaC;二是编写简洁的IaC以促进可重现性和可演进性。
无论自动化何种资源,变更都可分解为创建(Create)、读取(Read)、更新(Update)和删除(Delete),即CRUD操作。例如,在GCP上配置和管理服务器,通常会有以下操作:
1. 使用控制台、终端或代码在GCP上创建服务器。
2. 读取服务器信息,检查是否按正确规格创建,如操作系统是否为Ubuntu 18.04。
3. 更新服务器,使其具有可公开访问的网络地址以便登录。
4. 若不再需要,删除服务器。
CRUD操作可按特定顺序逐步自动化基础设施,这种方式称为命令式风格,它描述了如何逐步配置基础设施资源。不过,命令式风格在系统变更增多时难以扩展。例如,基于开
超级会员免费看
订阅专栏 解锁全文
33

被折叠的 条评论
为什么被折叠?



