如果 vRealize Automation Cloud Assembly 用户需要设计并运行 Terraform 集成但 Internet 连接已断开,则可以按照以下示例设置其运行时环境。

注: 必须在设置过程中暂时连接到 Internet。

此过程假设您具有自己的 Docker 注册表,无需 Internet 连接即可访问其存储库。

创建自定义容器映像

  1. 构建包括 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"
  2. 构建、标记自定义容器映像,以及将自定义容器映像推送到您自己的 Docker 存储库。
  3. vRealize Automation Cloud Assembly 中的基础架构 > 连接 > 集成下,转到您的 Terraform 运行时集成。
  4. 创建或编辑运行时容器设置,以将您的存储库添加到自定义容器映像上。构建的自定义容器映像名称示例为 registry.ourcompany.com/project1/image1:latest
    Terraform 容器映像

在本地托管 Terraform CLI

  1. 下载 Terraform CLI 二进制文件。
  2. 将 Terraform CLI 二进制文件上载到本地 Web 或 FTP 服务器。
  3. vRealize Automation Cloud Assembly 中,转到基础架构 > 配置 > Terraform 版本
  4. 创建或编辑 Terraform 版本,以使其包含本地服务器上托管的 Terraform CLI 二进制文件的 URL。
  5. 如果本地 Web 或 FTP 服务器需要登录身份验证,请选择基本身份验证,然后输入可以访问服务器的用户名和密码凭据。

    要更改身份验证类型,您必须在 vRealize Automation Cloud Assembly 中具有云管理员角色。

    Terraform CLI URL

设计和部署 Terraform 配置

运行时准备就绪后,可以将 Terraform 配置文件添加到 git,为其设计云模板并进行部署。

要开始使用,请参见在 vRealize Automation Cloud Assembly 中准备 Terraform 配置

故障排除

部署时,在 vRealize Automation 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