Skip to content

IaC:基础对象与机制 ​

声明、计划、状态与执行入口 ​

基础设施自动化把声明、状态映射与远端真实资源联系起来。先读懂计划中的创建、修改、替换和删除,再理解依赖与锁;版本控制中的声明回退不等同远端资源与数据自动恢复。

声明目标与执行动作 ​

IaC声明目标描述希望管理的资源关系,工具比较配置、状态与远端对象后生成计划。它不是把Shell命令换成配置文件;同样配置在不同状态、权限和真实环境下可能得到不同动作。Terraform provider实现与远端平台交互,内建terraform_data只管理本地状态中的数据对象,不创建云主机。示例不含任何provider凭据或远端服务。

Init、Plan和Apply入口 ​

IaC命令入口分为init初始化backend与依赖、plan预览差异、apply执行已审阅计划、destroy生成删除意图。plan可能刷新并读取真实远端,validate也属于产品CLI。读者应在独立目录核对backend、workspace和变量后再自跑,避免当前目录自动加载生产配置。带-out的计划需保护权限,因为二进制计划可能包含秘密。

输入、版本与隔离 ​

IaC输入合同要求environment只能lab,版本限制1.10族,避免无边界兼容承诺。变量文件、环境变量和CLI参数可能覆盖默认值;只读main.tf不能证明真实运行输入一致。示例只有内建terraform_data,不需要外部provider或伪造锁文件;一旦读者扩展云provider,就必须固定兼容版本、审阅依赖锁、身份与费用,本课程不提供可部署云模板。

本篇练习与参考解答 ​

练习:plan是否始终只是本地文本比较?

参考解答

不是。真实 plan 可能刷新并读取 provider 远端资源,运行前需确认目标账户、工作空间与访问范围。

核对资料与相邻阅读 ​

继续阅读机制、完整实践、运维、诊断与复习。

资源映射、依赖图与并发锁 ​

先明确backend、workspace、变量与资源地址,再对照配套示例理解计划动作、未知值、状态锁及真实资源映射。

核对日期2026-10-17;适用范围:Terraform >=1.10.0,<1.11.0,内建terraform_data;无外部provider和云账号。固定教学族不是2026最新版本或生产升级建议,状态/锁按所选backend另行核对。示例未执行;真实环境仍需验证产品配置、权限、连通与恢复结果。先读起点理解前置,再按章节完成推演。

State的身份映射 ​

IaC状态映射保存资源地址与远端身份的关系及已知属性,用于后续比较。state不是可随意删除的缓存,也不保证所有远端变化已同步;丢失state可能让工具计划重复创建真实对象。手工编辑JSON会破坏一致性,应在备份、独占变更与审阅下使用正式状态迁移机制。terraform_data无远端对象,仍用状态展示地址与input/output关系。

依赖图与替换计划 ​

IaC计划差异需要查看create/update/delete及replacement,不能只看总数。资源引用建立依赖图,执行顺序由依赖决定;无关对象可并行,文件书写顺序不构成业务顺序保证。create_before_destroy也受命名唯一性、配额和依赖制约。示例input.revision变化通常为terraform_data更新,强制替换则是另一动作;审阅器拒绝含delete的替换,避免先删后建风险。

State锁与依赖锁 ​

IaC状态锁保护同一backend的并发写入,是否支持由backend决定;.terraform.lock.hcl锁定provider版本和校验信息,是另一种锁。不能用提交依赖锁来防止两个apply并行。force-unlock仅在证实原持锁进程结束并核对lock ID后考虑,误解锁会产生并发状态写入。课堂使用本地state,不能将本地文件锁当作跨机器协作方案。

本篇练习与参考解答 ​

练习:依赖锁是否能阻止两个人同时写state?

参考解答

不能。.terraform.lock.hcl控制provider选择和校验,状态写锁由backend机制提供,二者独立。

核对资料与相邻阅读 ​

本节沿用本页资料与示例入口。

继续阅读