Spec-Zone.ru › OpenTofu 1.9

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

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

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

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

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

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

Spec-Zone.ru

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