1.3. 从其他版本进行迁移


从早期的集合或社区版本迁移,以使用 HashiCorp 和 Ansible Automation Platform 集成的最高级功能。

1.3.1. 从 cloud.terraform 迁移到 hashicorp.terraform

如果您使用现有的 cloud.terraform (CLI-form)集合,您可以将现有的 playbook 迁移到具有hicorp.terraform (API)集合的 hashicorp.terraform。需要配置的 hashicorp.terraform 的主要模块是 hicorp.terraform.configuration_version,并且有 hicorp.terraform.run

要迁移到 hashicorp.terraform 集合,您必须配置 hashicorp.terraform.configuration_version 模块。此模块管理 Terraform Enterprise 或 HCP Terraform 中的配置版本。

先决条件

  • 安装 Ansible Automation Platform 认证 有hicorp.terraform 集合。
  • 验证在 Terraform Enterprise 或 HCP Terraform 中正确设置了有效的机构和工作区。

流程

  1. cloud.terraform 模块中复制您的自动化任务。

    示例

    - name: Create configuration version with auto_queue_runs to false
      hashicorp.terraform.configuration_version:
       workspace_id: ws-1234
       configuration_files_path: "/usr/home/tf"
       auto_queue_runs: false
       tf_validate_certs: true
       poll_interval: 3
       poll_timeout: 15
       state: present
    Copy to Clipboard Toggle word wrap
  2. 配置以下所需参数:

    • workspace_idworkspace + organization 将创建配置版本的工作区 ID 或工作区名称和组织,该文件将被上传(表示 state: present)。
    • configuration_files_path 上传所需 Terraform Enterprise 或 HCP Terraform 文件的路径来创建配置版本(用于 state: present)。模块接受 configuration_files_path 的两个文件类型:

      • 目录: 包含 Terraform Enterprise 或 HCP Terraform 文件的任何文件夹。模块会自动从所有内容中自动创建 .tar.gz 文件。
      • .tar.gz Archive: Pre-compressed gzip tarball.模块验证 TAR 格式和 gzip 压缩。
    • configuration_version_id 要存档的配置版本 ID (状态: archive)。此操作会删除关联的上传的 .tar.gz 文件。注意以下几点:

      • 仅上传使用 API 或 CLI 创建的版本,没有活跃的运行,且不是任何工作区的当前版本可以被归档。
      • 如果未指定 configuration_version_id,Terraform Enterprise 或 HCP Terraform 在工作区中选择最新的批准的 configuration_version_id
    • auto_queue_runs : 确定 Terraform Enterprise 或 HCP Terraform 是否在配置上传后自动启动(默认为true ),或者需要手动启动(false)。
  3. 根据需要设置其他 可选参数

1.3.1.2. 配置 hashicorp.terraform.run 模块

hashicorp.terraform.run 模块可让您使用 create, apply, cancel, 和 discard 操作来管理 Terraform Enterprise 或 HCP Terraform 运行。您可以使用可自定义设置在指定的工作区上触发计划或应用操作。

先决条件

  • 确保正确配置了有效的 Terraform API 令牌,以便与您的 Terraform Enterprise 或 HCP Terraform 环境进行身份验证。
  • 验证在 Terraform Enterprise 或 HCP Terraform 中正确设置了有效的机构和工作区。

流程

  1. 创建 run 模块。

    示例

    - name: Create a destroy run with auto_apply
      hashicorp.terraform.run:
      workspace_id: ws-1234
      run_message: "destroy vpc"
      state: "present"
      tf_token: <your token>
      is_destroy: true
      auto_apply: true
      target_addrs:
        - "aws_vpc.vpc1"
        - "aws_vpc.vpc2"
      poll: true
      poll_interval: 10
      poll_timeout: 30
    Copy to Clipboard Toggle word wrap
  2. 配置以下所需参数:

    • workspace_idworkspace + organization 将创建配置版本的工作区 ID 或工作区名称和组织,该文件将被上传(表示 state: present)。
    • run_id 要应用、取消或丢弃操作的目标的唯一标识符。
    • tf_token: Terraform API 身份验证令牌。如果没有设置这个值,则使用 TF_TOKEN 环境变量。
  3. (可选)配置内置的轮询选项,以确定 Terraform Enterprise 或 HCP Terraform 操作的等待周期完成:

    • poll: true :(默认)每 poll_interval 秒(默认为 5s)检查运行状态,直到达到 completion 或 poll_timeout (default: 25s)为止,返回最终状态。
    • poll: false : 在启动运行后立即返回,而不等待。
  4. 根据需要设置其他 可选参数

1.3.1.3. 带有corp.terraform 模块的迁移示例

这些示例前后用于帮助用户了解如何在真实环境中配置模块。

1.3.1.3.1. 示例 1:仅计划
  • 之前(cloud.terraform.terraform):
- name: Create a plan file using check mode
  cloud.terraform.terraform:
   force_init: true
   project_path: "/usr/home/tf"
   plan_file: "/usr/home/tf/terraform.tfplan"
   state: present
   check_mode: true
   check_destroy: true
   variables:
     environment: prod
