Spec-Zone.ru › OpenTofu 1.11

Команда: 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 отключает эти запросы и отвечает «да» на вопросы о переносе. Включение -force-copy также автоматически включает параметр -migrate-state.

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

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

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

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

Во время выполнения 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.11/cli/commands/init/

Spec-Zone.ru

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