Terraform → OpenTofu
- Перенос состояния и переменных
- Конвейер plan/apply в GitLab
- Зеркало провайдеров и модулей
Переводим Terraform и Terraform Cloud на OpenTofu — открытый форк Terraform под управлением Linux Foundation — с запуском из вашего GitLab и провайдерами из зеркала в вашем контуре. А то, что создавалось в облаке вручную, переносим в код, ничего не ломая.
Из РФ провайдеры не отдают ни реестр Terraform, ни реестр OpenTofu, а часть облака создана вручную и нигде не описана.
Переводим на OpenTofu с запуском из GitLab, поднимаем зеркало провайдеров и импортируем ручные ресурсы в код.
Та же инфраструктура, изменения — через merge request, а пустой plan — доказательство.
С 2023 года новые версии Terraform выходят под лицензией BSL, а не под открытой. OpenTofu продолжает открытую ветку (MPL-2.0), читает те же конфигурации и умеет то, чего нет в Terraform: например, шифровать состояние ключами из OpenBao.
Переход на OpenTofu не решает вопрос доступа из РФ. HashiCorp закрыла свои репозитории для российских IP-адресов (документация Yandex Cloud). Реестр OpenTofu с августа 2024 года тоже закрыт для России во исполнение санкций США (README OpenTofu), а провайдеры Yandex Cloud и Cloud.ru из него удалены по правилам реестра. Поэтому в любом случае нужно зеркало.
И Terraform, и OpenTofu умеют брать провайдеры не из реестра, а с зеркала. Для РФ это обязательная часть перехода, а заодно защита от того, что нужная версия однажды пропадёт.
Нужные провайдеры выгружаются командой tofu providers mirror и раздаются с вашего HTTPS-сервера или из OCI-реестра, например Harbor. Модули хранятся в реестре модулей GitLab.
У Yandex Cloud есть своё зеркало реестра провайдеров. Его можно использовать как источник для вашего зеркала или напрямую, если сеть позволяет.
Версии закреплены в lock-файле. Новая версия провайдера попадает в зеркало через merge request, как любое другое изменение.
| Провайдер | Последняя версия в реестре Terraform | В реестре OpenTofu |
|---|---|---|
| Yandex Cloud | 0.239.0 | 0.127.0, новых версий нет |
| Cloud.ru (SberCloud) | 1.13.1 | 1.12.2 |
| VK Cloud | 0.18.0 | 0.18.0 |
| Selectel | 9.3.2 | 9.3.2 |
Версии — по API реестров registry.terraform.io и registry.opentofu.org, проверено 21.10.2026. Способы установки — по документации OpenTofu: provider_installation, providers mirror, зеркала в OCI-реестрах (нужен реестр с OCI Distribution 1.1). Зеркало Yandex Cloud — по документации Yandex Cloud.
В большинстве облачных аккаунтов есть ресурсы, которые создавали в консоли и меняли руками: про них знает один человек, а повторить их нельзя. Импортируем такие ресурсы в OpenTofu, не трогая то, что работает, — и дальше любое изменение идёт через код и ревью.
Провайдеры есть у Yandex Cloud, VK Cloud, Selectel и Cloud.ru, в своих ЦОД — у VMware vSphere и OpenStack. Ресурсы платформ без провайдера в код не переносим. Для госсистем это шаг к контролю конфигураций по п. 37 приказа ФСТЭК № 117: изменения идут через код и видны.
Рабочие пространства, состояние, провайдеры, вручную созданные ресурсы. Согласуем объём и критерии готовности.
Настраиваем OpenTofu в GitLab: хранение состояния, plan и apply, доступы.
Переносим рабочие пространства или импортируем ресурсы по очереди, на каждом шаге — пустой plan.
Документация, правила работы с кодом инфраструктуры, сессия с командой.
Порядок всегда один. Сколько займёт каждый шаг, зависит от объёма: замеры на первом шаге задают цену и сроки.
Не знаете, с чего начать? Аудит инфраструктуры как кода покажет состояние дел и объём работ. Нужен только конвейер, без перехода? OpenTofu в GitLab.
Нет. Меняется только то, где хранится состояние и откуда запускаются изменения. Критерий готовности — plan без изменений.
Обычно нет: OpenTofu читает конфигурации Terraform. Точечные правки — например, источники провайдеров — делаем в рамках проекта.
Понадобится. Реестр OpenTofu закрыт для российских IP-адресов так же, как реестр HashiCorp. На OpenTofu переходят ради открытой лицензии и новых возможностей, а провайдеры в РФ в любом случае берутся с зеркала.
Можно. Зеркало и конвейер в GitLab работают и с Terraform. Мы по умолчанию ставим OpenTofu из-за лицензии, но решение за вами.
Terraform или Terraform Cloud, сколько рабочих пространств, какое облако, много ли создано вручную. Ответим с планом и сроками.