En el dinámico mundo del software de código abierto, las decisiones sobre licencias pueden tener un impacto profundo en la comunidad de desarrolladores y en el futuro de los proyectos. Recientemente, Terraform, una herramienta popular para la infraestructura como código, anunció un cambio significativo en su licencia, dejando de ser un proyecto Open Source (código libre y uso libre) para ser un proyecto de código libre pero uso restringido. Esta decisión ha generado preocupación y debate en la comunidad tecnológica, ya que muchas organizaciones que usan Terraform en sus proyectos se preguntan si los términos de uso de la licencia pueden volver a cambiar, lo que implica desconfianza para usar libremente la herramienta en la actualidad. Debemos tener presente que la licencia BSL expuesta por HashiCorp, plantea que solo debe pagar licencia por uso toda organización o individuo que ofrezca servicios que compitan con HashiCorp, algo muy preocupante ya que si dicha organización crea servicios o evoluciona sus servicios, podría generar que el uso que damos actualmente la mayoría de organizaciones a Terraform para administrar y crear nuestra infraestructura, genere la necesidad de pagar licencias.
La Linux Foundation ha presentado OpenTofu, una alternativa robusta y confiable que promete mantener la apertura y la colaboración que son el corazón del movimiento de código abierto, aclarando su compromiso con el código abierto en su manifiesto, entre otros puntos indican que intentaron contactar a HashiCorp para mantener el proyecto Terraform como se tenía, pero al no tener respuestas deciden hacer un Fork del proyecto, mantenerlo y llamarlo OpenTofu.
OpenTofu propone el uso del mismo DSL de Terraform, por lo tanto toda la IaC que ya tenemos escrita puede seguirse usando sin ningún problema, además OpenTofu al ser un Fork del proyecto principal de Terraform, cuenta con todas las características que tenía Terraform hasta Diciembre del 2023, fecha en que inició a regir el cambio de licencia de Terraform. La herramienta cuenta con licenciamiento MPL-2.0, licencia que busca proteger el proyecto a futuro, para que ninguna organización se apodere del código y ocurra nuevamente lo que ha ocurrido con Terraform.
Respecto a los aportes de la comunidad, al momento de escritura de este Post, el proyecto cuenta con más de 105 contribuidores oficiales y cuenta con más de 21 mil estrellas en GitHub, además de tener más de 100 cambios en la rama principal desde diciembre del 2023; algo que indica que el proyecto se encuentra más vivo que nunca y que la comunidad lo está acogiendo; debemos tener presente que la comunidad se sintió traicionada después de la declaración de HashiCorp, ya que cualquier aporte realizado por las personas ahora se encuentra en propiedad de HashiCorp, sin recibir remuneración alguna y permitiendo la explotación económica por parte de la organización, este último punto me hace pensar que los aportes que realizará la comunidad a Terraform decaen drasticamente y será una herramienta mantenido por una empresa solamente, tal como pasó con Java cuando Sun fue adquirida por Oracle.
Algo que preocupa un poco es que tan rápido la Linux Foundation y la comunidad tras OpenTofu podrán construir módulos propios y otras herramientas que tardaron años en ser implementados para Terraform y que hoy hacen más fácil nuestra vida, sin embargo, en mi experiencia migrando toda la IaC de Devco a OpenTofu, no tuve nada que extrañar de Terraform, incluso pudimos seguir usando Checkov para analizar estáticamente nuestros scripts, aunque la herramienta oficialmente no tenga soporte para OpenTofu.
Hoy tenemos un HashiCorp adquirido por uno de los grande en tecnología, IBM, además vemos como proyectos opensource mantenidos y promocionados en su gran mayoría por organizaciones, dejan ser Open para hacer parte de las arcas de las grandes multinacionales de tecnología, tomando todo el trabajo realizado por miles de personas de la comunidad para sacar provecho económico, rompiendo la confianza de la comunidad y posiblemente destruyendo un proyecto amado por toda la comunidad como lo es Terraform.
Si quieres obtener un paso a paso de como puedes migrar tu proyecto Terraform a OpenTofu, puedes descargar nuestra guía, guía que generamos en Devco después de migrar toda nuestra IaC a OpenTofu.
Guía migración:
Setup
Lo primero que debemos hacer es instalar la última versión de OpenTofu en nuestra máquina, dependiendo de nuestro sistema operativo y método preferido de instalación, podremos ver la guía en el siguiente link, siempre te recomendaremos usar un gestor de paquetes para tu sistema operativo, para este ejemplo usaremos una mac y el gestor de paquetes brew.
brew install opentofu
Una vez instalado podemos ver la versión que nos instaló usando el comando:
tofu -version
Así tenemos todo el setup listo.
Preparación para posibles errores
Aplicar todos los cambios que tengas en tu proyecto terraform usando el apply, posteriormente lanzan el plan y no deben salir nuevos cambios pendientes.
terraform apply
terraform plan
Hacer un backup del archivo state, sea donde sea que se tenga almacenado, debemos hacer un backup para recuperar nuestro proyecto terraform en caso de tener algún error:
terraform.tfstate
Guardar una copia del código terraform antes de iniciar la migración, en caso de que uses un sistema de control de versiones, con esto sería suficiente.
Tener presente algunos cambios importantes en OpenTofu:
Los bloques remove de terraform funcionan diferente al de OpenTofu y debes eliminarlos.
Si usas skip_s3_checksum, debes eliminarlo.
Si usas terraform test, es posible que necesites modificar tus test, sobre todo el uso de mocks antes de migrar.
Para mayor detalle sobre los warnings anteriores, puedes dirigirte a la documentación principal de OpenTofu.
Inicio de la migración
Tener presente que si alguno de los pasos siguientes genera algún error, es necesario hacer un rollback y no continuar con el siguiente paso, puedes encontrar la guía de rollback aquí.
Iniciar OpenTofu, solo es necesario lanzar el siguiente comando:
tofu init
Debes tener presente aunque en el log estamos viendo que los providers instalados siguen llamándose hashicorp/aws, realmente se están usando los provider que mantiene OpenTofu y que se pueden ver el su propio registry, al momento de creación de esta guía son fork de las últimas versiones Open Source de dichos providers, algunos de ellos siguen teniendo licencia libre y se seguirán actualizando por los creadores, pero otros podrán diferir de los creados para Terraform en un futuro.
El uso de los mismo nombres en los providers y recursos del HCL, es para que el proceso de migración a OpenTofu sea lo más transparente posible desde un proyecto Terraform.
Inspeccionar el plan
tofu plan
Ejecutar el apply
tofu apply
Realizar un cambio pequeño para probar que todo funciona correctamente.
Bonus tracks
En caso de usar GitHub Actions, debes tener presente que ya existe el action para uso de OpenTofu y puedes modificar tus pipelines para usarlo.
En caso de tener una infraestructura en alguna nube sin usar infraestructura como código (IaC), puedes usar tofu import para que automáticamente se cree tu IaC y puedas seguir usando buenas prácticas para tu infraestructura.
Repositorio con un proyecto de ejemplo para la migración y el que se usó para la escritura de esta guía:
¡Gracias por leer!
...Suscríbete para estar al día del conocimiento Devco...
Comments