Команда: init
Команда tofu init инициализирует рабочий каталог, содержащий файлы конфигурации OpenTofu. Это первая команда, которую следует выполнить после написания новой конфигурации OpenTofu или клонирования существующей из системы контроля версий. Эту команду безопасно выполнять несколько раз.
Использование
Использование: tofu init [options]
Эта команда выполняет несколько различных шагов инициализации, чтобы подготовить текущий рабочий каталог к использованию с OpenTofu. Подробнее об этих шагах рассказано в разделах ниже, но в большинстве случаев нет необходимости беспокоиться об отдельных шагах.
Эту команду всегда безопасно выполнять несколько раз, чтобы привести рабочий каталог в соответствие с изменениями конфигурации. Хотя при последующих запусках могут возникать ошибки, эта команда никогда не удалит существующую конфигурацию или состояние.
Для этой команды требуется задать значения переменных, используемых в блоках источников модулей и конфигурации backend. Дополнительную информацию см. в разделе Назначение значений переменным корневого модуля.
Общие параметры
Следующие параметры применяются ко всем (или нескольким) шагам инициализации:
-
-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.
Инициализация backend
Во время выполнения init в корневом каталоге конфигурации проверяется наличие конфигурации backend, после чего выбранный backend инициализируется с использованием заданных параметров конфигурации.
Для использования переменных в блоке конфигурации backend необходимо задать значения переменных корневого модуля при запуске tofu init.
Повторный запуск init для уже инициализированного backend обновит рабочий каталог, чтобы использовать новые параметры backend. Для обновления конфигурации backend необходимо указать -reconfigure или -migrate-state.
Параметр -migrate-state попытается скопировать существующее состояние в новый backend и, в зависимости от внесённых изменений, может вызвать интерактивные запросы на подтверждение переноса состояний рабочих пространств. Параметр -force-copy отключает эти запросы и отвечает «да» на вопросы о переносе. Включение -force-copy также автоматически включает параметр -migrate-state.
Параметр -reconfigure игнорирует существующую конфигурацию, предотвращая перенос любого существующего состояния.
Чтобы пропустить настройку backend, используйте -backend=false. Обратите внимание: для некоторых других шагов инициализации требуется инициализированный backend, поэтому рекомендуется использовать этот флаг, только если рабочий каталог уже был ранее инициализирован для определённого backend.
Параметр -backend-config=... можно использовать для частичной конфигурации backend в ситуациях, когда параметры backend являются динамическими или конфиденциальными и поэтому не могут быть статически заданы в файле конфигурации.
Установка дочерних модулей
Во время выполнения init в конфигурации выполняется поиск блоков module, а исходный код соответствующих модулей загружается из местоположений, указанных в их аргументах source.
Повторный запуск init при уже установленных модулях установит исходный код всех модулей, добавленных в конфигурацию после предыдущего запуска init, но не изменит уже установленные модули. Используйте -upgrade, чтобы переопределить это поведение и обновить все модули до последней доступной версии исходного кода.
Чтобы пропустить установку дочерних модулей, используйте -get=false. Обратите внимание: некоторые другие шаги инициализации можно выполнить только после завершения построения дерева модулей, поэтому рекомендуется использовать этот флаг, только если рабочий каталог уже был ранее инициализирован с дочерними модулями.
Установка плагинов
Большинство провайдеров 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.9/cli/commands/init/