Spec-Zone.ru › OpenTofu 1.9

Команда: providers lock

Команда tofu providers lock обращается к вышестоящим реестрам (по умолчанию), чтобы записать сведения о зависимостях провайдеров в файл блокировки зависимостей.

Обычно файл блокировки зависимостей обновляется как побочный эффект обычной установки провайдеров во время выполнения команды tofu init, однако есть несколько ситуаций, в которых такого автоматического подхода может быть недостаточно:

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

    Если использовать tofu lock для записи официальных контрольных сумм выпуска провайдера в файл блокировки зависимостей, то при последующих запусках tofu init будут проверять доступные в выбранном зеркале пакеты на соответствие ранее записанным официальным контрольным суммам. Это даст дополнительную уверенность в том, что зеркало предоставляет именно те пакеты провайдера, которые заявляет.

  • Если ваша команда использует OpenTofu на разных платформах (например, как в Windows, так и в Linux), а вышестоящий реестр провайдера не может предоставить подписанные контрольные суммы с использованием последней схемы хеширования, последующие запуски OpenTofu на других платформах могут добавить в файл блокировки дополнительные контрольные суммы. Этого можно избежать, заранее заполнив хеши для всех платформ, которые вы планируете использовать, с помощью команды tofu providers lock.

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

Использование: tofu providers lock [options] [providers...]

Примечание

Для использования переменных в источниках модулей при запуске tofu providers lock необходимо задать значения переменных корневого модуля.

Эта команда принимает следующие общие параметры:

  • -var 'NAME=VALUE' — задает значение одной входной переменной, объявленной в корневом модуле конфигурации. Используйте этот параметр несколько раз, чтобы задать значения нескольких переменных. Подробнее см. в разделе Входные переменные в командной строке.

  • -var-file=FILENAME — задает значения нескольких входных переменных, объявленных в корневом модуле конфигурации, используя определения из файла «tfvars». Используйте этот параметр несколько раз, чтобы включить значения из нескольких файлов.

Помимо параметров -var и -var-file, есть и другие способы задать значения входных переменных в корневом модуле. Подробнее см. в разделе Задание значений переменных корневого модуля.

Если не указаны дополнительные аргументы командной строки, tofu providers lock проанализирует конфигурацию в текущем рабочем каталоге, чтобы определить все необходимые ей провайдеры, получит необходимые сведения об этих провайдерах из их исходных реестров, а затем обновит файл блокировки зависимостей, включив в него выбранную версию каждого провайдера и все контрольные суммы пакетов, покрываемые криптографической подписью разработчика провайдера.

Предупреждение

Команда tofu providers lock выводит сведения о полученных данных и о том, был ли каждый пакет подписан криптографической подписью, но она не может автоматически проверить, заслуживают ли провайдеры доверия и соответствуют ли они политикам вашей локальной системы или применимым нормативным требованиям. Просмотрите сведения о ключах подписи в выводе, чтобы убедиться, что вы доверяете всем подписавшим, прежде чем фиксировать обновленный файл блокировки в системе контроля версий.

Если указать в командной строке один или несколько адресов источников провайдеров, tofu providers lock ограничит работу этими провайдерами, оставив записи блокировки для остальных провайдеров (если они есть) без изменений.

Настроить поведение по умолчанию можно с помощью следующих дополнительных параметров:

  • -fs-mirror=PATH — указывает OpenTofu искать пакеты провайдеров в заданном локальном каталоге зеркала файловой системы, а не в вышестоящих реестрах. Заданный каталог должен иметь стандартную структуру каталога зеркала файловой системы.

  • -net-mirror=URL — указывает OpenTofu искать пакеты провайдеров в заданной службе сетевого зеркала, а не в вышестоящих реестрах. Указанный URL должен реализовывать протокол сетевого зеркала провайдеров OpenTofu.

  • -platform=OS_ARCH — указывает платформу, на которой вы планируете работать с этой конфигурацией OpenTofu. OpenTofu проверит, что все провайдеры доступны для указанной платформы, и сохранит в файле блокировки достаточно контрольных сумм пакетов для поддержки как минимум указанных платформ.

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

    Имена целевых платформ состоят из операционной системы и архитектуры процессора. Например, linux_amd64 задает операционную систему Linux, работающую на процессоре AMD64 или x86_64.

    Подробнее об этом параметре рассказано в следующем разделе.

Указание целевых платформ​

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

В такой ситуации можно проверить, что все ваши провайдеры поддерживают все эти платформы, и заранее заполнить файл блокировки необходимыми контрольными суммами, запустив tofu providers lock и указав эти три платформы:

Блок кода
tofu providers lock \
  -platform=windows_amd64 \ # 64-bit Windows
  -platform=darwin_amd64 \  # 64-bit macOS
  -platform=linux_amd64     # 64-bit Linux

(В приведенном выше примере для удобства чтения используется синтаксис переноса строк оболочки Unix. Если вы выполняете команду в Windows, необходимо указать все аргументы в одной строке и удалить обратные косые черты и комментарии.)

Записи блокировки для внутренних провайдеров​

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

По умолчанию tofu providers lock предполагает, что все провайдеры доступны в реестре провайдеров OpenTofu, и пытается связаться с исходными реестрами, чтобы получить наиболее подробные сведения о пакетах провайдеров.

Чтобы создать запись блокировки для провайдера, доступного только в локальном зеркале, можно использовать параметр командной строки -fs-mirror или -net-mirror, чтобы переопределить поведение по умолчанию и не обращаться к исходному реестру провайдера:

Блок кода
tofu providers lock \
  -fs-mirror=/usr/local/tofu/providers
  -platform=windows_amd64 \
  -platform=darwin_amd64 \
  -platform=linux_amd64 \
  tf.example.com/ourcompany/ourplatform

(В приведенном выше примере для удобства чтения используется синтаксис переноса строк оболочки Unix. Если вы выполняете команду в Windows, необходимо указать все аргументы в одной строке и удалить обратные косые черты.)

Поскольку приведенная выше команда содержит адрес источника провайдера tf.example.com/ourcompany/ourplatform, tofu providers lock будет обращаться только к этому провайдеру и оставит записи блокировки для всех остальных провайдеров без изменений. Если у вас есть разные провайдеры из разных источников, можно запускать tofu providers lock несколько раз, каждый раз указывая отдельную группу провайдеров.

Параметры -fs-mirror и -net-mirror имеют то же значение, что и блоки filesystem_mirror и network_mirror в конфигурации способов установки провайдеров, но указывают только один способ, чтобы явно задать источник сведений о контрольных суммах пакетов.

Обратите внимание: только исходный реестр может предоставлять официальные контрольные суммы, покрываемые криптографической подписью первоначального разработчика. Поэтому записи блокировки, созданные на основе зеркал файловой системы или сетевых зеркал, будут охватывать только точно указанные вами платформы, а записанные контрольные суммы будут получены от зеркала, а не из официального реестра. Чтобы убедиться, что записаны контрольные суммы, подписанные первоначальным издателем провайдера, выполните эту команду без параметров -fs-mirror и -net-mirror, чтобы получить все сведения из исходных реестров.

При желании можно публиковать внутренние провайдеры во внутреннем реестре провайдеров. Это позволит блокировать версии и устанавливать такие провайдеры без специальных параметров или дополнительной настройки CLI. Подробнее см. в разделе Протокол реестра провайдеров.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/cli/commands/providers/lock/

Spec-Zone.ru

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