Introducción a Terraform
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