IaC 核心理念与 Terraform 的第一次接触
手动管理基础设施的“史前时代”
想象一下,没有 IaC 的世界是什么样的:
- 部署新环境: 你需要登录云厂商的控制台(如 AWS Console),在一系列复杂的 Web 界面上手动点击,创建虚拟机、配置安全组、设置网络、挂载磁盘…… 这个过程耗时、繁琐,且极易出错。
- 环境一致性: 如何保证开发、测试、生产三个环境的配置完全一致?几乎不可能。微小的手动配置差异,往往是导致“在我这儿好好的,怎么一上生产就出问题”的根源。
- 变更追踪与审计: 谁在什么时候修改了哪个安全组的规则?为什么这台服务器的配置和别的不一样?如果没有严格的流程,这些变更将如石沉大海,无法追溯。
- 灾难恢复: 如果一个区域的基础设施完全瘫痪,你需要多久才能在另一个区域重建一套一模一样的环境?手动操作几乎是一场灾难。
基础设施即代码 (Infrastructure as Code - IaC) 正是解决上述所有问题的良药。
什么是 IaC?什么是声明式?
IaC 的核心思想是:使用代码(通常是人类可读的配置文件)来定义和管理你的基础设施,并将其纳入版本控制系统(如 Git)。
IaC 主要分为两种模式:
- 命令式 (Imperative): 你告诉系统 “如何做 (How)” 来达到目标状态。例如,编写一个 Shell 脚本:“
第一步:创建一台 t2.micro 类型的虚拟机;第二步:为它创建一个安全组;第三步:将虚拟机关联到该安全组……
”。这种方式逻辑直接,但难以维护和保证最终状态的一致性。