Spec-Zone.ru › OpenTofu 1.10

Команда: init

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

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

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

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

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

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

Общие параметры​

Следующие параметры применяются ко всем шагам инициализации (или к нескольким из них):

  • -input=true Запрашивать ввод при необходимости. Если значение равно false, команда завершится с ошибкой, если потребуется ввод.

  • -lock=false Отключить блокировку файлов состояния во время операций, связанных с состоянием.

  • -lock-timeout=<duration> Переопределить время ожидания OpenTofu при получении блокировки состояния. Значение по умолчанию — 0s (ноль секунд); если блокировка уже установлена другим процессом, команда немедленно завершится с ошибкой.

  • -no-color Отключить цветовые коды в выводе команды.

  • -upgrade Обновить модули и плагины в рамках соответствующих шагов установки. Дополнительные сведения см. в разделах ниже.

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

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

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

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

Копирование исходного модуля​

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

При желании init можно запустить в пустом каталоге с параметром -from-module=MODULE-SOURCE. В этом случае указанный модуль будет скопирован в целевой каталог до выполнения любых других шагов инициализации.

Этот специальный режим работы поддерживает два сценария использования:

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

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

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

Инициализация бэкенда​

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

Примечание

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

Повторный запуск init для уже инициализированного бэкенда обновит рабочий каталог, чтобы использовать новые параметры бэкенда. Для обновления конфигурации бэкенда необходимо указать -reconfigure или -migrate-state.

Параметр -migrate-state попытается скопировать существующее состояние в новый бэкенд и, в зависимости от изменений, может вызвать интерактивные запросы на подтверждение переноса состояний рабочих пространств. Параметр -force-copy отключает эти запросы и отвечает «yes» на вопросы о переносе. Включение -force-copy также автоматически включает параметр -migrate-state.

Параметр -reconfigure игнорирует любую существующую конфигурацию, предотвращая перенос имеющегося состояния.

Чтобы пропустить настройку бэкенда, используйте -backend=false. Обратите внимание, что для некоторых других шагов init требуется инициализированный бэкенд, поэтому рекомендуется использовать этот флаг, только если рабочий каталог уже был инициализирован для определённого бэкенда.

Параметр -backend-config=... можно использовать для частичной конфигурации бэкенда в ситуациях, когда параметры бэкенда являются динамическими или конфиденциальными и поэтому не могут быть статически указаны в файле конфигурации.

Установка дочерних модулей​

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

Повторный запуск init, если модули уже установлены, установит исходный код всех модулей, добавленных в конфигурацию после последнего запуска init, но не изменит уже установленные модули. Используйте -upgrade, чтобы изменить это поведение и обновить все модули до последней доступной версии исходного кода.

Чтобы пропустить установку дочерних модулей, используйте -get=false. Обратите внимание, что некоторые другие шаги init могут быть выполнены только после формирования полного дерева модулей, поэтому рекомендуется использовать этот флаг, только если рабочий каталог уже был инициализирован с дочерними модулями.

Установка плагинов​

Большинство провайдеров OpenTofu публикуются отдельно от OpenTofu в виде плагинов. Во время выполнения init OpenTofu ищет в конфигурации прямые и косвенные ссылки на провайдеры и пытается установить плагины для этих провайдеров.

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

Дополнительные сведения о том, как указать необходимые провайдеры для каждого из модулей, см. в разделе Требования к провайдерам.

После успешной установки OpenTofu записывает сведения о выбранных провайдерах в файл блокировки зависимостей. Этот файл следует добавить в систему контроля версий, чтобы при следующем запуске tofu init OpenTofu выбрал те же версии провайдеров. Используйте параметр -upgrade, если хотите, чтобы OpenTofu игнорировал файл блокировки зависимостей и рассматривал возможность установки более новых версий.

Изменить поведение плагинов команды tofu init можно с помощью следующих параметров:

  • -upgrade Обновить все ранее выбранные плагины до последней версии, соответствующей ограничениям версий в конфигурации. В результате OpenTofu проигнорирует версии, записанные в файле блокировки зависимостей, и выберет последнюю доступную версию, соответствующую настроенным ограничениям.
  • -plugin-dir=PATH — Принудительно устанавливать плагины, считывая их только из указанного каталога, как если бы он был настроен в качестве filesystem_mirror в конфигурации CLI. Если вы планируете регулярно использовать зеркало в файловой системе, рекомендуется глобально настроить методы установки OpenTofu. -plugin-dir можно использовать для разового переопределения в исключительных ситуациях, например при тестировании локальной сборки разрабатываемого плагина провайдера.
  • -lockfile=MODE Задать режим работы с файлом блокировки зависимостей.

Допустимые значения режима работы с файлом блокировки:

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

Запуск tofu init в автоматизированной среде​

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

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

Указание другого каталога конфигурации​

Если ваш рабочий процесс предполагает переопределение каталога корневого модуля, используйте вместо этого глобальный параметр -chdir. Он работает со всеми командами и обеспечивает согласованную работу OpenTofu: все файлы, которые обычно считываются из текущего рабочего каталога или записываются в него, будут размещаться в указанном каталоге.

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

Spec-Zone.ru

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