Spec-Zone.ru › Ansible

Модуль 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

Путь к исполняемому файлу terraform. Путь указывается относительно ‘service_path’, если не задан абсолютный путь.

check_destroy

boolean

добавлено в community.general 3.3.0

Выполнять применение, только если ни один ресурс не удаляется. Обратите внимание: это предотвращает только действия «destroy», но не действия «destroy and re-create». Этот параметр игнорируется, если state=absent.

Варианты:

  • false ← (по умолчанию)
  • true

complex_vars

boolean

добавлено в community.general 5.7.0

Включить или отключить поддержку сложных структур переменных для terraform.

Если true, параметр variables также принимает словари, списки и логические значения для передачи в terraform. Передаваемые строки корректно заключаются в кавычки.

Если поддержка отключена, допускаются только простые переменные (строки, целые числа и числа с плавающей точкой), которые передаются без кавычек.

Варианты:

  • false ← (по умолчанию)
  • true

force_init

boolean

Чтобы избежать дублирования инфраструктуры, если файл состояния не найден, принудительно выполняется terraform init. Обычно этот параметр следует отключить, если только вы не собираетесь подготовить совершенно новое развертывание Terraform.

Варианты:

  • false ← (по умолчанию)
  • true

init_reconfigure

boolean

добавлено в community.general 1.3.0

Принудительно перенастраивает бэкенд во время инициализации.

Варианты:

  • false ← (по умолчанию)
  • true

lock

boolean

Включить блокировку файла состояния, если для его хранения используется сервис, поддерживающий блокировки (например, S3+DynamoDB).

Варианты:

  • false
  • true ← (по умолчанию)

lock_timeout

integer

Как долго сохранять блокировку файла состояния, если используется сервис, поддерживающий блокировки (например, S3+DynamoDB).

no_color

boolean

добавлено в community.general 11.0.0

Если true, отключает цветовые коды в выводе команд Terraform.

Если false, Terraform может использовать цветовые коды в выводе.

Варианты:

  • false
  • true ← (по умолчанию)

overwrite_init

boolean

добавлено в community.general 3.2.0

Выполнять init, даже если .terraform/terraform.tfstate уже существует в project_path.

Варианты:

  • false
  • true ← (по умолчанию)

parallelism

integer

добавлено в community.general 3.8.0

Ограничивает число параллельных операций при применении плана Terraform.

plan_file

path

Путь к существующему файлу плана Terraform для применения. Если параметр не указан, Ansible создает новый план TF и выполняет его. Обратите внимание: этот параметр обязателен, если state=planned.

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 с файлами vars.tf/main.tf и т. д., которые нужно использовать.

provider_upgrade

boolean

добавлено в community.general 4.8.0

Разрешает Terraform init обновлять провайдеры до версий, указанных в ограничениях версий проекта.

Варианты:

  • false ← (по умолчанию)
  • true

purge_workspace

boolean

Работает только при state = absent.

Если true, workspace удаляется после действия terraform destroy.

Если workspace=default, он не удаляется.

Варианты:

  • false ← (по умолчанию)
  • true

state

string

Целевое состояние указанного этапа/проекта.

Варианты:

  • "planned"
  • "present" ← (по умолчанию)
  • "absent"

state_file

path

Путь к существующему файлу состояния Terraform, который будет использоваться при построении плана. Если параметр не указан, используется файл по умолчанию terraform.tfstate.

Этот параметр игнорируется, если указан план.

targets

list / elements=string

Список конкретных ресурсов, на которые следует нацелить этот план/применение. Зависимости выбранных здесь ресурсов также включаются автоматически.

По умолчанию: []

variables

dictionary

Набор пар «ключ — значение» для переопределения переменных шаблона или переменных из файлов переменных. По умолчанию допускаются только строки и числа, которые передаются без кавычек.

Поддерживает сложные структуры переменных (списки, словари, числа и логические значения), соответствующие синтаксису переменных Terraform, если complex_vars=true.

Целые числа и числа с плавающей точкой Ansible преобразуются в числа Terraform.

Строки Ansible преобразуются в строки Terraform.

Словари Ansible преобразуются в объекты Terraform.

Списки Ansible преобразуются в списки Terraform.

Логические значения Ansible преобразуются в логические значения Terraform.

Примечание Пароли, переданные в качестве переменных, видны в выводе журнала. Обязательно используйте no_log=true в рабочей среде!

variables_files

псевдонимы: variables_file

list / elements=path

Путь к файлу переменных, значения из которого Terraform подставляет в конфигурации TF. Можно указать список путей к нескольким файлам переменных.

workspace

string

Рабочая область Terraform, с которой нужно работать. Устанавливает переменную среды TF_WORKSPACE, используемую для переопределения выбора рабочей области. Подробнее о рабочих областях см. в разделе https://developer.hashicorp.com/terraform/language/state/workspaces.

По умолчанию: "default"

Атрибуты

Атрибут

Поддержка

Описание

check_mode

Поддержка: полная

Может работать в режиме check_mode и возвращать прогноз изменения состояния, не изменяя целевой объект.

diff_mode

Поддержка: полная

добавлено в community.general 8.3.0

В режиме diff возвращает сведения об изменениях (или о возможных изменениях в check_mode).

Примечания

Примечание

  • Чтобы только выполнить 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

Полная команда terraform, сформированная этим модулем, — пригодится, если вы захотите повторно выполнить команду за пределами модуля или отладить проблему.

Возвращается: всегда

Пример: "terraform apply ..."

outputs

complex

Словарь всех выходных значений TF с присвоенными им именами. Используйте outputs.MyOutputName.value для доступа к значению.

Возвращается: при успешном выполнении

Пример: "{\"bukkit_arn\": {\"sensitive\": false, \"type\": \"string\", \"value\": \"arn:aws:s3:::tf-test-bukkit\"}"

sensitive

boolean

Отмечено ли это значение в Terraform как конфиденциальное.

Возвращается: всегда

type

string

Тип значения (строка, целое число и т. д.).

Возвращается: всегда

value

string

Значение выходного параметра после интерполяции Terraform.

Возвращается: всегда

Авторы

  • Ryan Scott Brown (@ryansb)

Ссылки на коллекцию

  • Отслеживание проблем
  • Репозиторий (исходный код)
  • Запросить помощь
  • Отправить отчет об ошибке
  • Предложить новую функцию
  • Связь с сообществом

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API