Spec-Zone.ru › OpenTofu 1.11

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

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

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

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

Продвинутая тема!

На этой странице рассматриваются технические подробности 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.11/internals/provider-meta/

Spec-Zone.ru

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