Команда: 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.10/cli/commands/providers/lock/