Compartir a través de


Aprovisionamiento de infraestructura con ranuras de implementación de Azure mediante Terraform

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.

Puede usar las ranuras de implementación de Azure para cambiar entre diferentes versiones de la aplicación. Esa capacidad le ayuda a minimizar el impacto de las implementaciones interrumpidas.

En este artículo se muestra un ejemplo de uso de ranuras de implementación guiándote a través de la implementación de dos aplicaciones a través de GitHub y Azure. Una aplicación se hospeda en una ranura de producción. La segunda aplicación se aloja en una ranura de ensayo. (Los nombres "producción" y "puesta en escena" son arbitrarios. Pueden ser lo que sea apropiado para su escenario). Después de configurar las ranuras de implementación, utilice Terraform para intercambiar entre las dos ranuras según sea necesario.

En este artículo aprenderá a:

  • Crear una instancia de App Service
  • Creación de una ranura de App Service
  • Intercambio dentro y fuera de las ranuras de implementación de ejemplo

1. Configuración del entorno

  • Suscripción de Azure: si no tiene una suscripción de Azure, cree una cuenta gratuita antes de comenzar.
  • Cuenta de GitHub: necesita una cuenta de GitHub para bifurcar y usar el repositorio de GitHub de prueba.

2. Crear y aplicar el plan de Terraform

  1. Navegue al portal de Azure.

  2. Abra Azure Cloud Shell. Si no seleccionó un entorno anteriormente, seleccione Bash como su entorno.

    Mensaje de Cloud Shell

  3. Cambie los directorios al clouddrive directorio.

    cd clouddrive
    
  4. Cree un directorio llamado deploy.

    mkdir deploy
    
  5. Cree un directorio llamado swap.

    mkdir swap
    
  6. Utilice el ls comando bash para comprobar que ha creado correctamente ambos directorios.

    Cloud Shell después de crear directorios

  7. Cambie los directorios al deploy directorio.

    cd deploy
    
  8. En Cloud Shell, crea un archivo denominado deploy.tf.

    code deploy.tf
    
  9. Inserte el siguiente código en el editor:

    # Configure the Azure provider
    provider "azurerm" { 
        # The "feature" block is required for AzureRM provider 2.x. 
        # If you're using version 1.x, the "features" block is not allowed.
        version = "~>2.0"
        features {}
    }
    
    resource "azurerm_resource_group" "slotDemo" {
        name = "slotDemoResourceGroup"
        location = "westus2"
    }
    
    resource "azurerm_app_service_plan" "slotDemo" {
        name                = "slotAppServicePlan"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        sku {
            tier = "Standard"
            size = "S1"
        }
    }
    
    resource "azurerm_app_service" "slotDemo" {
        name                = "slotAppService"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        app_service_plan_id = azurerm_app_service_plan.slotDemo.id
    }
    
    resource "azurerm_app_service_slot" "slotDemo" {
        name                = "slotAppServiceSlotOne"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        app_service_plan_id = azurerm_app_service_plan.slotDemo.id
        app_service_name    = azurerm_app_service.slotDemo.name
    }
    
  10. Guarde el archivo (<Ctrl>S) y salga del editor (<Ctrl>Q).

  11. Ahora que ha creado el archivo, compruebe su contenido.

    cat deploy.tf
    
  12. Inicialice Terraform.

    terraform init
    
  13. Crear el plan Terraform.

    terraform plan
    
  14. Aprovisione los recursos definidos en el archivo de deploy.tf configuración. (Confirme la acción introduciendo yes en el símbolo del sistema).

    terraform apply
    
  15. Cierre la ventana de Cloud Shell.

  16. En el menú principal de Azure Portal, seleccione Grupos de recursos.

    Selección de

  17. En la pestaña Grupos de recursos , seleccione slotDemoResourceGroup.

    Grupo de recursos creado por Terraform

Ahora verá todos los recursos que Terraform ha creado.

Recursos creados por Terraform

3. Bifurcar el proyecto de prueba

Para poder probar la creación y el intercambio dentro y fuera de las ranuras de implementación, debe bifurcar el proyecto de prueba desde GitHub.

  1. Vaya al repositorio awesome-terraform en GitHub.

  2. Bifurque el repositorio awesome-terraform .

    Bifurcar el repositorio awesome-terraform de GitHub

  3. Siga las indicaciones para bifurcar a su entorno.

4. Implemente desde GitHub a sus ranuras de implementación

