Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
Configurar Terraform: si aún no lo ha hecho, configure Terraform con una de las siguientes opciones:
- 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
Navegue al portal de Azure.
Abra Azure Cloud Shell. Si no seleccionó un entorno anteriormente, seleccione Bash como su entorno.
Cambie los directorios al
clouddrive
directorio.cd clouddrive
Cree un directorio llamado
deploy
.mkdir deploy
Cree un directorio llamado
swap
.mkdir swap
Utilice el
ls
comando bash para comprobar que ha creado correctamente ambos directorios.Cambie los directorios al
deploy
directorio.cd deploy
En Cloud Shell, crea un archivo denominado
deploy.tf
.code deploy.tf
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 }
Guarde el archivo (<Ctrl>S) y salga del editor (<Ctrl>Q).
Ahora que ha creado el archivo, compruebe su contenido.
cat deploy.tf
Inicialice Terraform.
terraform init
Crear el plan Terraform.
terraform plan
Aprovisione los recursos definidos en el archivo de
deploy.tf
configuración. (Confirme la acción introduciendoyes
en el símbolo del sistema).terraform apply
Cierre la ventana de Cloud Shell.
En el menú principal de Azure Portal, seleccione Grupos de recursos.
En la pestaña Grupos de recursos , seleccione slotDemoResourceGroup.
Ahora verá todos los recursos que Terraform ha creado.
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.
Bifurque el repositorio awesome-terraform .
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:
En el menú principal de Azure Portal, seleccione Grupos de recursos.
Seleccione slotDemoResourceGroup.
Seleccione slotAppService.
Seleccione Opciones de implementación.
En la pestaña Opción de implementación , seleccione Elegir origen y, a continuación, seleccione GitHub.
Una vez que Azure realice la conexión y muestre todas las opciones, seleccione Autorización.
En la pestaña Autorización , seleccione Autorizar y proporcione las credenciales que Azure necesita para acceder a su cuenta de GitHub.
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 .
Seleccione Elija su organización y seleccione su organización.
Seleccione Elegir proyecto.
En la pestaña Elegir proyecto , seleccione el proyecto awesome-terraform .
Seleccione Elegir rama.
En la pestaña Elegir rama , seleccione maestra.
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.
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.
En el menú principal de Azure Portal, seleccione Grupos de recursos.
Seleccione slotDemoResourceGroup.
Seleccione slotAppService o slotAppServiceSlotOne.
En la página de información general, seleccione URL.
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.
6. Intercambie las dos ranuras de implementación
Para probar el intercambio de las dos ranuras de implementación, siga estos pasos:
Cambie a la pestaña del explorador que ejecuta slotAppService (la aplicación con la página azul).
Vuelva a Azure Portal en una pestaña independiente.
Abre Cloud Shell.
Cambie los directorios al directorio clouddrive/swap .
cd clouddrive/swap
En Cloud Shell, crea un archivo denominado
swap.tf
.code swap.tf
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" }
Guarde el archivo (<Ctrl>S) y salga del editor (<Ctrl>Q).
Inicialice Terraform.
terraform init
Crear el plan Terraform.
terraform plan
Aprovisione los recursos definidos en el archivo de
swap.tf
configuración. (Confirme la acción introduciendoyes
en el símbolo del sistema).terraform apply
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.
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