Spec-Zone.ru › OpenTofu 1.11

Метааргумент provider ресурса

Метааргумент provider указывает, какой экземпляр провайдера отвечает за управление каждым экземпляром ресурса, переопределяя поведение OpenTofu по умолчанию — автоматический выбор конфигурации провайдера по умолчанию.

Как описано в разделе Конфигурация провайдера, при необходимости можно объявить несколько конфигураций для одного провайдера или несколько динамических экземпляров одной конфигурации провайдера, например, при управлении ресурсами в разных регионах с помощью провайдера, который допускает только один регион на экземпляр провайдера.

По умолчанию OpenTofu интерпретирует первое слово в имени типа ресурса (слова разделены символами подчёркивания) как локальное имя провайдера и использует конфигурацию провайдера по умолчанию. Например, тип ресурса google_compute_instance автоматически связывается с конфигурацией по умолчанию провайдера, локальное имя которого в текущем модуле — google.

С помощью метааргумента provider можно выбрать для ресурса альтернативную конфигурацию провайдера:

Блок кода
# default configuration
provider "google" {
  region = "us-central1"
}

# alternate configuration, whose alias is "europe"
provider "google" {
  alias  = "europe"
  region = "europe-west1"
}

resource "google_compute_instance" "example" {
  # This "provider" meta-argument selects the google provider
  # configuration whose alias is "europe", rather than the
  # default configuration.
  provider = google.europe

  # ...
}

Если вы выбрали конфигурацию провайдера, в которой используется for_each, необходимо также динамически выбирать отдельный экземпляр конфигурации провайдера для каждого экземпляра ресурса, добавив выражение ключа экземпляра в квадратных скобках:

Блок кода
variable "aws_regions" {
  type = map(object({
    vpc_cidr_block = string
  }))
}

provider "aws" {
  alias    = "by_region"
  for_each = var.aws_regions

  region = each.key
}

resource "aws_vpc" "private" {
  # This expression filters var.aws_regions to include only
  # the elements whose value is not null. Refer to the
  # warning in the text below for more information.
  for_each = {
    for region, config in var.aws_regions : region => config
    if config != null
  }
  provider = aws.by_region[each.key]

  cidr_block = each.value.vpc_cidr_block
}

Подробнее о синтаксисе аргумента provider можно узнать в разделе Ссылки на экземпляры провайдера.

Предупреждение

Выражение for_each ресурса не должно в точности совпадать с выражением for_each связанной с ним конфигурации провайдера.

OpenTofu использует экземпляр провайдера для планирования и выполнения всех действий, связанных с экземпляром ресурса, включая уничтожение экземпляра ресурса, удалённого из конфигурации.

Поэтому связанный с любым экземпляром ресурса экземпляр провайдера должен оставаться в конфигурации как минимум ещё один цикл планирования и применения после удаления экземпляра ресурса. В противном случае OpenTofu не сможет запланировать уничтожение экземпляра ресурса.

Подробнее об этом ограничении можно узнать в разделе Ссылки на экземпляры провайдера.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.11/language/meta-arguments/resource-provider/

Spec-Zone.ru

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