Compartir a través de


Inicio rápido: Creación de una cuenta de Azure Batch mediante Terraform

Comienza con Azure Batch mediante Terraform para crear una cuenta de Batch, incluyendo el almacenamiento. Para crear recursos de proceso (grupos de nodos de proceso) y trabajos de Batch se necesita una cuenta de Batch. Puede vincular una cuenta de Azure Storage con su cuenta de Batch. Este emparejamiento es útil para implementar aplicaciones y almacenar datos de entrada y salida para la mayoría de las cargas de trabajo del mundo real.

Tras completar este inicio rápido, conocerá los conceptos clave del servicio Batch y estará listo para probar dicho servicio con cargas de trabajo más realistas y a mayor escala.

Terraform habilita la definición, la previsualización y la 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 nube , como Azure, y los elementos que componen la infraestructura en la nube. Después de crear los archivos de configuración, cree un plan de ejecución que le permita 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.

En este artículo aprenderá a:

Prerrequisitos

Implementación del código de Terraform

Nota:

El código de ejemplo de este artículo se encuentra en el repositorio de GitHub de de Azure Terraform. Puede ver el archivo de registro que contiene los resultados de las pruebas de de las versiones actuales y anteriores de Terraform.

Consulte más artículos de y código de ejemplo que muestra cómo usar Terraform para administrar recursos de Azure

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

  2. Cree un archivo denominado providers.tf e inserte el código siguiente:

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

    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      name     = random_pet.rg_name.id
      ___location = var.resource_group_location
    }
    
    resource "random_string" "azurerm_storage_account_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "random_string" "azurerm_batch_account_name" {
      length  = 13
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    resource "azurerm_storage_account" "storage" {
      name                     = "storage${random_string.azurerm_storage_account_name.result}"
      resource_group_name      = azurerm_resource_group.rg.name
      ___location                 = azurerm_resource_group.rg.___location
      account_tier             = element(split("_", var.storage_account_type), 0)
      account_replication_type = element(split("_", var.storage_account_type), 1)
    }
    
    resource "azurerm_batch_account" "batch" {
      name                                = "batch${random_string.azurerm_batch_account_name.result}"
      resource_group_name                 = azurerm_resource_group.rg.name
      ___location                            = azurerm_resource_group.rg.___location
      storage_account_id                  = azurerm_storage_account.storage.id
      storage_account_authentication_mode = "StorageKeys"
    }
    
  4. Cree un archivo denominado variables.tf e inserte el código siguiente:

    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location for all resources."
    }
    
    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."
    }
    
    variable "storage_account_type" {
      type        = string
      default     = "Standard_LRS"
      description = "Azure Storage account type."
      validation {
        condition     = contains(["Premium_LRS", "Premium_ZRS", "Standard_GRS", "Standard_GZRS", "Standard_LRS", "Standard_RAGRS", "Standard_RAGZRS", "Standard_ZRS"], var.storage_account_type)
        error_message = "Invalid storage account type. The value should be one of the following: 'Premium_LRS','Premium_ZRS','Standard_GRS','Standard_GZRS','Standard_LRS','Standard_RAGRS','Standard_RAGZRS','Standard_ZRS'."
      }
    }
    
  5. Cree un archivo denominado outputs.tf e inserte el código siguiente:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "batch_name" {
      value = azurerm_batch_account.batch.name
    }
    
    output "storage_name" {
      value = azurerm_storage_account.storage.name
    }
    

Inicialización de Terraform

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

terraform init -upgrade

Puntos clave:

  • El parámetro -upgrade actualiza los complementos de proveedor necesarios a la versión más reciente que cumple 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.

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 permite comprobar si el plan de ejecución coincide con las expectativas antes de realizar cambios en los recursos reales.
  • El parámetro opcional -out 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.

terraform apply main.tfplan

Puntos clave:

  • En el comando de ejemplo terraform apply, se asume que previamente ejecutó terraform plan -out main.tfplan.
  • Si especificó otro nombre de archivo 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.

Comprobación de los resultados

  1. Obtenga el nombre del grupo de recursos de Azure.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Consiga el nombre de la cuenta de Batch.

    batch_name=$(terraform output -raw batch_name)
    
  3. Ejecute az batch account show para mostrar información sobre la nueva cuenta de Batch.

    az batch account show \
        --resource-group $resource_group_name \
        --name $batch_name
    

Limpieza de recursos

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

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

    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 permite comprobar si el plan de ejecución coincide con las expectativas antes de realizar cambios en los recursos reales.
    • El parámetro opcional -out 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.

    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