Ответ
На текущий момент для новых проектов я склоняюсь к использованию OpenTofu, в то время как для поддержки существующей инфраструктуры, написанной на Terraform, продолжаю использовать его.
Мой выбор основан на следующих соображениях:
- Лицензирование: OpenTofu остается под лицензией MPL 2.0, что гарантирует его истинную open-source природу без ограничений на коммерческое использование. Лицензия HashiCorp BSL для Terraform создает риски для долгосрочных проектов и коммерческих продуктов, построенных вокруг него.
- Совместимость: OpenTofu изначально форкнули с версии Terraform 1.6.x, и он сохраняет полную совместимость с синтаксисом HCL, провайдерами и state-файлами. Миграция с Terraform на OpenTofu для существующего кода часто сводится к смене бинарного файла.
- Сообщество и развитие: Управление OpenTofu передано Linux Foundation, что обеспечивает прозрачное и community-driven развитие. Вижу активный рост экосистемы и плагинов.
Пример кода идентичен для обоих инструментов:
# main.tf - код работает и в Terraform, и в OpenTofu
terraform {
required_version = ">= 1.5.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "Production-VPC"
}
}
Практический вывод: Для greenfield-проектов я начинаю с OpenTofu, чтобы избежать будущих лицензионных неопределенностей. Для brownfield-проектов оцениваю сложность миграции, но в долгосрочной перспективе вижу переход на OpenTofu как более устойчивое решение.