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。
1.3.1.1. 配置 hashicorp.terraform.configuration_version 模块 复制链接链接已复制到粘贴板!
要迁移到 hashicorp.terraform 集合,您必须配置 hashicorp.terraform.configuration_version 模块。此模块管理 Terraform Enterprise 或 HCP Terraform 中的配置版本。
先决条件
-
安装 Ansible Automation Platform 认证
有hicorp.terraform集合。 - 验证在 Terraform Enterprise 或 HCP Terraform 中正确设置了有效的机构和工作区。
流程
从
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配置以下所需参数:
-
workspace_id或workspace+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)。
-
- 根据需要设置其他 可选参数。
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 中正确设置了有效的机构和工作区。
流程
创建 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配置以下所需参数:
-
workspace_id或workspace+organization: 将创建配置版本的工作区 ID 或工作区名称和组织,该文件将被上传(表示state: present)。 -
run_id: 要应用、取消或丢弃操作的目标的唯一标识符。 -
tf_token: Terraform API 身份验证令牌。如果没有设置这个值,则使用TF_TOKEN环境变量。
-
(可选)配置内置的轮询选项,以确定 Terraform Enterprise 或 HCP Terraform 操作的等待周期完成:
-
poll: true:(默认)每poll_interval秒(默认为 5s)检查运行状态,直到达到 completion 或poll_timeout(default: 25s)为止,返回最终状态。 -
poll: false: 在启动运行后立即返回,而不等待。
-
- 根据需要设置其他 可选参数。
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
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使用 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"
1.3.1.3.2. 示例 2:计划和应用 复制链接链接已复制到粘贴板!
之前(
cloud.terraform.terraform):生成计划:
- 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应用计划:
- 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
之后(隐藏corp.terraform.run):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- 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选项 2: 使用两个子步骤来创建
save_plan运行,然后应用它:创建计划:
- 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应用计划。您可以从 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
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-migrateCLI 指令进行操作。 - 确保 HCP Terraform 或 TFE 工作区没有设置为自动应用计划。
流程
要防止针对 TFE 或 HCP Terraform 运行 playbook 时的错误,请在运行 playbook 前执行以下操作:
- 确认执行环境中的 Terraform 版本与 TFE 或 HCP Terraform 中声明的版本相同。
在 TFE 或 HCP Terraform 中执行初始化:
terraform init- 如果您在执行环境中有一个本地状态文件,请删除本地状态文件。
- 从 HCP Terraform 或 Terraform Enterprise 获取令牌,您将用来在后续步骤中创建凭证。确保令牌具有必要的权限,基于团队或用户令牌在 playbook 中执行所需的功能。
- 从 playbook 定义中删除后端配置文件和文件。
如果要在 TF 配置中的默认设置或环境变量中添加工作区,如果要定义在更新 playbook 本身外的工作空间。
注意您可以将工作区添加到 playbook 中,以扩展工作空间利用率。
在 Ansible Automation Platform 用户界面中:
(可选)在迁移完成后,您可以从执行环境中的集合运行额外的模块和插件: