Что вы выберете между Terraform и OpenTofu?

«Что вы выберете между Terraform и OpenTofu?» — вопрос из категории Terraform, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

На текущий момент для новых проектов я склоняюсь к использованию OpenTofu, в то время как для поддержки существующей инфраструктуры, написанной на Terraform, продолжаю использовать его.

Мой выбор основан на следующих соображениях:

  1. Лицензирование: OpenTofu остается под лицензией MPL 2.0, что гарантирует его истинную open-source природу без ограничений на коммерческое использование. Лицензия HashiCorp BSL для Terraform создает риски для долгосрочных проектов и коммерческих продуктов, построенных вокруг него.
  2. Совместимость: OpenTofu изначально форкнули с версии Terraform 1.6.x, и он сохраняет полную совместимость с синтаксисом HCL, провайдерами и state-файлами. Миграция с Terraform на OpenTofu для существующего кода часто сводится к смене бинарного файла.
  3. Сообщество и развитие: Управление 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 как более устойчивое решение.