Spec-Zone.ru › OpenTofu 1.12

Метаданные провайдера

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

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

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

Дополнительная тема!

На этой странице рассматриваются технические подробности OpenTofu. Для эффективного использования OpenTofu не обязательно разбираться в них. Здесь они приведены для авторов модулей и разработчиков провайдеров, работающих над расширенными функциями.

Экспериментальная функция!

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

Определение схемы​

Прежде чем провайдер сможет получать информацию от модуля, он должен строго определить данные, которые может принимать. Для этого задайте свойство ProviderMeta в структуре schema.Provider. Оно работает аналогично конфигурации провайдера: это карта, в которой строкам сопоставлены значения schema.Schema, описывающие допустимое содержимое этих строк.

Использование данных​

Когда OpenTofu вызывает ваш провайдер, вы можете использовать schema.ResourceData, которые уже применяются в функциях Create, Read и Update, чтобы получить переданные метаданные провайдера. Сначала определите структуру, соответствующую вашей схеме, а затем вызовите метод GetProviderSchema для вашего schema.ResourceData, передав указатель на переменную этого типа. Переменная будет заполнена метаданными провайдера. Если при разборе данных и заполнении структуры возникнет ошибка, метод вернёт её.

Указание данных в модулях​

Чтобы включить данные в модули, создайте вложенный блок provider_meta в блоке terraform вашего модуля, указав имя провайдера, которому передаётся информация:

Блок кода
terraform {
  provider_meta "my-provider" {
    hello = "world"
  }
}

Блок provider_meta должен соответствовать схеме, определённой провайдером.

Управление версиями модулей​

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

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

Spec-Zone.ru

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