Publicar un módulo en el registro de Terraform empieza con un paso clave: crear un repositorio público en GitHub con la estructura de nombre correcta. Aquí verás cómo preparar ese repositorio para un módulo de Azure Functions y qué archivos base necesitas antes de escribir código.
Cómo se nombra un repositorio para un módulo de Terraform
El nombre del repositorio no es libre: sigue una convención obligatoria que el registro de Terraform reconoce para indexar y publicar tu módulo.
La estructura es terraform-<proveedor>-<nombre del módulo>. Si trabajas con AWS, el proveedor será aws; si trabajas con Azure, será azurerm. En este caso el repositorio se llama terraform-azurerm-azure-functions, porque el proveedor es Azure RM y el módulo despliega una aplicación de Azure Functions [00:34].
¿Por qué el repositorio debe ser público? Porque el registro de Terraform no acepta repositorios privados como fuente de módulos. Sin visibilidad pública, no hay publicación posible [01:22].
Qué archivos iniciales debe tener tu repositorio
Antes de pensar en el código de Terraform, el repositorio necesita una base mínima que facilite la colaboración y evite subir archivos sensibles.
Al crearlo en GitHub conviene marcar tres opciones:
- Un archivo README con la descripción del módulo, en inglés para alcance abierto.
- Un .gitignore específico para Terraform, que ignora archivos de estado y carpetas locales.
- Una licencia MIT, que permite compartir el módulo de forma abierta y segura [01:30].
La descripción que se usa aquí es directa: Módulo creado para desplegar una aplicación de Azure Functions. Una línea corta que explica qué hace el módulo sin rodeos.
Cómo se consolidan varios componentes en un solo módulo
Un módulo publicable suele agrupar recursos que tienen sentido juntos. Aquí está la idea más interesante de esta preparación.
El main.tf original contiene tres componentes de Azure: storage account, app service plan y function app [02:10]. Aunque podrías tratarlos como tres módulos separados, la intención al publicar es entregar uno solo que los consolide.
La analogía es clara: si tuvieras módulos para una máquina virtual, no publicarías por separado el disco, la red y la VM. Los agruparías en una carpeta llamada VM. Lo mismo aplica aquí: storage, plan y function app conviven dentro de un único módulo de Azure Functions [02:30].
¿Cuántos archivos .tf necesita un módulo de Terraform? Tres como mínimo: main.tf para los recursos, variables.tf para las entradas y output.tf para las salidas. Esa es la estructura estándar que espera el registro [04:00].
Cómo clonar el repositorio y preparar el espacio de trabajo
Una vez creado el repositorio en GitHub, el flujo para empezar a trabajar localmente es sencillo y conviene hacerlo fuera de la carpeta del curso, directamente en tu carpeta de GitHub.
Los pasos son:
- Copiar la URL del repositorio recién creado.
- Ejecutar
git clone con esa URL desde la terminal.
- Entrar al repositorio con
cd terraform-azurerm-azure-functions.
- Abrir Visual Studio Code en esa ubicación con
code . [03:30].
Con el editor abierto en la nueva instancia, ya tienes el README y la licencia listos. Solo falta crear los tres archivos .tf que dan forma al módulo y comenzar a migrar los recursos consolidados.
¿Ya pensaste qué variables vas a exponer en tu módulo y cuáles vas a dejar fijas? Cuéntame en los comentarios qué proveedor estás usando para tu primer módulo publicable.