community.general.terraform 模块 – 管理 Terraform 部署(和计划)
注意
此模块是 community.general 集合(版本 10.1.0)的一部分。
如果您使用的是 ansible
软件包,则可能已安装此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用:ansible-galaxy collection install community.general
。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定:community.general.terraform
。
概要
提供对使用 Terraform 部署资源并将资源信息拉回 Ansible 的支持。
要求
以下要求在执行此模块的主机上是必需的。
terraform
参数
参数 |
注释 |
---|---|
一组键值对,在初始化阶段提供给 -backend-config 参数。 |
|
在初始化状态下提供给 -backend-config 参数的配置文件路径。这可以接受指向多个配置文件的路径列表。 |
|
要使用的 terraform 二进制文件的路径,相对于“service_path”,除非您提供绝对路径。 |
|
仅当没有资源被销毁时才应用。请注意,这只会阻止“destroy”操作,而不会阻止“destroy and re-create”操作。当 选项
|
|
启用/禁用处理 如果 禁用时,仅支持简单的变量(字符串、整数和浮点数),并将其未加引号地传递。 选项
|
|
为了避免重复基础设施,如果找不到状态文件,这将强制执行 选项
|
|
在初始化期间强制执行后端重新配置。 选项
|
|
启用状态文件锁定,如果您使用接受锁定的服务(例如 S3+DynamoDB)来存储您的状态文件。 选项
|
|
如果使用接受锁定的服务(例如 S3+DynamoDB),则保持状态文件锁定的时间长度。 |
|
限制 Terraform 应用计划时的并发操作。 |
|
要应用的现有 Terraform 计划文件的路径。如果未指定此项,Ansible 将构建一个新的 TF 计划并执行它。请注意,如果“state”具有“planned”值,则此选项是必需的。 |
|
包含 Terraform 插件可执行文件的路径列表。 可以从 https://releases.hashicorp.com/ 下载插件可执行文件。 设置后,将禁用 Terraform 的插件发现和自动下载行为。 插件路径中的目录结构可能很复杂。Terraform 文档 https://learn.hashicorp.com/tutorials/terraform/automate-terraform#pre-installed-plugins 显示了一个简单的文件目录,但实际上,目录结构必须遵循与 Terraform 自动下载插件时看到的结构相同的结构。请参阅下面的示例,了解示例插件目录的树输出。 |
|
包含要使用的 vars.tf/main.tf/等的 Terraform 目录根路径。 |
|
允许 Terraform init 将提供程序升级到项目版本约束中指定的版本。 选项
|
|
仅适用于 state = absent 如果为 true,则在“terraform destroy”操作后将删除工作区。 “default”工作区不会被删除。 选项
|
|
给定阶段/项目的目标状态 选项
|
|
构建计划时要使用的现有 Terraform 状态文件的路径。如果未指定此项,将使用默认的 指定 plan 时,此选项将被忽略。 |
|
要在本计划/应用程序中定位的特定资源列表。此处选择的资源也将自动包含任何依赖项。 默认值: |
|
一组键值对,用于覆盖模板变量或变量文件中的变量。默认情况下,只允许字符串和数字值,这些值将不带引号传递。 当 Ansible整数或浮点数映射到Terraform数字。 Ansible字符串映射到Terraform字符串。 Ansible字典映射到Terraform对象。 Ansible列表映射到Terraform列表。 Ansible布尔值映射到Terraform布尔值。 注意 作为变量传递的密码将显示在日志输出中。在生产环境中务必使用 |
|
Terraform变量文件的路径,用于填充到TF配置中。可以接受指向多个变量文件的路径列表。 |
|
要使用的Terraform工作区。这将设置 默认值: |
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 |
|
支持:完全支持 在community.general 8.3.0版本中添加 |
在差异模式下,将返回有关已更改内容(或在 |
备注
注意
要仅运行
terraform plan
,请使用检查模式。
示例
- name: Basic deploy of a service
community.general.terraform:
project_path: '{{ project_dir }}'
state: present
- name: Define the backend configuration at init
community.general.terraform:
project_path: 'project/'
state: "{{ state }}"
force_init: true
backend_config:
region: "eu-west-1"
bucket: "some-bucket"
key: "random.tfstate"
- name: Define the backend configuration with one or more files at init
community.general.terraform:
project_path: 'project/'
state: "{{ state }}"
force_init: true
backend_config_files:
- /path/to/backend_config_file_1
- /path/to/backend_config_file_2
- name: Disable plugin discovery and auto-download by setting plugin_paths
community.general.terraform:
project_path: 'project/'
state: "{{ state }}"
force_init: true
plugin_paths:
- /path/to/plugins_dir_1
- /path/to/plugins_dir_2
- name: Complex variables example
community.general.terraform:
project_path: '{{ project_dir }}'
state: present
complex_vars: true
variables:
vm_name: "{{ inventory_hostname }}"
vm_vcpus: 2
vm_mem: 2048
vm_additional_disks:
- label: "Third Disk"
size: 40
thin_provisioned: true
unit_number: 2
- label: "Fourth Disk"
size: 22
thin_provisioned: true
unit_number: 3
force_init: true
### Example directory structure for plugin_paths example
# $ tree /path/to/plugins_dir_1
# /path/to/plugins_dir_1/
# └── registry.terraform.io
# └── hashicorp
# └── vsphere
# ├── 1.24.0
# │ └── linux_amd64
# │ └── terraform-provider-vsphere_v1.24.0_x4
# └── 1.26.0
# └── linux_amd64
# └── terraform-provider-vsphere_v1.26.0_x4
返回值
常用返回值已在此处记录,以下是此模块特有的字段
键 |
描述 |
---|---|
此模块构建的完整 返回:始终返回 示例: |
|
所有TF输出的字典,按其指定名称排列。使用 返回:成功时返回 示例: |
|
Terraform是否已将此值标记为敏感值 返回:始终返回 |
|
值的类型(字符串、整数等) 返回:始终返回 |
|
由Terraform解释的输出值 返回:始终返回 |
|
完整的 返回:始终返回 示例: |