Terraform 基础设施即代码入门

手动登录云控制台创建服务器、数据库、网络——这种方式在资源少时还能勉强应付,一旦环境变复杂,就会出现"改不动、删不清、说不明"的困境。基础设施即代码(Infrastructure as Code, IaC)用代码描述基础设施,让资源的创建、修改和销毁变得可版本化、可审查、可复用。Terraform 是目前最主流的 IaC 工具,从理念到实战全面梳理。 参考来源:Terraform 官方文档 一、IaC 理念:声明式 vs 命令式 IaC 的核心思想是:用代码文件描述基础设施的期望状态,由工具自动驱动实际状态向期望状态收敛。 在 IaC 领域,存在两种截然不同的范式: 维度 声明式(Declarative) 命令式(Imperative) 核心理念 描述"要什么"(期望状态) 描述"怎么做"(操作步骤) 代表工具 Terraform、CloudFormation、Pulumi Ansible(部分)、Shell 脚本、AWS CLI 幂等性 天然幂等,重复执行结果一致 需自行保证幂等性 状态感知 工具追踪当前状态,自动计算差异 无状态感知,按步骤执行 可读性 接近配置文件,易于理解 接近编程逻辑,灵活但复杂 Terraform 采用声明式范式。你只需声明"我需要 3 台 EC2、1 个 RDS、1 个 VPC",Terraform 会自动对比当前状态和期望状态的差异,生成并执行变更计划。 声明式的核心优势:幂等性。无论执行多少次 terraform apply,最终状态一致。这意味着你可以把基础设施代码纳入 Git 版本控制,通过 PR 审查变更,实现基础设施的"代码化治理"。 二、Terraform 核心概念 Terraform 的运作围绕四个核心概念展开: 开发者编写 .tf 文件 │ ▼ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ Provider │ ←──→ │ Resource │ │ State │ │ 云厂商插件 │ │ 资源声明 │ │ 状态文件 │ └──────────────┘ └──────────────┘ └──────────────┘ │ ▼ ┌──────────────┐ │ Module │ │ 模块化复用 │ └──────────────┘ 2....

April 24, 2024 · 8 分钟 · 1558 字 · 徐保金