Модуль community.general.terraform — управление развертыванием Terraform (и планами)
Примечание
Этот модуль входит в коллекцию community.general (версия 12.6.1).
Возможно, эта коллекция уже установлена, если вы используете пакет ansible. Она не входит в ansible-core. Чтобы проверить, установлена ли она, выполните ansible-galaxy collection list.
Для установки используйте: ansible-galaxy collection install community.general. Для использования этого модуля требуются дополнительные компоненты. Подробнее см. в разделе Требования.
Чтобы использовать модуль в плейбуке, укажите: community.general.terraform.
Краткое описание
- Обеспечивает поддержку развертывания ресурсов с помощью Terraform и передачи информации о ресурсах обратно в Ansible.
Требования
На хосте, выполняющем этот модуль, должны быть установлены следующие компоненты.
- terraform
Параметры
Параметр | Комментарии |
|---|---|
backend_config dictionary | Набор пар «ключ — значение», передаваемых на этапе инициализации параметру -backend-config. |
backend_config_files list / elements=path добавлено в community.general 0.2.0 | Путь к файлу конфигурации, передаваемому на этапе инициализации параметру -backend-config. Можно указать список путей к нескольким файлам конфигурации. |
binary_path path | Путь к исполняемому файлу |
check_destroy boolean добавлено в community.general 3.3.0 | Выполнять применение, только если ни один ресурс не удаляется. Обратите внимание: это предотвращает только действия «destroy», но не действия «destroy and re-create». Этот параметр игнорируется, если Варианты:
|
complex_vars boolean добавлено в community.general 5.7.0 | Включить или отключить поддержку сложных структур переменных для Если Если поддержка отключена, допускаются только простые переменные (строки, целые числа и числа с плавающей точкой), которые передаются без кавычек. Варианты:
|
force_init boolean | Чтобы избежать дублирования инфраструктуры, если файл состояния не найден, принудительно выполняется Варианты:
|
init_reconfigure boolean добавлено в community.general 1.3.0 | Принудительно перенастраивает бэкенд во время инициализации. Варианты:
|
lock boolean | Включить блокировку файла состояния, если для его хранения используется сервис, поддерживающий блокировки (например, S3+DynamoDB). Варианты:
|
lock_timeout integer | Как долго сохранять блокировку файла состояния, если используется сервис, поддерживающий блокировки (например, S3+DynamoDB). |
no_color boolean добавлено в community.general 11.0.0 | Если Если Варианты:
|
overwrite_init boolean добавлено в community.general 3.2.0 | Выполнять init, даже если Варианты:
|
parallelism integer добавлено в community.general 3.8.0 | Ограничивает число параллельных операций при применении плана Terraform. |
plan_file path | Путь к существующему файлу плана Terraform для применения. Если параметр не указан, Ansible создает новый план TF и выполняет его. Обратите внимание: этот параметр обязателен, если |
plugin_paths list / elements=path добавлено в community.general 3.0.0 | Список путей, содержащих исполняемые файлы плагинов Terraform. Исполняемые файлы плагинов можно скачать с сайта https://releases.hashicorp.com/. Если этот параметр задан, Terraform не выполняет поиск плагинов и их автоматическую загрузку. Структура каталогов в пути к плагинам может быть непростой. В документации Terraform по адресу https://learn.hashicorp.com/tutorials/terraform/automate-terraform#pre-installed-plugins показан простой каталог с файлами, но на самом деле структура каталогов должна соответствовать той, которая создается при автоматической загрузке плагинов Terraform. Примеры ниже показывают дерево каталогов для примера каталога плагинов. |
project_path path / обязательный | Путь к корневому каталогу Terraform с файлами |
provider_upgrade boolean добавлено в community.general 4.8.0 | Разрешает Terraform init обновлять провайдеры до версий, указанных в ограничениях версий проекта. Варианты:
|
purge_workspace boolean | Работает только при state = absent. Если Если Варианты:
|
state string | Целевое состояние указанного этапа/проекта. Варианты:
|
state_file path | Путь к существующему файлу состояния Terraform, который будет использоваться при построении плана. Если параметр не указан, используется файл по умолчанию Этот параметр игнорируется, если указан план. |
targets list / elements=string | Список конкретных ресурсов, на которые следует нацелить этот план/применение. Зависимости выбранных здесь ресурсов также включаются автоматически. По умолчанию: |
variables dictionary | Набор пар «ключ — значение» для переопределения переменных шаблона или переменных из файлов переменных. По умолчанию допускаются только строки и числа, которые передаются без кавычек. Поддерживает сложные структуры переменных (списки, словари, числа и логические значения), соответствующие синтаксису переменных Terraform, если Целые числа и числа с плавающей точкой Ansible преобразуются в числа Terraform. Строки Ansible преобразуются в строки Terraform. Словари Ansible преобразуются в объекты Terraform. Списки Ansible преобразуются в списки Terraform. Логические значения Ansible преобразуются в логические значения Terraform. Примечание Пароли, переданные в качестве переменных, видны в выводе журнала. Обязательно используйте |
variables_files псевдонимы: variables_file list / elements=path | Путь к файлу переменных, значения из которого Terraform подставляет в конфигурации TF. Можно указать список путей к нескольким файлам переменных. |
workspace string | Рабочая область Terraform, с которой нужно работать. Устанавливает переменную среды По умолчанию: |
Атрибуты
Атрибут | Поддержка | Описание |
|---|---|---|
check_mode | Поддержка: полная | Может работать в режиме |
diff_mode | Поддержка: полная добавлено в community.general 8.3.0 | В режиме diff возвращает сведения об изменениях (или о возможных изменениях в |
Примечания
Примечание
- Чтобы только выполнить
terraform plan, используйте режим проверки.
Примеры
- name: Basic deploy of a service
community.general.terraform:
project_path: '{{ project_dir }}'
state: present
- name: Deploy with color output enabled
community.general.terraform:
project_path: '{{ project_dir }}'
state: present
no_color: false
- 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
Возвращаемые значения
Общие возвращаемые значения описаны здесь. Ниже перечислены поля, уникальные для этого модуля:
Ключ | Описание |
|---|---|
command string | Полная команда Возвращается: всегда Пример: |
outputs complex | Словарь всех выходных значений TF с присвоенными им именами. Используйте Возвращается: при успешном выполнении Пример: |
|
sensitive boolean |
Отмечено ли это значение в Terraform как конфиденциальное. Возвращается: всегда |
|
type string |
Тип значения (строка, целое число и т. д.). Возвращается: всегда |
|
value string |
Значение выходного параметра после интерполяции Terraform. Возвращается: всегда |
Ссылки на коллекцию
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/collections/community/general/terraform_module.html