Spec-Zone.ru › OpenTofu 1.9

Метааргумент ресурса 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.9/language/meta-arguments/resource-provider/

Spec-Zone.ru

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