Después de bifurcar el repositorio del proyecto de prueba, configure las ranuras de implementación mediante los pasos siguientes:

  1. En el menú principal de Azure Portal, seleccione Grupos de recursos.

  2. Seleccione slotDemoResourceGroup.

  3. Seleccione slotAppService.

  4. Seleccione Opciones de implementación.

    Opciones de implementación para un recurso de App Service

  5. En la pestaña Opción de implementación , seleccione Elegir origen y, a continuación, seleccione GitHub.

    Seleccione el origen de implementación

  6. Una vez que Azure realice la conexión y muestre todas las opciones, seleccione Autorización.

  7. En la pestaña Autorización , seleccione Autorizar y proporcione las credenciales que Azure necesita para acceder a su cuenta de GitHub.

  8. Una vez que Azure valida las credenciales de GitHub, aparece un mensaje que indica que el proceso de autorización ha finalizado. Seleccione Aceptar para cerrar la pestaña Autorización .

  9. Seleccione Elija su organización y seleccione su organización.

  10. Seleccione Elegir proyecto.

  11. En la pestaña Elegir proyecto , seleccione el proyecto awesome-terraform .

    Elige el proyecto awesome-terraform

  12. Seleccione Elegir rama.

  13. En la pestaña Elegir rama , seleccione maestra.

    Elige la rama

  14. En la pestaña Opción de implementación , seleccione Aceptar.

En este punto, ha implementado la ranura de producción. Para implementar la ranura de ensayo, realice los pasos anteriores con las siguientes modificaciones:

  • En el paso 3, seleccione el recurso slotAppServiceSlotOne .

  • En el paso 13, seleccione la rama de trabajo.

    Elija la rama de trabajo

5. Pruebe las implementaciones de la aplicación

En las secciones anteriores, configurará dos ranuras, slotAppService y slotAppServiceSlotOne, para implementar desde diferentes ramas en GitHub. Vamos a obtener una vista previa de las aplicaciones web para validar que se implementaron correctamente.

  1. En el menú principal de Azure Portal, seleccione Grupos de recursos.

  2. Seleccione slotDemoResourceGroup.

  3. Seleccione slotAppService o slotAppServiceSlotOne.

  4. En la página de información general, seleccione URL.

    Seleccione la dirección URL en la pestaña de información general para representar la aplicación

  5. En función de la aplicación seleccionada, verá los siguientes resultados:

    • Aplicación web slotAppService : página azul con un título de página de la aplicación de demostración de tragamonedas 1.
    • slotAppServiceAplicación web de SlotOne: página verde con un título de página de la aplicación de demostración de tragamonedas 2.

    Obtenga una vista previa de las aplicaciones para probar que se implementaron correctamente

6. Intercambie las dos ranuras de implementación

Para probar el intercambio de las dos ranuras de implementación, siga estos pasos:

  1. Cambie a la pestaña del explorador que ejecuta slotAppService (la aplicación con la página azul).

  2. Vuelva a Azure Portal en una pestaña independiente.

  3. Abre Cloud Shell.

  4. Cambie los directorios al directorio clouddrive/swap .

    cd clouddrive/swap
    
  5. En Cloud Shell, crea un archivo denominado swap.tf.

    code swap.tf
    
  6. Inserte el siguiente código en el editor:

    # Configure the Azure provider
    provider "azurerm" { 
        # The "feature" block is required for AzureRM provider 2.x. 
        # If you're using version 1.x, the "features" block is not allowed.
        version = "~>2.0"
        features {}
    }
    
    # Swap the production slot and the staging slot
    resource "azurerm_app_service_active_slot" "slotDemoActiveSlot" {
        resource_group_name   = "slotDemoResourceGroup"
        app_service_name      = "slotAppService"
        app_service_slot_name = "slotappServiceSlotOne"
    }
    
  7. Guarde el archivo (<Ctrl>S) y salga del editor (<Ctrl>Q).

  8. Inicialice Terraform.

    terraform init
    
  9. Crear el plan Terraform.

    terraform plan
    
  10. Aprovisione los recursos definidos en el archivo de swap.tf configuración. (Confirme la acción introduciendo yes en el símbolo del sistema).

    terraform apply
    
  11. Una vez que Terraform haya intercambiado las ranuras, regrese al navegador. Actualice la página.

La aplicación web de la ranura de ensayo slotAppServiceSlotOne se ha intercambiado con la ranura de producción y ahora se representa en verde.

Se han intercambiado las ranuras de implementación

Para volver a la versión de producción original de la aplicación, vuelva a aplicar el plan de Terraform que creó a partir del swap.tf archivo de configuración.

terraform apply

Una vez que se intercambia la aplicación, verá la configuración original.

Solución de problemas de Terraform en Azure

Solución de problemas comunes al usar Terraform en Azure

Pasos siguientes