Spec-Zone.ru › OpenTofu 1.12

Команда: providers lock

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

Обычно файл блокировки зависимостей обновляется как побочный эффект обычной установки провайдеров во время выполнения команды tofu init.

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

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

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

Использование: 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.

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

  • -json — включает вывод машиночитаемого интерфейса JSON.

  • -json-into=out.json — формирует тот же вывод, что и -json, но перенаправляет его в файл. Это позволяет одновременно сохранять журналы как для людей, так и в машиночитаемом формате.

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

Например, в вашей среде могут быть разработчики, работающие с конфигурацией 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.12/cli/commands/providers/lock/

Spec-Zone.ru

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