Terraform
提供程序
动手实践: 尝试 使用 Providers 执行 CRUD 操作 教程。
Terraform 依赖于名为 Providers 的插件来与云提供商、SaaS 提供商和其他 API 进行交互。
Terraform 配置必须声明它们需要的 Providers,以便 Terraform 可以安装和使用它们。 此外,某些 Providers 在使用之前需要配置(例如,端点 URL 或云区域)。
Providers 的作用
每个 Provider 都增加了一组 资源类型 和/或 数据源,Terraform 可以管理这些资源和数据源。
每个资源类型都由一个 Provider 实现;如果没有 Providers,Terraform 就无法管理任何类型的基础设施。
大多数 Providers 配置特定的基础设施平台(可以是云端或自托管)。 Providers 还可以提供本地实用程序,用于执行诸如为唯一的资源名称生成随机数之类的任务。
Providers 的来源
Providers 与 Terraform 本身分开分发,并且每个 Provider 都有自己的发布节奏和版本号。
Terraform Registry 是公开可用的 Terraform Providers 的主要目录,并托管了大多数主要基础设施平台的 Providers。
提供商文档
每个提供商都有自己的文档,描述其资源类型及其参数。
Terraform 注册表 包含由 HashiCorp、第三方供应商和我们的 Terraform 社区开发的各种提供商的文档。 使用提供商标题中的“文档”链接来浏览其文档。
注册表中的提供商文档已版本化;您可以使用标题中的版本菜单来更改您正在查看的版本。
有关编写、生成和预览提供商文档的详细信息,请参阅 提供商发布文档。
如何使用提供商
提供商与 Terraform 本身是分开发布的,并且有自己的版本号。 在生产环境中,我们建议在配置的提供商需求块中约束可接受的提供商版本,以确保 terraform init 不会安装与配置不兼容的较新版本提供商。
要使用给定提供商的资源,您需要在配置中包含一些关于它的信息。 有关详细信息,请参阅以下页面
提供商需求 说明了如何声明提供商,以便 Terraform 可以安装它们。
provider块参考 记录了如何配置提供商的设置。依赖锁定文件 记录了一个可以包含在配置中的额外的 HCL 文件,它告诉 Terraform 始终使用特定版本的提供商。
提供商安装
HCP Terraform 和 Terraform Enterprise 在每次运行中都将提供商安装为一部分。
Terraform CLI 在 初始化工作目录 时查找并安装提供商。 它可以自动从 Terraform 注册表下载提供商,或从本地镜像或缓存加载它们。 如果您使用的是持久工作目录,则每次更改配置的提供商时都必须重新初始化。
为了节省时间和带宽,Terraform CLI 支持可选的插件缓存。 您可以使用 CLI 配置文件 中的
plugin_cache_dir设置来启用缓存。
为了确保 Terraform 始终为给定的配置安装相同的提供程序版本,您可以使用 Terraform CLI 创建一个 依赖锁定文件,并将其与您的配置一起提交到版本控制中。如果存在锁定文件,HCP Terraform、CLI 和 Enterprise 都将在安装提供程序时遵守它。
动手实践: 尝试 锁定和升级提供程序版本 教程。
私有提供程序
如果您正在使用未托管在 HashiCorp 注册表中的提供程序,您可能需要附加额外的凭据到外部注册表的请求中。如果您的提供程序位于 Terraform 公共注册表或 HCP Terraform 私有注册表中,则不需要这些凭据。
默认情况下,Terraform 仅验证提供程序到注册表的初始请求。注册表会回复 后续 URL,Terraform 会向这些 URL 发送请求,例如告诉 Terraform 下载提供程序或 SHASUMS 文件。HashiCorp 托管的注册表不需要这些后续请求的额外身份验证。如果您的注册表需要后续请求的额外凭据,您可以使用 .netrc 文件来提供这些凭据。
默认情况下,Terraform 在您的 HOME 目录中搜索 .netrc 文件。但是,您可以通过设置 NETRC 环境变量来覆盖默认的文件系统位置。有关 .netrc 格式的信息,请参阅 curl 文档。
查找提供程序
要查找您使用的基础设施平台的提供程序,请浏览 Terraform 注册表的提供程序部分。
注册表中的一些提供程序由 HashiCorp 开发和发布,一些由平台维护者发布,还有一些由用户和志愿者发布。提供程序列表使用以下徽章来指示开发和维护给定提供程序的人员。
| 层级 | 描述 | Namespace (命名空间) |
|---|---|---|
官方 | 官方提供商由 HashiCorp 拥有和维护 | hashicorp、IBM、IBM-Cloud、ansible |
合作伙伴首选 | 技术合作伙伴是编写和维护合作伙伴首选提供商的第三方公司。要获得合作伙伴首选徽章,合作伙伴必须满足资格(请参阅合作伙伴首选要求。) | 第三方组织 |
合作伙伴 | 合作伙伴提供商由第三方公司编写、维护、验证和发布,针对他们自己的 API。要获得合作伙伴提供商徽章,合作伙伴必须参与HashiCorp 技术合作伙伴计划。 | 第三方组织 |
社区 | 社区提供商由个人维护者、维护者组或其他 Terraform 社区成员发布到 Terraform Registry。 | 维护者的个人或组织帐户,例如: DeviaVir/gsuite |
已归档 | 已归档的提供商是官方或合作伙伴提供商,这些提供商不再由 HashiCorp 或社区维护。如果 API 已弃用或兴趣较低,则可能发生这种情况。 | hashicorp 或第三方 |
开发提供程序
提供程序是用 Go 编写的,并使用 Terraform 插件 SDK。有关开发提供程序的更多信息,请参见
- 《插件开发》文档
- 《使用 Terraform 提供程序调用 API》教程