Ejercicio: Vista previa de los cambios con el comando what-if
Nota:
La primera vez que active un espacio aislado y acepte los términos, la cuenta de Microsoft se asocia a un nuevo directorio de Azure denominado Espacio aislado de Microsoft Learn. Se le agrega también a una suscripción especial llamada Suscripción de Concierge.
El equipo de diseño de la empresa de juguetes le ha pedido que actualice una plantilla que configura una red virtual. En esta unidad, usa la operación hipotética para comprobar los efectos de implementar la plantilla actualizada.
Durante el proceso, hará lo siguiente:
- Creación e implementación de una plantilla inicial.
- Prepare la implementación de una plantilla ligeramente diferente y use la operación hipotética para revisar los cambios esperados.
- Use una implementación completa para implementar una plantilla vacía y utilice la operación hipotética para revisar los cambios esperados.
En este ejercicio se utilizan las herramientas de Azure Resource Manager para Visual Studio Code. Asegúrese de instalar esta extensión en Visual Studio Code.
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 de la plantilla de inicio
Empiece con una plantilla existente que el equipo ya haya usado. La plantilla crea una red virtual.
Abra Visual Studio Code.
Cree un archivo con el nombre azuredeploy.json.
Guarde el archivo vacío para que Visual Studio Code cargue las herramientas de plantilla de ARM.
Puede seleccionar Archivo>Guardar como o Ctrl+S en Windows (⌘+S en macOS). Debe acordarse de dónde ha guardado el archivo. Por ejemplo, podría crear una carpeta scripts para guardarlo ahí.
Copie el código siguiente en azuredeploy.json.
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "apiVersion": "2024-01-01", "type": "Microsoft.Network/virtualNetworks", "name": "vnet-001", "location": "[resourceGroup().location]", "tags": { "CostCenter": "12345", "Owner": "Team A" }, "properties": { "addressSpace": { "addressPrefixes": [ "10.0.0.0/16" ] }, "enableVmProtection": false, "enableDdosProtection": false, "subnets": [ { "name": "subnet001", "properties": { "addressPrefix": "10.0.0.0/24" } }, { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ] } } ] }
Guarde la plantilla.
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). Debe acordarse de dónde ha guardado el archivo. Por ejemplo, podría crear una carpeta scripts para guardarlo ahí.
Copie el código siguiente en main.bicep.
resource vnet 'Microsoft.Network/virtualNetworks@2024-01-01' = { name: 'vnet-001' location: resourceGroup().location tags: { 'CostCenter': '12345' 'Owner': 'Team A' } properties: { addressSpace: { addressPrefixes: [ '10.0.0.0/16' ] } enableVmProtection: false enableDdosProtection: false subnets: [ { name: 'subnet001' properties: { addressPrefix: '10.0.0.0/24' } } { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ] } }
Guarde la plantilla.
Implementación de la plantilla en Azure
Para implementar esta plantilla en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de haber instalado Azure PowerShell e inicie sesión en la misma cuenta que ha activado el espacio aislado.
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, ejecute el comando siguiente:
Connect-AzAccount
Se abre un explorador para que pueda iniciar sesión en la cuenta de Azure.
Después de iniciar sesión, en el terminal se muestra una lista de las suscripciones asociadas a esta cuenta.
Si ha activado el espacio aislado, se muestra una suscripción denominada Suscripción de Concierge. Úsela para el resto del ejercicio.
Establezca la suscripción predeterminada para todos los comandos de Azure PowerShell que ejecute en esta sesión.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota:
Si ha usado más de un espacio aislado recientemente, es posible que en el terminal se muestre más de una instancia de Suscripción de Concierge. En este caso, siga estos dos pasos para establecer una de las suscripciones como la predeterminada. Si el comando anterior se ha realizado correctamente y solo se muestra una Suscripción de Concierge, omita los dos pasos siguientes.
Obtenga el identificador de la suscripción. Al ejecutar el comando siguiente se mostrarán las suscripciones y sus identificadores. Busque
Concierge Subscription
y copie el identificador de la segunda columna. Tiene un aspecto similar aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Cambie la suscripción activa a la Suscripción de Concierge. Asegúrese de reemplazar {identificador de la suscripción} por el que ha copiado.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Establecimiento del grupo de recursos predeterminado
Puede establecer el grupo de recursos predeterminado y omitir el parámetro del resto de los comandos de Azure PowerShell de este ejercicio. Establezca este valor predeterminado en el grupo de recursos que se ha creado de forma automática en el entorno del espacio aislado.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
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 tiene instalada la CLI de Azure y de que inicia sesión con la misma cuenta que utilizó para activar el espacio aislado.
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
En el terminal de Visual Studio Code, inicie sesión en Azure mediante el 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.
Establezca la suscripción predeterminada para todos los comandos de la CLI de Azure que ejecute en esta sesión.
az account set --subscription "Concierge Subscription"
Nota:
Si ha usado más de un espacio aislado recientemente, es posible que en el terminal se muestre más de una instancia de Suscripción de Concierge. En este caso, siga estos dos pasos para establecer una de las suscripciones como la predeterminada. Si el comando anterior se ha realizado correctamente y solo se muestra una Suscripción de Concierge, omita los dos pasos siguientes.
Obtenga los identificadores de la Suscripción de Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Establezca la suscripción predeterminada con el identificador de la suscripción. Reemplace {identificador de su suscripción} por el identificador más reciente de la Suscripción de Concierge.
az account set --subscription {your subscription ID}
Establecimiento del grupo de recursos predeterminado
Al usar la CLI de Azure, puede establecer el grupo de recursos predeterminado y omitir el parámetro del resto de los comandos de la CLI de Azure de este ejercicio. Establezca el valor predeterminado en el grupo de recursos que se ha creado de forma automática en el entorno del espacio aislado.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Para implementar esta plantilla en Azure, inicie sesión en la cuenta de Azure desde el terminal de Visual Studio Code. Asegúrese de haber instalado Azure PowerShell e inicie sesión en la misma cuenta que ha activado el espacio aislado.
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
Inicio de sesión en Azure mediante Azure PowerShell
En el terminal de Visual Studio Code, ejecute el comando siguiente:
Connect-AzAccount
Se abre un explorador para que pueda iniciar sesión en la cuenta de Azure.
Después de iniciar sesión, en el terminal se muestra una lista de las suscripciones asociadas a esta cuenta.
Si ha activado el espacio aislado, se muestra una suscripción denominada Suscripción de Concierge. Úsela para el resto del ejercicio.
Establezca la suscripción predeterminada para todos los comandos de Azure PowerShell que ejecute en esta sesión.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota:
Si ha usado más de un espacio aislado recientemente, es posible que en el terminal se muestre más de una instancia de Suscripción de Concierge. En este caso, siga estos dos pasos para establecer una de las suscripciones como la predeterminada. Si el comando anterior se ha realizado correctamente y solo se muestra una Suscripción de Concierge, omita los dos pasos siguientes.
Obtenga el identificador de la suscripción. Al ejecutar el comando siguiente se mostrarán las suscripciones y sus identificadores. Busque
Concierge Subscription
y copie el identificador de la segunda columna. Tiene un aspecto similar aaaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Cambie la suscripción activa a la Suscripción de Concierge. Asegúrese de reemplazar {identificador de la suscripción} por el que ha copiado.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Establecimiento del grupo de recursos predeterminado
Puede establecer el grupo de recursos predeterminado y omitir el parámetro del resto de los comandos de Azure PowerShell de este ejercicio. Establezca este valor predeterminado en el grupo de recursos que se ha creado de forma automática en el entorno del espacio aislado.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
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 tiene instalada la CLI de Azure y de que inicia sesión con la misma cuenta que utilizó para activar el espacio aislado.
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
Inicio de sesión en Azure
En el terminal de Visual Studio Code, inicie sesión en Azure mediante el 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.
Establezca la suscripción predeterminada para todos los comandos de la CLI de Azure que ejecute en esta sesión.
az account set --subscription "Concierge Subscription"
Nota:
Si ha usado más de un espacio aislado recientemente, es posible que en el terminal se muestre más de una instancia de Suscripción de Concierge. En este caso, siga estos dos pasos para establecer una de las suscripciones como la predeterminada. Si el comando anterior se ha realizado correctamente y solo se muestra una Suscripción de Concierge, omita los dos pasos siguientes.
Obtenga los identificadores de la Suscripción de Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Establezca la suscripción predeterminada con el identificador de la suscripción. Reemplace {identificador de su suscripción} por el identificador más reciente de la Suscripción de Concierge.
az account set --subscription {your subscription ID}
Establecimiento del grupo de recursos predeterminado
Al usar la CLI de Azure, puede establecer el grupo de recursos predeterminado y omitir el parámetro del resto de los comandos de la CLI de Azure de este ejercicio. Establezca el valor predeterminado en el grupo de recursos que se ha creado de forma automática en el entorno del espacio aislado.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Implementación de la plantilla mediante Azure PowerShell
Ejecute New-AzResourceGroupDeployment
para implementar la plantilla.
New-AzResourceGroupDeployment -TemplateFile main.bicep
El texto En ejecución... aparece en el terminal. La implementación tarda uno o dos minutos en completarse.
Implementación de la plantilla mediante Azure PowerShell
Ejecute New-AzResourceGroupDeployment
para implementar la plantilla.
New-AzResourceGroupDeployment -TemplateFile azuredeploy.json
El texto En ejecución... aparece en el terminal. La implementación tarda uno o dos minutos en completarse.
Implementación la plantilla ARM mediante la CLI de Azure
Ejecute az deployment group create
para implementar la plantilla.
az deployment group create --template-file main.bicep
La implementación tarda uno o dos minutos en completarse.
Implementación la plantilla ARM mediante la CLI de Azure
Ejecute az deployment group create
para implementar la plantilla.
az deployment group create --template-file azuredeploy.json
La implementación tarda uno o dos minutos en completarse.
Comprobación de la implementación
Para comprobar que la implementación se ha creado y enviado a Azure, vaya a Azure Portal y asegúrese de que está en la suscripción del espacio aislado:
Seleccione el avatar en la esquina superior de la página.
Seleccione Cambiar directorio. En la lista, seleccione el directorio Espacio aislado de Microsoft Learn.
Seleccione Grupos de recursos.
Seleccione
[nombre del grupo de recursos del espacio aislado] .En la Información general, verá la implementación realizada correctamente.
Seleccione 1 correcta para ver los detalles de la implementación.
Seleccione la implementación main para ver qué recursos se han implementado. En este caso, se ha implementado una red virtual (espacio de direcciones 10.0.0.0/16) con dos subredes.
Deje abierta la página en el explorador para que pueda volver a comprobar las implementaciones más adelante.
Modificación de la plantilla
En el archivo azuredeploy.json en Visual Studio Code, elimine la etiqueta
Owner
y su valor. Cuando haya terminado, la propiedadtags
de la red virtual debe tener el siguiente aspecto:"tags": { "CostCenter": "12345" },
Actualice
addressPrefixes
para cambiar/16
por/15
. Cuando haya terminado, la propiedadaddressSpace
de la red virtual debe tener el siguiente aspecto:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Elimine la subred denominada
subnet001
. Asegúrese de eliminar todo el objeto de subred. Cuando haya terminado, la propiedadsubnets
de la red virtual debe tener el siguiente aspecto:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Guarde la plantilla.
En el archivo main.bicep en Visual Studio Code, elimine la etiqueta
Owner
y su valor. Cuando haya terminado, la propiedadtags
de la red virtual debe tener el siguiente aspecto:tags: { 'CostCenter': '12345' }
Actualice
addressPrefixes
para cambiar/16
por/15
. Cuando haya terminado, la propiedadaddressSpace
de la red virtual debe tener el siguiente aspecto:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Elimine la subred denominada
subnet001
. Asegúrese de eliminar todo el objeto de subred. Cuando haya terminado, la propiedadsubnets
de la red virtual debe tener el siguiente aspecto:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Guarde la plantilla.
Ejecución del comando hipotético con la plantilla modificada
Ejecute New-AzResourceGroupDeployment
con la marca -WhatIf
para realizar la operación what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile main.bicep
Ejecute New-AzResourceGroupDeployment
con la marca -WhatIf
para realizar la operación what-if.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile azuredeploy.json
Ejecute az deployment group what-if
para realizar la operación hipotética:
az deployment group what-if \
--template-file main.bicep
Ejecute az deployment group what-if
para realizar la operación hipotética:
az deployment group what-if \
--template-file azuredeploy.json
La salida hipotética será similar a la siguiente:
Observe que el resultado está codificado por colores además de tener un prefijo:
- Púrpura y ~ para cualquier modificación
- Verde y + para crear recursos
- Naranja y - para las eliminaciones
Eliminación de los recursos en la plantilla
Actualice el archivo azuredeploy.json en Visual Studio Code y quite todo el contenido de la matriz
resources
. Cuando haya terminado, la plantilla tendrá un aspecto similar al siguiente:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Guarde la plantilla.
En el archivo main.bicep en Visual Studio Code, elimine todo el contenido del archivo, pero no el propio archivo.
Guarde la plantilla.
Implementación mediante el Modo completo y la opción de confirmación
En estos pasos, implementará una plantilla vacía en el entorno existente.
Advertencia
Si lo hace en la vida real, se quitará todo lo que tenga en la nube. El siguiente código es interesante como un experimento intelectual, pero tenga cuidado al usar este modo. Como mínimo, use la marca -Confirm
para que pueda detener esta operación si no le gustan los cambios propuestos.
Advertencia
Si lo hace en la vida real, se quitará todo lo que tenga en la nube. El siguiente código es interesante como un experimento intelectual, pero tenga cuidado al usar este modo. Como mínimo, use la marca --confirm-with-what-if
para que pueda detener esta operación si no le gustan los cambios propuestos.
Ejecute
New-AzResourceGroupDeployment
con la marca-Mode Complete
para ejecutar la implementación en modo completo:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
La salida será similar a la siguiente:
Observe cómo la última línea de la salida es una confirmación. Le pide que seleccione y o n para continuar.
Para [A] Sí a todo, escriba A a fin de ejecutar la implementación y limpiar el entorno.
Ejecute
New-AzResourceGroupDeployment
con la marca-Mode Complete
para ejecutar la implementación en modo completo:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
La salida será similar a la siguiente:
Observe cómo la última línea de la salida es una confirmación. Le pide que seleccione y o n para continuar.
Para [A] Sí a todo, escriba A a fin de ejecutar la implementación y limpiar el entorno.
Ejecute
az deployment group create
con la marca--mode Complete
para crear una implementación en modo completo:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
La salida será similar a la siguiente:
Observe cómo la última línea de la salida es una confirmación. Le pide que seleccione y o n para continuar.
Escriba y (para "sí") a fin de ejecutar la implementación y limpiar el entorno.
Ejecute
az deployment group create
con la marca--mode Complete
para crear una implementación en modo completo:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
La salida será similar a la siguiente:
Observe cómo la última línea de la salida es una confirmación. Le pide que seleccione y o n para continuar.
Escriba y (para "sí") a fin de ejecutar la implementación y limpiar el entorno.
Comprobación de la implementación
Vuelva al explorador abierto que ha usado antes. Compruebe que la red virtual ya no está allí, como en esta captura de pantalla: