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',除非您提供绝对路径。 |
|
启用/禁用处理 如果 禁用时,仅支持简单变量(字符串、整数和浮点数),并将其未加引号地传递。 选项
|
|
为了避免重复基础设施,如果找不到状态文件,这将强制执行 选项
|
|
强制在初始化期间重新配置后端。 选项
|
|
启用状态文件锁定,如果您使用接受锁定的服务(例如 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/etc 的 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 解释的输出值 返回:始终 |
|
完整的 返回:始终 示例: |