配置 Schematics 代理程序以使用专用注册表
代理程序支持将源自专用 Terraform 注册表的定制 Terraform 提供程序与 Schematics Terraform 作业配合使用。 使用定制提供程序的支持在共享多租户 Schematics 服务中不可用。 它仅适用于代理程序。代理程序不包含本地或专用提供程序注册表。 此外,用户可以在可供代理程序访问的用户专用网络上配置注册表。
缺省情况下,当 Schematics 作业运行时,Terraform CLI 会通过因特网或公用网络从公用 Terraform 注册表下载所需的 Terraform 提供程序插件或 Terraform 模块。 在专用网络上部署代理程序时,安全策略指示必须使用代理或镜像站点来下载和高速缓存提供程序插件。 此外,可能需要在专用注册表中托管定制开发的 Terraform 提供程序,以配置特定于环境的资源。
对于这些用例,Terraform 允许使用 Terraform CLI 配置中的 provider_installation
块从备用提供程序注册表中配置提供程序下载。 这允许定制 Terraform 缺省安装行为。 请查看 提供程序安装 的 Terraform 文档,以获取有关配置提供程序下载的更多详细信息。
在代理程序中,可以使用以下两个工作空间环境变量来配置 Terraform CLI,以引用备用存储库并从此注册表中按名称和名称空间选择提供程序。
- 托管定制 Terraform 提供程序的
TF_NETWORK_MIRROR_URL
Terraform 专用存储库,Web 站点或 Artifactory 实例。 - 要从定制位置下载的提供程序的
TF_NETWORK_MIRROR_PROVIDER_NAME
名称和名称空间。 请参阅 Terraform 文档以了解 提供程序命名和名称空间。 如果未指定,那么缺省为从专用注册表下载所有名称空间"*/*"
中的所有提供程序。
Schematics 自动生成以下 Terraform CLI 配置文件参数。 在作业执行期间,Terraform 可以将专用注册表用于您打算使用的几个定制提供程序,也可以用于所有提供程序。
provider_installation {
network_mirror {
url = "${TF_NETWORK_MIRROR_URL}"
include = ["${TF_NETWORK_MIRROR_PROVIDER_NAME}"]
}
direct {
exclude = ["TF_NETWORK_MIRROR_PROVIDER_NAME"]
}
}
设置用于访问专用提供程序注册表的凭证
对于专用注册表,必须使用目标注册表的访问令牌配置 Terraform。 在代理程序中,这些是使用 TF_TOKEN_
环境变量在工作空间级别定义的。 请参阅 Terraform 环境变量凭证 文档,以获取有关配置凭证令牌传递的更多详细信息。
将 Artifactory 用作提供者注册表
Artifactory 为 Terraform 提供者的寻源提供了替代解决方案,并且完全支持 Terraform 提供者注册表协议。 它支持使用定义的搜索顺序聚集前两种类型的远程,本地和虚拟存储库。
本地存储库是用户管理的物理本地存储库。 存储库充当 Terraform 专用注册表,您可以在其中托管定制开发的提供程序,并手动上载和保存公共提供程序,以消除对公用网络访问的需求。 或者限制可供 Terraform 用户使用的公共提供者。
远程存储库可充当专用 Terraform 注册表和公共 Terraform 注册表的高速缓存代理。 实现远程存储库仍需要公共因特网访问权。 此处的公用网络访问是通过 Artifactory 而不是 Terraform 进行的。 通常,许多组织都具有现有的 Artifactory 安装,并且已实施网络监视和网络访问规则,以允许通过 Artifactory进行安全的公共访问。
将本地存储库与远程代理存储库组合在一起的虚拟 Terraform 存储库允许在本地托管定制提供程序,以及对任何其他公共 Terraform 提供程序的安全访问。
配置本地 Artifactory 提供程序注册表
本地 Artifactory 注册表可用于托管定制开发的提供程序,以便与用户专用网络上的代理程序配合使用。 通过使用以下工作空间环境变量来配置 Artifactory 访问权,以配置 Terraform CLI 来引用本地存储库,并从此注册表中按名称和名称空间选择提供程序。
TF_TOKEN_name.artifactory.user.com:<artifactory_local_registry_token>
TF_NETWORK_MIRROR_PROVIDER_NAME:"user_namespace/provider_name"
TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/
请参考 Artifactory 文档和用户界面,获取本地注册表中的持有者令牌和值的 URL。
以下示例显示 Schematics 生成 Terraform CLI 配置。
provider_installation {
network_mirror {
url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-local/providers/"
include = ["user_namespace/provider_name"]
}
direct {
exclude = ["user_namespace/provider_name"]
}
}
配置远程 Artifactory 提供程序注册表
远程 Artifactory 注册表可用于高速缓存公用提供程序以供 Terraform 使用,而不授予 Terraform 公用网络访问权。 Artifactory 访问权是通过使用以下工作空间环境变量来配置 Terraform CLI 以引用远程存储库并使用此代理注册表检索所有提供程序来配置的。
TF_TOKEN_name.artifactory.user.com:<artifactory_remote_registry_token>
TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/
请参考 Artifactory 文档和用户界面,获取远程注册表的持有者令牌和值的 URL。
以下示例显示 Schematics 生成 Terraform CLI 配置。
provider_installation {
network_mirror {
url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-remote/providers/"
include = ["*/*"]
}
direct {
exclude = ["*/*"]
}
}
配置虚拟 Artifactory 提供程序注册表
虚拟 Artifactory 注册表可用于将定制提供程序的托管与供 Terraform 使用的公共提供程序的高速缓存相结合。 Artifactory 访问权是通过使用以下工作空间环境变量来配置 Terraform CLI 以引用虚拟存储库并使用此代理注册表检索所有提供程序来配置的。
TF_TOKEN_name.artifactory.user.com:<artifactory_virtual_registry_token>
TF_NETWORK_MIRROR_URL=https://name.artifactory.user.com>/artifactory/api/terraform/<user-terraform-virtual/providers/
请参考 Artifactory 文档和用户界面,获取虚拟注册表中的持有者令牌和值的 URL。 必须将虚拟存储库配置为本地注册表和远程注册表的聚集,如先前部分中所述。
以下示例显示 Schematics 生成 Terraform CLI 配置。
provider_installation {
network_mirror {
url = "https://name.artifactory.user.com/artifactory/api/terraform/user-terraform-virtual/providers/"
include = ["*/*"]
}
direct {
exclude = ["*/*"]
}
}