Introducción a Terraform

Completado

La herramienta IaC de código abierto Terraform permite definir y aprovisionar una infraestructura en la nube usando un lenguaje de configuración de alto nivel conocido como HashiCorp Configuration Language (HCL). Terraform codifica la infraestructura en archivos de configuración que describen el estado deseado para la infraestructura. Terraform puede administrar cualquier infraestructura, como nubes públicas, nubes privadas y servicios SaaS, usando proveedores de Terraform.

Proveedores de Terraform para la infraestructura de Azure

Varios proveedores de Terraform habilitan la administración de la infraestructura de Azure:

  • AzureRM: administre los recursos de Azure Resource Manager, como máquinas virtuales, cuentas de almacenamiento e interfaces de red.
  • AzureAD: Administre los recursos de Microsoft Entra, como grupos, usuarios, entidades de servicio y aplicaciones.
  • AzureDevOps: administre los recursos de Azure DevOps, como agentes, repositorios, proyectos, canalizaciones y consultas.
  • AzAPI: administre los recursos de Azure usando directamente las API de Azure Resource Manager. Este proveedor complementa al proveedor AzureRM habilitando la administración de los recursos de Azure más recientes.
  • Azure Stack: administre los recursos de Azure Stack, como máquinas virtuales, DNS, redes virtuales y almacenamiento.

Crear una cuenta de almacenamiento

Todas las configuraciones de Terraform deben contener un bloque provider. El siguiente código HCL especifica el proveedor de Azure Resource Manager (azurerm). Se define un grupo de recursos de Azure denominado storageaccountexamplerg en la ubicación eastus. Se crea una cuenta de almacenamiento de Azure dentro del grupo de recursos. El nombre de la cuenta de almacenamiento consiste en los primeros 24 caracteres de un número generado mediante la función md5.

terraform {
  required_version = ">=0.12"
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
  }
}
provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "rg" {
  location = "eastus"
  name     = "storageaccountexamplerg"
}

resource "azurerm_storage_account" "example" {
  name                     = substr(md5(azurerm_resource_group.rg.id), 0, 24)
  resource_group_name      = azurerm_resource_group.rg.name
  location                 = azurerm_resource_group.rg.location
  account_kind             = "StorageV2"
  account_tier             = "Standard"
  account_replication_type = "LRS"
  access_tier              = "Hot"
}

Ejecución del código de Terraform

Ejecute terraform init para descargar los módulos de Azure necesarios para administrar los recursos de Azure:

terraform init

Ejecute terraform plan para determinar qué acciones son necesarias para crear la configuración especificada en los archivos de configuración. Al ejecutar el comando se crea un plan de ejecución, pero no se ejecuta. Este patrón le permite comprobar si el plan de ejecución coincide con sus expectativas antes de realizar cambios en los recursos reales.

terraform plan -out main.tfplan

Una vez comprobado el plan de ejecución, ejecute terraform apply para aplicarlo. Este comando crea los recursos definidos.

terraform apply main.tfplan

Comprobación de la cuenta de almacenamiento

Para comprobar la cuenta de almacenamiento de Azure, puede usar el comando terraform state show. Este comando muestra el estado actual del recurso especificado.

En el caso de la cuenta de almacenamiento que ha creado en este módulo, el comando muestra el nombre generado junto con una lista completa de los atributos de la cuenta de almacenamiento y sus valores.

terraform state show 'azurerm_storage_account.example'

Limpieza de recursos

Cuando ya no necesite los recursos que ha creado en este módulo, ejecute terraform apply con la marca -destroy:

terraform plan -destroy -out main.destroy.tfplan

Ejecute terraform apply para aplicar el plan de ejecución:

terraform apply main.destroy.tfplan