如果 Cloud Assembly 用户需要设计并运行 Terraform 集成但 Internet 连接已断开,则可以按照以下示例设置其运行时环境。
此过程假设您具有自己的 Docker 注册表,无需 Internet 连接即可访问其存储库。
创建自定义容器映像
- 构建包括 Terraform 提供程序插件二进制文件的自定义容器映像。
以下 Dockerfile 显示了使用 Terraform GCP 提供程序创建自定义映像的示例。
Dockerfile 中的基础映像
projects.registry.vmware.com/vra/terraform:latest
下载需要通过 Internet 访问位于 projects.registry.vmware.com 的 VMware Harbor 注册表。防火墙设置或代理设置可能会导致映像构建失败。可能需要允许访问 releases.hashicorp.com 以下载 Terraform 提供程序插件二进制文件。但是,可以选择使用专用注册表提供插件二进制文件。
FROM projects.registry.vmware.com/vra/terraform:latest as final # Create provider plug-in directory ARG plugins=/tmp/terraform.d/plugin-cache/linux_amd64 RUN mkdir -m 777 -p $plugins # Download and unzip all required provider plug-ins from hashicorp to provider directory RUN cd $plugins \ && wget -q https://releases.hashicorp.com/terraform-provider-google/3.58.0/terraform-provider-google_3.58.0_linux_amd64.zip \ && unzip *.zip \ && rm *.zip # For "terraform init" configure terraform CLI to use provider plug-in directory and not download from internet ENV TF_CLI_ARGS_init="-plugin-dir=$plugins -get-plugins=false"
- 在断开连接的站点上,构建、标记自定义容器映像并将自定义容器映像推送到您自己的 Docker 存储库。
- 在断开连接的站点的 Cloud Assembly 中,在 下,转到您的 Terraform 运行时集成。
- 创建或编辑运行时容器设置,以将您的存储库添加到自定义容器映像上。构建的自定义容器映像名称示例为
registry.ourcompany.com/project1/image1:latest
。
在本地托管 Terraform CLI
- 下载 Terraform CLI 二进制文件。
- 将 Terraform CLI 二进制文件上载到本地 Web 或 FTP 服务器。
- 在 Cloud Assembly 中,转到 。
- 创建或编辑 Terraform 版本,以使其包含本地服务器上托管的 Terraform CLI 二进制文件的 URL。
- 如果本地 Web 或 FTP 服务器需要登录身份验证,请选择基本身份验证,然后输入可以访问服务器的用户名和密码凭据。
要更改身份验证类型,您必须在 Cloud Assembly 中具有云管理员角色。
设计和部署 Terraform 配置
运行时准备就绪后,可以将 Terraform 配置文件添加到 git,为其设计云模板并进行部署。
要开始使用,请参见在 Cloud Assembly 中准备 Terraform 配置。
故障排除
部署时,在 Cloud Assembly 中打开部署。在“历史记录”选项卡下,查找 Terraform 事件,然后单击右侧的显示日志。本地 Terraform 提供程序正常运行时,日志中会显示以下消息。
Initializing provider plugins
Terraform has been successfully initialized
要获得更可靠的日志,可以手动编辑云模板代码以添加 TF_LOG: DEBUG
,如以下示例所示。
resources: terraform: type: Cloud.Terraform.Configuration properties: providers: - name: google # List of available cloud zones: gcp/us-west1 cloudZone: gcp/us-west1 environment: # Configure terraform CLI debug log settings TF_LOG: DEBUG terraformVersion: 0.12.29 configurationSource: repositoryId: fc569ef7-f013-4489-9673-6909a2791071 commitId: 3e00279a843a6711f7857929144164ef399c7421 sourceDirectory: gcp-simple
创建您自己的基础映像
尽管 VMware 偶尔会更新 projects.registry.vmware.com/vra/terraform:latest
上的基础映像,但该映像可能已过期并包含漏洞。
要构建您自己的基础映像,请改用以下 Dockerfile。
FROM alpine:latest as final RUN apk add --no-cache git wget curl openssh