Spec-Zone.ru › OpenTofu 1.9

Адресация ресурсов

Адрес ресурса — это строка, идентифицирующая ноль или более экземпляров ресурсов в вашей конфигурации в целом.

Адрес состоит из двух частей:

Блок кода
[module path][resource spec]

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

Путь модуля​

Путь модуля задает адрес модуля в дереве модулей. Он имеет следующий вид:

Блок кода
module.module_name[module index]
  • module — ключевое слово модуля, обозначающее дочерний модуль (не корневой). Несколько ключевых слов module в пути указывают на вложенность.
  • module_name — заданное пользователем имя модуля.
  • [module index] — (необязательно) Индекс, позволяющий выбрать экземпляр из вызова модуля с несколькими экземплярами; он заключается в квадратные скобки ([ и ]).

Адрес без спецификации ресурса, то есть module.foo, применяется ко всем ресурсам модуля, если у него один экземпляр, или ко всем экземплярам модуля, если экземпляров несколько. Чтобы указать все ресурсы определенного экземпляра модуля, добавьте в адрес индекс модуля, например module.foo[0].

Если путь модуля не указан, адрес применяется к корневому модулю.

Пример использования ключевого слова module для разделения двух модулей с несколькими экземплярами:

Блок кода
module.foo[0].module.bar["a"]

Спецификация ресурса​

Спецификация ресурса указывает конкретный экземпляр ресурса в выбранном модуле. Она имеет следующий синтаксис:

Блок кода
resource_type.resource_name[instance index]
  • resource_type — тип ресурса, на который указывается адрес.
  • resource_name — заданное пользователем имя ресурса.
  • [instance index] — (необязательно) Индекс, позволяющий выбрать экземпляр ресурса с несколькими экземплярами; он заключается в квадратные скобки ([ и ]).

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

Значения индексов модулей и ресурсов​

К значениям индексов модулей и ресурсов с несколькими экземплярами применяются следующие правила:

  • [N], где N — числовой индекс с отсчетом от 0 для ресурса с несколькими экземплярами, заданными метааргументом count. Если при обращении к ресурсу, для которого задано count > 1, индекс не указан, адрес ссылается на все экземпляры.
  • ["INDEX"], где INDEX — буквенно-цифровой ключевой индекс для ресурса с несколькими экземплярами, заданными метааргументом for_each.

Примеры​

Пример count​

Предположим, что конфигурация OpenTofu содержит:

Блок кода
resource "aws_instance" "web" {
  # ...
  count = 4
}

Адрес вида:

Блок кода
aws_instance.web[3]

указывает только на последний экземпляр в конфигурации, а адрес вида:

Блок кода
aws_instance.web

указывает на все четыре экземпляра «web».

Пример for_each​

Предположим, что конфигурация OpenTofu содержит:

Блок кода
resource "aws_instance" "web" {
  # ...
  for_each = {
    "tofu": "value1",
    "resource":  "value2",
    "indexing":  "value3",
    "example":   "value4",
  }
}

Адрес вида:

Блок кода
aws_instance.web["example"]

указывает только на экземпляр «example» в конфигурации и разрешается в «value4».

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/cli/state/resource-addressing/

Spec-Zone.ru

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