基础设施即代码(IaC)¶
基础设施即代码是用可版本控制的声明式配置管理虚拟机、网络、磁盘、负载均衡、DNS 和其他平台资源。本分类主要讲 Terraform 与 OpenTofu。
与自动化运维的边界¶
| 分类 | 主要工具 | 负责什么 |
|---|---|---|
| 基础设施即代码 | Terraform / OpenTofu | 创建和变更虚拟机、网络、磁盘、DNS、云服务等平台资源 |
| 自动化运维 | Ansible | 登录已经存在的主机,配置用户、软件包、文件、服务和应用 |
典型顺序是 Terraform/OpenTofu 先创建服务器并输出 IP,Ansible 再使用这些地址生成 Inventory,完成操作系统配置和应用部署。两个工具不应同时管理同一个对象的同一属性,否则会产生配置漂移。
IaC 的核心价值¶
- 基础设施变更进入 Git,可以评审、追溯和回退代码。
- Apply 前先看 Plan,提前发现误删、替换和网络变更。
- 使用 Module 复用网络、虚拟机等标准组件。
- 开发、测试和生产共享结构,只通过受控变量表达差异。
- 结合 GitLab Pipeline 执行格式检查、验证、Plan、审批和 Apply。
IaC 不等于无人审核。删除磁盘、替换实例或修改网络仍可能中断业务,生产变更必须配合备份、维护窗口、审批和回滚方案。
团队必须守住的边界¶
- State、密码、私钥和敏感 tfvars 不能提交到 Git。
- 团队使用远端 State,并启用并发锁、版本历史、加密和备份。
- Provider、Module 和 CLI 版本需要固定并经过测试。
- Merge Request 执行 Plan;生产 Apply 使用最新 State 再次生成并审核计划。
- 控制台紧急修改后及时回写代码,并检查配置漂移。
继续阅读:Terraform 与 OpenTofu。