跳转至

基础设施即代码(IaC)

基础设施即代码是用可版本控制的声明式配置管理虚拟机、网络、磁盘、负载均衡、DNS 和其他平台资源。本分类主要讲 Terraform 与 OpenTofu

代码描述期望状态
  → Provider 查询平台真实资源
  → State 建立代码与资源 ID 的映射
  → Plan 展示新增、修改、替换和删除
  → 审批后 Apply 执行变更

与自动化运维的边界

分类 主要工具 负责什么
基础设施即代码 Terraform / OpenTofu 创建和变更虚拟机、网络、磁盘、DNS、云服务等平台资源
自动化运维 Ansible 登录已经存在的主机,配置用户、软件包、文件、服务和应用

典型顺序是 Terraform/OpenTofu 先创建服务器并输出 IP,Ansible 再使用这些地址生成 Inventory,完成操作系统配置和应用部署。两个工具不应同时管理同一个对象的同一属性,否则会产生配置漂移。

IaC 的核心价值

  • 基础设施变更进入 Git,可以评审、追溯和回退代码。
  • Apply 前先看 Plan,提前发现误删、替换和网络变更。
  • 使用 Module 复用网络、虚拟机等标准组件。
  • 开发、测试和生产共享结构,只通过受控变量表达差异。
  • 结合 GitLab Pipeline 执行格式检查、验证、Plan、审批和 Apply。

IaC 不等于无人审核。删除磁盘、替换实例或修改网络仍可能中断业务,生产变更必须配合备份、维护窗口、审批和回滚方案。

团队必须守住的边界

  1. State、密码、私钥和敏感 tfvars 不能提交到 Git。
  2. 团队使用远端 State,并启用并发锁、版本历史、加密和备份。
  3. Provider、Module 和 CLI 版本需要固定并经过测试。
  4. Merge Request 执行 Plan;生产 Apply 使用最新 State 再次生成并审核计划。
  5. 控制台紧急修改后及时回写代码,并检查配置漂移。

继续阅读:Terraform 与 OpenTofu