Copy to Clipboard Toggle word wrap
  • After (hicorp.terraform reference):

    • configuration_version 模块:

      - name: Create configuration version with auto_queue_runs to false
        hashicorp.terraform.configuration_version:
         workspace_id: ws-1234
         configuration_files_path: "usr/home/tf_files"
         auto_queue_runs: false
         tf_validate_certs: true
         poll_interval: 5
         poll_timeout: 10
         state: present
      Copy to Clipboard Toggle word wrap
    • 使用 run 模块运行 plan_only

      - name: Create a plan only run with variables
        hashicorp.terraform.run:
         workspace_id: ws-1234
         run_message: "plan-only vpc creation"
         poll: false
         state: "present"
         tf_token: "{{ tfc_token }}"
         plan_only: true
         variables:
          - key: "env"
            value: "production"
      Copy to Clipboard Toggle word wrap
1.3.1.3.2. 示例 2:计划和应用
  • 之前(cloud.terraform.terraform):

    1. 生成计划:

      - name: Plan and Apply Workflow - Step 1 - Generate Plan
        cloud.terraform.terraform:
         force_init: true
         project_path: "/usr/home/tf"
         plan_file: "/usr/home/tf/workflow.tfplan"
         state: present
         check_mode: true
         variables:
           environment: prod
      Copy to Clipboard Toggle word wrap
    2. 应用计划:

      - name: Plan and Apply Workflow - Step 2 - Apply Plan
        cloud.terraform.terraform:
         project_path:  "/usr/home/tf"
         plan_file: "/usr/home/tf/workflow.tfplan"
         state: present
      Copy to Clipboard Toggle word wrap
  • 之后(隐藏corp.terraform.run):

    1. configuration_version 模块:

      - name: Create configuration version with auto_queue_runs to false
        hashicorp.terraform.configuration_version:
         workspace_id: ws-1234
         configuration_files_path: "usr/home/tf_files"
         auto_queue_runs: false
         tf_validate_certs: true
         poll_interval: 5
         poll_timeout: 10
         state: present
      Copy to Clipboard Toggle word wrap
    2. run 模块具有两个用于计划和应用工作流的选项:
  • 选项 1: 使用 auto_apply 参数来处理计划并应用工作流:

    - name: Create a run with auto_apply
      hashicorp.terraform.run:
       workspace_id: ws-1234
       run_message: "destroy vpc"
       state: "present"
       tf_token: "{{ tfc_token }}"
       auto_apply: true
       poll: true
       poll_interval: 10
       poll_timeout: 30
    Copy to Clipboard Toggle word wrap
  • 选项 2: 使用两个子步骤来创建 save_plan 运行,然后应用它:

    1. 创建计划:

      - name: Create a save plan run
        hashicorp.terraform.run:
         workspace_id: ws-1234
         run_message: "save plan vpc creation"
         state: "present"
         tf_token: "{{ tfc_token }}"
         poll: true
         poll_interval: 10
         poll_timeout: 30
         save_plan: true
      Copy to Clipboard Toggle word wrap
    2. 应用计划。您可以从 run 模块任务的输出中获取 run_id

      - name: Apply the save plan run
        hashicorp.terraform.run:
         run_id: run-1234
         state: "applied"
         tf_token: "{{ tfc_token }}"
         poll: true
         poll_interval: 10
         poll_timeout: 30
      Copy to Clipboard Toggle word wrap

1.3.2. 从 Terraform 社区版本迁移

如果要将 Ansible Automation Platform 与 Terraform Enterprise (TFE)或 HCP Terraform 搭配使用,且您当前正在使用 Terraform 社区版本(TCE),您必须迁移到 TFE 或 HCP Terraform,然后更新 Ansible Automation Platform 配置以使用 TFE 或 HCP Terraform。

1.3.2.1. 从社区版本迁移

当您从 TCE 迁移到 TFE 或 HCP Terraform 时,您不会迁移集合本身。相反,您要调整现有 TCE 使用量以使用 TFE 或 HCP Terraform。

迁移后,您必须更新 Ansible Automation Platform 凭证、执行环境和作业模板。

注意

cloud.terraform 集合只支持 HCP Terraform 中的 CLI 驱动的工作流。

先决条件

  • 使用最新支持的 Terraform 版本(1.11 或更高版本)。
  • 按照下面的 附加资源 下的 tf-migrate CLI 指令进行操作。
  • 确保 HCP Terraform 或 TFE 工作区没有设置为自动应用计划。

流程

  1. 要防止针对 TFE 或 HCP Terraform 运行 playbook 时的错误,请在运行 playbook 前执行以下操作:

    1. 确认执行环境中的 Terraform 版本与 TFE 或 HCP Terraform 中声明的版本相同。
    2. 在 TFE 或 HCP Terraform 中执行初始化:

      terraform init
      Copy to Clipboard Toggle word wrap
    3. 如果您在执行环境中有一个本地状态文件,请删除本地状态文件。
    4. 从 HCP Terraform 或 Terraform Enterprise 获取令牌,您将用来在后续步骤中创建凭证。确保令牌具有必要的权限,基于团队或用户令牌在 playbook 中执行所需的功能。
    5. 从 playbook 定义中删除后端配置文件和文件。
    6. 如果要在 TF 配置中的默认设置或环境变量中添加工作区,如果要定义在更新 playbook 本身外的工作空间。

      注意

      您可以将工作区添加到 playbook 中,以扩展工作空间利用率。

  2. 在 Ansible Automation Platform 用户界面中:

  3. (可选)在迁移完成后,您可以从执行环境中的集合运行额外的模块和插件:

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部