Ejercicio: Adición de recursos a una pila de implementación
Usted está en sprint 3 para la nueva aplicación de depósitos. Recientemente, el equipo de depósitos solicitó cambios en algunos de los servicios de Azure en uso. También solicitó la creación de otros servicios necesarios para admitir la aplicación.
En este ejercicio, creará una pila de implementación con ámbito en un grupo de recursos que haga referencia a un archivo de Bicep. El archivo define un plan de App Service, un servicio de aplicaciones y una base de datos de Azure SQL. A continuación, modifique la SKU del plan de App Service y actualice la pila de implementación. Por último, agregue un área de trabajo de Log Analytics existente y una nueva instancia de Application Insights para admitir la supervisión de la aplicación.
Durante el proceso, hará lo siguiente:
- Creación de un archivo de Bicep que defina la arquitectura inicial
- Cree una pila de implementación con ámbito en un grupo de recursos mediante el archivo de Bicep.
- Modificación de las propiedades de un recurso administrado existente
- Actualización del archivo de Bicep para incluir un área de trabajo de Log Analytics existente y una nueva instancia de Application Insights
- Actualización de la pila de implementación para implementar los recursos administrados
- Valide los recursos administrados de la pila de implementación.
En este ejercicio se usa la extensión de Bicep para Visual Studio Code. Asegúrese de instalar esta extensión en Visual Studio Code.
Creación del archivo de Bicep
Nuestro primer paso es crear un archivo de Bicep que defina los recursos que usaremos con la pila de implementación.
Abra Visual Studio Code.
Cree un archivo con el nombre main.bicep.
Guarde el archivo vacío para que Visual Studio Code cargue las herramientas de Bicep.
Puede seleccionar Archivo>Guardar como o Ctrl+S en Windows (⌘+S en macOS). Asegúrese de recordar dónde guardó el archivo. Por ejemplo, podría crear una carpeta plantillas en la que guardar el fichero.
Agrega el código de Bicep siguiente al archivo. Implementará la plantilla pronto.
// Parameters @description('The location for all resources.') param location string = 'eastus' @description('The name of the SQL database.') param sqlDatabaseName string = 'sqldb-${uniqueString(resourceGroup().id)}' @description('The password of the admin user.') param sqlServerAdminUserName string @description('The name of the admin user.') @secure() param sqlServerAdminPassword string @description('The name of the SQL server.') param sqlServerName string = 'sql-${uniqueString(resourceGroup().id)}' @description('The name of the web application.') param webApplicationName string = 'webapp-${uniqueString(resourceGroup().id)}' // Variables @description('The name of the app service plan.') var appServicePlanName = 'plan-deposits' // Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'F1' capacity: 1 } } // Resource - Web App resource webApplication 'Microsoft.Web/sites@2023-12-01' = { name: webApplicationName location: location properties: { serverFarmId: appServicePlan.id } } // Resource - SQL Server resource sqlServer 'Microsoft.Sql/servers@2021-11-01' ={ name: sqlServerName location: location properties: { administratorLogin: sqlServerAdminUserName administratorLoginPassword: sqlServerAdminPassword } } // Resource - SQL Database resource sqlServerDatabase 'Microsoft.Sql/servers/databases@2021-11-01' = { parent: sqlServer name: sqlDatabaseName location: location sku: { name: 'Standard' tier: 'Standard' } }
Tenga en cuenta que va a usar expresiones que incluyen la interpolación de cadenas y la función
uniqueString()
para definir los valores de parámetro predeterminados. Alguien que implemente esta plantilla puede invalidar los valores de parámetro predeterminados especificando los valores en el momento de la implementación, pero no puede invalidar los valores de variable.Observe también que va a usar una variable para el nombre del plan de App Service, pero que usará parámetros para los demás nombres. Las cuentas de almacenamiento y las aplicaciones de App Service necesitan nombres globalmente únicos, pero los nombres de planes de App Service solo deben ser únicos dentro de su grupo de recursos. Esta diferencia significa que no pasa nada por usar el mismo nombre de plan de App Service en distintas implementaciones, siempre y cuando todas las implementaciones estén en grupos de recursos diferentes.
Guarde los cambios en el archivo.
Creación de la pila de implementación e implementación de los recursos en Azure
Para implementar esta plantilla en Azure, debe iniciar sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de que ha instalado las herramientas de la CLI de Azure.
En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.
Si el shell que se muestra en el lado derecho de la ventana de terminal es Bash, el shell correcto está abierto y puede ir a la sección siguiente.
Si apareciera un shell distinto de Bash, seleccione la flecha de la lista desplegable del shell y, a continuación, seleccione Azure Cloud Shell (Bash).
En la lista de shells de terminal, seleccione Bash.
En el terminal, vaya al directorio donde ha guardado la plantilla. Por ejemplo, si ha guardado la plantilla en la carpeta templates, puede usar este comando:
cd templates
Instalación de Bicep
Ejecute el comando siguiente para asegurarse de que tiene la versión más reciente de Bicep:
az bicep install && az bicep upgrade
Inicio de sesión en Azure mediante la CLI de Azure
En el terminal de Visual Studio Code, inicie sesión en Azure mediante la ejecución del siguiente comando:
az login
En el explorador que se abre, inicie sesión en su cuenta de Azure.
En el terminal de Visual Studio Code se muestra una lista de las suscripciones asociadas a esta cuenta.
En la lista, busque la suscripción que desea usar para este ejercicio.
Si ha perdido la lista del inicio de sesión, puede usar el siguiente fragmento de código para enumerar de nuevo las suscripciones.
az account list --output table
Establezca la suscripción predeterminada para todos los comandos de la CLI de Azure que ejecute en esta sesión.
az account set --subscription "Your Subscription Name or ID"
Crear un grupo de recursos
Es necesario crear un grupo de recursos para la pila de implementación y los recursos administrados. Para crear un grupo de recursos, ejecute el siguiente comando desde el terminal en Visual Studio Code.
az group create \
--name rg-depositsApplication \
--location eastus
Para implementar esta plantilla en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de que ha instalado Azure PowerShell.
En el menú Terminal, seleccione Nuevo terminal. Normalmente, la ventana de terminal se abre en la mitad inferior de la pantalla.
Si el shell que se muestra en el lado derecho de la ventana de terminal es powershell o pwsh, el shell correcto está abierto y puede ir a la sección siguiente.
Si apareciera un shell distinto de powershell o pwsh, seleccione la flecha de la lista desplegable del shell y, a continuación, seleccione PowerShell.
En la lista de shells de terminal, seleccione powershell o pwsh.
En el terminal, vaya al directorio donde ha guardado la plantilla. Por ejemplo, si ha guardado la plantilla en la carpeta templates, puede usar este comando:
Set-Location -Path templates
Instalación de la CLI de Bicep
Para usar Bicep desde Azure PowerShell, instale la CLI de Bicep.
Inicio de sesión en Azure mediante Azure PowerShell
En el terminal de Visual Studio Code, inicie sesión en Azure mediante la ejecución del siguiente comando:
Connect-AzAccount
En el explorador que se abre, inicie sesión en su cuenta de Azure.
Para obtener el identificador de la suscripción que desea usar para este ejercicio, ejecute el siguiente comando:
Get-AzSubscription
El identificador de la suscripción es la segunda columna. Copie la segunda columna. Es similar a aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e.
Establezca la suscripción predeterminada para todos los comandos de Azure PowerShell que ejecute en esta sesión.
Set-AzContext -SubscriptionId {Your subscription ID}
Crear un grupo de recursos
Es necesario crear un grupo de recursos para la pila de implementación y los recursos administrados. Para crear un grupo de recursos, ejecute el siguiente comando desde el terminal en Visual Studio Code.
New-AzResourceGroup `
-Name rg-depositsApplication `
-Location eastus
Creación del script de implementación
A continuación, es necesario crear la pila de implementación en el ámbito del grupo de recursos creado recientemente. Para crear la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
Para crear la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
Le pide que escriba un valor para
sqlServerAdminUserName
. Cree un nombre para el administrador de SQL Server, seguido de "Entrar".Le pide que escriba un valor para
sqlServerAdminPassword
. Cree una contraseña compleja para el administrador de SQL Server, seguida de "Entrar".Espere a que la implementación se complete antes de continuar con el paso siguiente.
Para crear la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
New-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode None
Le pide que escriba un valor para
sqlServerAdminUserName
. Cree un nombre para el administrador de SQL Server, seguido de "Entrar".Le pide que escriba un valor para
sqlServerAdminPassword
. Cree una contraseña compleja para el administrador de SQL Server, seguida de "Entrar".Espere a que la implementación se complete antes de continuar con el paso siguiente.
Modificación del archivo de Bicep para agregar el área de trabajo de Log Analytics existente y una nueva instancia de Application Insights
En Visual Studio Code, abra el archivo main.bicep.
Agregue el código resaltado a la sección de variables del archivo:
// Variables @description('The name of the Application Insights instance.') var applicationInsightsName = 'appinsights-deposits' @description('The name of the app service plan.') var appServicePlanName = 'plan-deposits' @description('The name of the Log Analytics Workspace.') var logAnalyticsWorkspaceName = 'log-deposits'
Agregue el siguiente código al final del archivo:
// Resource - Log Analytics Workspace resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2023-09-01' = { name: logAnalyticsWorkspaceName location: location properties: { retentionInDays: 30 sku: { name: 'PerGB2018' } } } // Resource - Application Insights resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { name: applicationInsightsName location: location kind: 'web' properties: { Application_Type: 'web' WorkspaceResourceId: logAnalyticsWorkspace.id } }
Guarde los cambios en el archivo.
Modificación del archivo de Bicep para modificar el plan de App Service y App Service
En Visual Studio Code, abra el archivo main.bicep.
Cambie el nombre de la SKU del plan de App Service de
F1
aS1
:// Resource - App Service Plan resource appServicePlan 'Microsoft.Web/serverfarms@2023-12-01' = { name: appServicePlanName location: location sku: { name: 'S1' capacity: 1 } }
Agregue el código resaltado para conectarse a la instancia de Application Insights:
// Resource - Web App resource webApplication 'Microsoft.Web/sites@2023-12-01' = { name: webApplicationName location: location properties: { serverFarmId: appServicePlan.id siteConfig: { appSettings: [ { name: 'APPINSIGHTS_INSTRUMENTATIONKEY' value: applicationInsights.properties.InstrumentationKey } ] } } }
Guarde los cambios en el archivo.
Actualización de pila de implementación
Con el archivo Bicep modificado, queremos actualizar la pila de implementación para que se implementen los cambios realizados en los recursos del archivo Bicep.
Para crear la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
az stack group create \ --name stack-deposits \ --resource-group rg-depositsApplication \ --template-file ./main.bicep \ --action-on-unmanage detachAll \ --deny-settings-mode none
Recibirá un mensaje que indica que la pila ya existe en la suscripción actual. Si el valor de la acción en el parámetro no administrado ha cambiado, la advertencia le avisa de los nuevos valores. Presione
y
, seguido de "Entrar".Le pide que escriba un valor para
sqlServerAdminUserName
. Cree un nombre para el administrador de SQL Server, seguido de "Entrar".Le pide que escriba un valor para
sqlServerAdminPassword
. Cree una contraseña compleja para el administrador de SQL Server, seguida de "Entrar".Espere a que la implementación se complete antes de continuar con el paso siguiente.
Con el archivo Bicep modificado, queremos actualizar la pila de implementación para que se implementen los cambios realizados en el plan de App Service.
Para crear la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
Set-AzResourceGroupDeploymentStack ` -Name stack-deposits ` -ResourceGroupName rg-depositsApplication ` -TemplateFile ./main.bicep ` -ActionOnUnmanage DetachAll ` -DenySettingsMode none
Le pide que escriba un valor para
sqlServerAdminUserName
. Cree un nombre para el administrador de SQL Server, seguido de "Entrar".Le pide que escriba un valor para
sqlServerAdminPassword
. Cree una contraseña compleja para el administrador de SQL Server, seguida de "Entrar".Espere a que la implementación se complete antes de continuar con el paso siguiente.
Comprobación de la actualización de la pila de implementación y los recursos administrados
Una vez completada la actualización, queremos validar que la SKU del plan de App Service se actualiza y que la pila de implementación administra el área de trabajo de Log Analytics existente y la nueva instancia de Application Insights.
Para ver la configuración del plan de App Service, ejecute el siguiente comando desde el terminal en Visual Studio Code.
az appservice plan show \ --name plan-deposits --resource-group rg-depositsApplication
Observe la sección de SKU de la salida. El plan de App Service ahora está en la SKU de S1. Debe ser similar a la siguiente salida:
"sku": { "capacity": 1, "family": "S", "name": "S1", "size": "S1", "tier": "Standard" },
Para ver la configuración de la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
az stack group show \ --resource-group rg-depositsApplication \ --name stack-deposits
Observe la sección de recursos de la salida. Ahora vemos el área de trabajo de Log Analytics existente y la nueva instancia de Application Insights en la lista como recursos administrados. El resultado debería parecerse al siguiente:
"resources": [ { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" }, { "denyStatus": "none", "id": "/subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits", "resourceGroup": "rg-depositsApplication", "status": "managed" } ],
Para ver la configuración del plan de App Service, ejecute el siguiente comando desde el terminal en Visual Studio Code.
$plan = Get-AzAppServicePlan ` -ResourceGroupName rg-depositsApplication ` -Name plan-deposits $sku = $plan.Sku $sku
Fíjese en la salida. El plan de App Service ahora está en la SKU de S1. Debe ser similar al siguiente:
Name : S1 Tier : Standard Size : S1 Family : S Capacity : 1
Para ver la configuración de la pila de implementación, ejecute el siguiente comando desde el terminal en Visual Studio Code.
Get-AzResourceGroupDeploymentStack ` -ResourceGroupName rg-depositsApplication ` -Name stack-deposits
Observe la sección de recursos de la salida. Ahora vemos el área de trabajo de Log Analytics existente y la nueva instancia de Application Insights en la lista como recursos administrados. El resultado debería parecerse al siguiente:
Resources : /subscriptions/./resourceGroups/rg-depositsApplication/././servers/ sql-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././servers/sql-brpdm7iotbwjm/databases/sqldb-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././serverfarms/plan-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././sites/webapp-brpdm7iotbwjm /subscriptions/./resourceGroups/rg-depositsApplication/././components/appinsights-deposits /subscriptions/./resourceGroups/rg-depositsApplication/././workspaces/log-deposits