基础设施即代码重构与故障修复全解析
1. 基础设施即代码重构基础
在基础设施即代码(Infrastructure as Code,IaC)的实践中,重构是一项重要的工作。重构基础设施即代码意味着在不影响现有基础设施资源的前提下,对配置或代码进行重组。它有助于解决技术债务,也就是改变代码所需的成本。
常见的重构相关概念和技术包括:
- 滚动更新 :逐个更改相似的基础设施资源,并在处理下一个资源之前对每个资源进行测试。这种方式允许逐步实施和排查更改。
- 功能标志 :也称为功能开关,用于启用或禁用基础设施资源、依赖项或属性。可以在测试、预发布和隐藏更改时使用,待确认无误后再应用到生产环境。功能标志应在一个地方(如文件或配置管理器)定义,以便快速识别其值,不再需要时应及时移除。
2. 单体基础设施即代码的重构
当所有基础设施资源都在一个地方定义,移除其中一个资源会导致整个配置失败时,就会出现单体基础设施即代码的情况。重构单体中的资源,需要将配置分离并复制到新的目录或存储库,导入到新的独立状态,并从单体配置和状态中移除这些资源。
2.1 无依赖资源的重构
首先,我们来看一个简单的 Terraform 应用示例:
$ python main.py
$ terraform apply
google_service_account.blue: Refreshing state...
google_compute_network.blue: Refre