基础设施即代码(IaC)模块

基础设施即代码(Infrastructure as Code,IaC)是云原生时代最重要的工程实践之一。它不仅仅是「用代码管理服务器」,而是一种将基础设施视为软件系统的思维方式。

模块概述

本模块将带你从零开始,深入理解 IaC 的核心理念、主流工具、最佳实践,以及如何构建安全、可靠、可测试的基础设施代码体系。

mindmap
  root((IaC))
    核心理念
      不可变基础设施
      声明式配置
      版本控制
      自动化一切
    主流工具
      Terraform
      Pulumi
      CloudFormation
      Ansible
      Packer
    核心实践
      模块化设计
      状态管理
      测试策略
      CI/CD 集成
    安全合规
      秘钥管理
      最小权限
      合规扫描
      审计日志

学习路径

第一阶段:理念入门

如果你对 IaC 还比较陌生,建议从以下内容开始:

  1. 不可变基础设施概述 - 理解「不变性」的核心价值
  2. 可变 vs 不可变基础设施 - 两种范式的对比与选择

第二阶段:工具掌握

掌握主流 IaC 工具:

第三阶段:镜像构建

理解不可变基础设施的重要组成部分——镜像:

第四阶段:安全与测试

确保 IaC 代码的质量与安全:

第五阶段:工程实践

将 IaC 融入持续交付管道:

核心概念速览

概念说明相关文档
声明式 vs 命令式IaC 的两种编程范式声明式 vs 命令式 IaC
不可变基础设施一旦创建,永不修改不可变基础设施概述
State 管理Terraform 的状态文件管理Terraform State 管理
模块化可复用、可组合的基础设施组件Terraform 模块化设计

推荐阅读顺序

零基础入门

不可变基础设施 → 可变 vs 不可变 → Terraform 核心语法 → Terraform State → 多环境管理

进阶提升

Terraform 模块化 → IaC 测试策略 → Terratest → IaC 安全与合规 → CI/CD 集成

架构设计

不可变基础设施 → Packer 镜像构建 → 镜像不可变最佳实践 → Pulumi vs Terraform → 安全与合规

快速开始

安装 Terraform

# macOS
brew install terraform

# 验证安装
terraform -version

初始化第一个项目

main.tf
provider "aws" {
  region = "us-east-1"
}

resource "aws_instance" "web" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t3.small"

  tags = {
    Name = "hello-terraform"
  }
}
# 初始化
terraform init

# 预览变更
terraform plan

# 应用变更
terraform apply

# 销毁资源
terraform destroy

延伸学习

开始你的 IaC 之旅

建议从不可变基础设施概述开始,建立正确的认知框架。