Leer en inglés

Compartir vía


Inicio rápido: Creación de una instancia de Azure Container Registry mediante Terraform

En este inicio rápido, creará un registro de contenedor de Azure y un grupo de recursos mediante Terraform. Azure Container Registry es un servicio de registro de contenedores de Docker administrado usado para almacenar imágenes de contenedor de Docker privadas. Normalmente se usa con Azure Kubernetes Service (AKS), Azure App Service y otros servicios de Azure para extraer imágenes de contenedor. El registro se almacena dentro de un grupo de recursos, que es un contenedor lógico para los recursos implementados en Azure. Estos recursos se crean con nombres únicos mediante la combinación de un prefijo con una cadena aleatoria, lo que garantiza que son únicos dentro de la suscripción de Azure.

Terraform habilita la definición, vista previa e implementación de la infraestructura en la nube. Con Terraform, se crean archivos de configuración mediante la sintaxis de HCL. La sintaxis de HCL permite especificar el proveedor de la nube, como Azure, y los elementos que componen la infraestructura de la nube. Después de crear los archivos de configuración, se crea un plan de ejecución que permite obtener una vista previa de los cambios de infraestructura antes de implementarlos. Una vez que compruebe los cambios, aplique el plan de ejecución para implementar la infraestructura.

  • Especifique la versión necesaria de Terraform y los proveedores necesarios.
  • Defina el proveedor de Azure sin características adicionales.
  • Defina una variable para la ubicación del grupo de recursos y con un valor predeterminado de "eastus".
  • Defina una variable para el prefijo del nombre del grupo de recursos y con un valor predeterminado de "rg".
  • Genere un nombre de pila aleatorio para el grupo de recursos.
  • Cree un grupo de recursos de Azure con el nombre generado en la ubicación especificada.
  • Genere una cadena aleatoria de cinco letras minúsculas que se usarán como parte del nombre del registro de contenedor.
  • Cree un registro de contenedor con la cadena generada como parte de su nombre y en la misma ubicación y grupo de recursos anterior.
  • Genera los nombres del grupo de recursos y el registro de contenedor creados.
  • Genera el servidor de inicio de sesión del registro de contenedor creado.

Requisitos previos

Implementación del código de Terraform

  1. Cree un directorio en el que probar y ejecutar el código de ejemplo de Terraform y conviértalo en el directorio actual.

  2. Cree un archivo llamado main.tf e inserte el siguiente código:

    Terraform
    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      location = var.resource_group_location
      name     = random_pet.rg_name.id
    }
    
    resource "random_string" "acr_name" {
      length  = 5
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_container_registry" "example" {
      name                = "${random_string.acr_name.result}registry"
      resource_group_name = azurerm_resource_group.rg.name
      location            = azurerm_resource_group.rg.location
      sku                 = "Standard"
    }
    
  3. Cree un archivo llamado outputs.tf e inserte el siguiente código:

    Terraform
    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "container_registry_name" {
      value = azurerm_container_registry.example.name
    }
    
    output "container_registry_login_server" {
      value = azurerm_container_registry.example.login_server
    }
    
  4. Cree un archivo llamado providers.tf e inserte el siguiente código:

    Terraform
    terraform {
      required_version = ">=1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  5. Cree un archivo llamado variables.tf e inserte el siguiente código:

    Terraform
    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
    }
    

Inicialización de Terraform

Para inicializar la implementación de Terraform, ejecute terraform init. Este comando descarga el proveedor de Azure necesario para administrar los recursos de Azure.

Consola
terraform init -upgrade

Puntos clave:

  • El parámetro -upgrade actualiza los complementos de proveedor necesarios a la versión más reciente que cumpla con las restricciones de versión de la configuración.

Creación de un plan de ejecución de Terraform

Ejecute terraform plan para crear un plan de ejecución.

Consola
terraform plan -out main.tfplan

Puntos clave:

  • El comando terraform plan crea un plan de ejecución, pero no lo ejecuta. En su lugar, determina qué acciones son necesarias para crear la configuración especificada en los archivos de configuración. Este patrón le permite comprobar si el plan de ejecución coincide con sus expectativas antes de realizar cambios en los recursos reales.
  • El parámetro -out opcional permite especificar un archivo de salida para el plan. El uso del parámetro -out garantiza que el plan que ha revisado es exactamente lo que se aplica.

Aplicación de un plan de ejecución de Terraform

Ejecute terraform apply para aplicar el plan de ejecución a su infraestructura en la nube.

Consola
terraform apply main.tfplan

Puntos clave:

  • El comando terraform apply de ejemplo asume que ejecutó terraform plan -out main.tfplan previamente.
  • Si especificó un nombre de archivo diferente para el parámetro -out, use ese mismo nombre de archivo en la llamada a terraform apply.
  • Si no ha utilizado el parámetro -out, llame a terraform apply sin ningún parámetro.

Verificación de los resultados

Ejecute az acr show para ver el registro de contenedor.

Azure CLI
az acr show --name <registry_name> --resource-group <resource_group_name>

Reemplace <registry_name> por el nombre del registro de contenedor y <resource_group_name> por el nombre del grupo de recursos.

Limpieza de recursos

Cuando ya no necesite los recursos creados a través de Terraform, realice los pasos siguientes:

  1. Ejecute el comando terraform plan y especifique la marca destroy.

    Consola
    terraform plan -destroy -out main.destroy.tfplan
    

    Puntos clave:

    • El comando terraform plan crea un plan de ejecución, pero no lo ejecuta. En su lugar, determina qué acciones son necesarias para crear la configuración especificada en los archivos de configuración. Este patrón le permite comprobar si el plan de ejecución coincide con sus expectativas antes de realizar cambios en los recursos reales.
    • El parámetro -out opcional permite especificar un archivo de salida para el plan. El uso del parámetro -out garantiza que el plan que ha revisado es exactamente lo que se aplica.
  2. Ejecute terraform apply para aplicar el plan de ejecución.

    Consola
    terraform apply main.destroy.tfplan
    

Solución de problemas de Terraform en Azure

Solución de problemas comunes al usar Terraform en Azure.

Pasos siguientes