Inicio rápido: Uso de una plantilla de ARM para implementar una aplicación web de Linux en Azure
Azure DevOps Services
Empiece a trabajar con plantillas de Azure Resource Manager (plantillas de ARM) mediante la implementación de una aplicación web de Linux con MySQL. Las plantillas de ARM proporcionan una manera de guardar la configuración en el código. El uso de una plantilla de ARM es un ejemplo de infraestructura como código y una buena práctica de DevOps.
Una plantilla de Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define la infraestructura y la configuración del proyecto. La plantilla usa sintaxis declarativa. En la sintaxis declarativa, se describe la implementación deseada sin escribir la secuencia de comandos de programación para crearla.
Puede usar la sintaxis de Bicep o JSON para implementar recursos de Azure. Obtenga más información sobre la diferencia entre JSON y Bicep para plantillas.
Requisitos previos
Antes de comenzar, necesitará lo siguiente:
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- Una organización activa de Azure DevOps. Suscribirse a Azure Pipelines.
- (Para implementaciones de Bicep) Un grupo de recursos existente. Cree un grupo de recursos mediante Azure Portal, la CLI de Azure o Azure PowerShell.
Obtención del código
Bifurque este repositorio en GitHub:
https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.web/webapp-linux-managed-mysql
Revisión de la plantilla
La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure.
La plantilla define varios recursos:
- Microsoft.Web/serverfarms
- Microsoft.Web/sites
- Microsoft.DBforMySQL/servers
- Microsoft.DBforMySQL/servers/firewallrules
- Microsoft.DBforMySQL/servers/databases
Creación de la canalización e implementación de la plantilla
Inicie sesión en su organización de Azure DevOps y vaya a su proyecto. Si aún no tiene un proyecto, cree uno.
Vaya a Canalizaciones y seleccione Crear canalización.
Seleccione GitHub como ubicación del código fuente.
Nota:
Puede que se le redirija a GitHub para iniciar sesión. Si es así, escriba sus credenciales de GitHub.
Cuando aparezca la lista de repositorios, seleccione
yourname/azure-quickstart-templates/
.Nota:
Es posible que se le redirija a GitHub para instalar la aplicación Azure Pipelines. Si es así, seleccione Aprobar e instalar.
Cuando aparezca la pestaña Configurar, seleccione
Starter pipeline
.Reemplace el contenido de la canalización por este código:
trigger: - none pool: vmImage: 'ubuntu-latest'
Cree tres variables:
siteName
,administratorLogin
yadminPass
.adminPass
debe ser una variable secreta.- Seleccione Variables.
- Use el signo
+
para agregar tres variables. Al crearadminPass
, seleccione Mantener este valor como secreto. - Cuando termine, haga clic en Guardar .
Variable Value ¿Secreto? siteName mytestsite
No adminUser fabrikam
No adminPass Fqdn:5362!
Sí Asigne la variable secreta
$(adminPass)
para que esté disponible en la tarea Implementación de un grupo de recursos de Azure. En la parte superior del archivo YAML, asigne$(adminPass)
a$(ARM_PASS)
.variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest'
Agregue la tarea Copiar archivos al archivo YAML. Usará el proyecto
101-webapp-linux-managed-mysql
. Para más información, consulte Compilación de una aplicación web en Linux con el repositorio de Azure Database for MySQL.variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest' steps: - task: CopyFiles@2 inputs: SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)'
Agregue y configure la tarea Implementación de un grupo de recursos de Azure.
La tarea hace referencia tanto al artefacto que creó con la tarea Copiar archivos como a las variables de canalización. Establezca estos valores al configurar la tarea.
-
Ámbito de implementación (deploymentScope): establezca el ámbito de implementación en
Resource Group
. La implementación puede tener como destino un grupo de administración, una suscripción de Azure o un grupo de recursos. - Conexión de Azure Resource Manager (azureResourceManagerConnection): seleccione la conexión de servicio de Azure Resource Manager. Para configurar una nueva conexión de servicio, seleccione la suscripción de Azure en la lista y haga clic en Autorizar. Consulte Conexión a Microsoft Azure para más información.
- Suscripción (subscriptionId): seleccione la suscripción en la que debe ir la implementación.
-
Acción (acción): establezca este valor en
Create or update resource group
para crear un nuevo grupo de recursos o para actualizar uno existente. -
Grupo de recursos: establezca este valor en
ARMPipelinesLAMP-rg
para asignar un nombre al nuevo grupo de recursos. Si se trata de un grupo de recursos existente, se actualizará. - Ubicación (location): ubicación para implementar el grupo de recursos. Establézcala en la ubicación más cercana (por ejemplo, Oeste de EE. UU.). Si el grupo de recursos ya existe en la suscripción, se omitirá este valor.
-
Ubicación de la plantilla (templateLocation): establezca este valor en
Linked artifact
. Se trata de la ubicación de la plantilla y los archivos de parámetros. -
Plantilla (csmFile): establezca este valor en
$(Build.ArtifactStagingDirectory)/azuredeploy.json
. Se trata de la ruta de acceso a la plantilla de ARM. -
Parámetros de plantilla (csmParametersFile): establezca este valor en
$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json
. Esta es la ruta de acceso al archivo de parámetros de la plantilla de ARM. -
Invalidar parámetros de plantilla (overrideParameters): establezca este valor en
-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)
para usar las variables que creó anteriormente. Estos valores reemplazarán los parámetros establecidos en el archivo de parámetros de plantilla. -
Modo de implementación (deploymentMode): la forma en que se deben implementar los recursos. Establézcalo en
Incremental
. Incremental mantiene los recursos que no están en la plantilla de ARM y es más rápido queComplete
. El modoValidate
le permite encontrar problemas con la plantilla antes de la implementación.
variables: ARM_PASS: $(adminPass) trigger: - none pool: vmImage: 'ubuntu-latest' steps: - task: CopyFiles@2 inputs: SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/' Contents: '**' TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: AzureResourceManagerTemplateDeployment@3 inputs: deploymentScope: 'Resource Group' azureResourceManagerConnection: '<your-resource-manager-connection>' subscriptionId: '<your-subscription-id>' action: 'Create Or Update Resource Group' resourceGroupName: 'ARMPipelinesLAMP-rg' location: '<your-closest-location>' templateLocation: 'Linked artifact' csmFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.json' csmParametersFile: '$(Build.ArtifactStagingDirectory)/azuredeploy.parameters.json' overrideParameters: '-siteName $(siteName) -administratorLogin $(adminUser) -administratorLoginPassword $(ARM_PASS)' deploymentMode: 'Incremental'
-
Ámbito de implementación (deploymentScope): establezca el ámbito de implementación en
Haga clic en Guardar y ejecutar para implementar la plantilla. El trabajo de canalización se iniciará y, después de unos minutos, dependiendo del agente, el estado del trabajo debe indicar
Success
.
Revisión de los recursos implementados
Compruebe que los recursos se han implementado. Vaya al grupo de recursos
ARMPipelinesLAMP-rg
en Azure Portal y compruebe que ve App Service, el plan de App Service y los recursos del servidor de Azure Database for MySQL.También puede comprobar los recursos mediante la CLI de Azure.
az resource list --resource-group ARMPipelinesLAMP-rg --output table
Vaya al nuevo sitio. Si establece
siteName
enarmpipelinetestsite
, el sitio se encuentra enhttps://armpipelinetestsite.azurewebsites.net/
.
Limpieza de recursos
También puede usar una plantilla de ARM para eliminar recursos. Cambie el valor action
de la tarea Implementación de un grupo de recursos de Azure a DeleteRG
. También puede quitar las entradas de templateLocation
, csmFile
, csmParametersFile
, overrideParameters
y deploymentMode
.
variables:
ARM_PASS: $(adminPass)
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
steps:
- task: CopyFiles@2
inputs:
SourceFolder: 'quickstarts/microsoft.web/webapp-linux-managed-mysql/'
Contents: '**'
TargetFolder: '$(Build.ArtifactStagingDirectory)'
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: '<your-resource-manager-connection>'
subscriptionId: '<your-subscription-id>'
action: 'DeleteRG'
resourceGroupName: 'ARMPipelinesLAMP-rg'
location: ''<your-closest-location>'