理解 Terraform 计划的内容和工作原理

37次阅读
没有评论

问题描述

想要了解 Terraform 计划的内容和工作原理。他注意到导出的 Terraform 计划是一个二进制文件,并且想知道这个内部的 Terraform 格式是否通过一些枚举来编码这些调用。比如,计划中的内容是 “B#3$1$2″,是否意味着 “调用给定编号为 3 的 API 函数,并传递参数 1 和 2″?他想知道这是如何工作的。

解决方案

请注意以下操作注意版本差异及修改前做好备份。
Terraform 使用 protobuf 来存储计划,根据其代码,可以看到计划被序列化为 protobuf 格式的二进制文件^1^。你可以在这里找到生成计划文件的代码^2^。因此,这是一个二进制文件,其中包含了以可移植格式(协议缓冲区)表示的要执行的操作。

协议缓冲区是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制^3^。它可以将结构化数据序列化为二进制格式,以便在不同的系统之间进行传输和存储。

关于 Terraform 计划的具体工作原理,它并不直接调用云管理接口的 REST API。相反,Terraform 会根据你的配置文件生成一个计划,该计划描述了要执行的操作,例如创建、更新或删除资源。然后,Terraform 会根据计划执行相应的操作,调用云管理接口的 REST API 来实际执行这些操作。

因此,Terraform 计划中的内容并不是直接的 API 调用指令,而是描述了要执行的操作的序列化表示。Terraform 会根据这些操作调用相应的 REST API 来实际执行操作。

参考链接

正文完