Esercizio - Visualizzare in anteprima le modifiche con il comando di simulazione
Nota
La prima volta che si attiva una sandbox e si accettano le condizioni, l'account Microsoft viene associato a una nuova directory di Azure denominata Microsoft Learn Sandbox. Si viene aggiunti anche a una sottoscrizione speciale denominata Concierge Subscription.
Il team di progettazione dell'azienda di giocattoli ha chiesto di aggiornare un modello usato per configurare una rete virtuale. In questa unità si usa la simulazione per verificare gli effetti della distribuzione del modello aggiornato.
Durante il processo, si eseguiranno queste operazioni:
- Creare e distribuire un modello iniziale.
- Predisporre la distribuzione di un modello leggermente diverso e usare l'operazione di simulazione per esaminare le modifiche previste.
- Usare una distribuzione completa per distribuire un modello vuoto e usare l'operazione di simulazione per esaminare le modifiche previste.
Questo esercizio usa gli Strumenti di Azure Resource Manager per Visual Studio Code. Assicurarsi di installare questa estensione in Visual Studio Code.
In questo esercizio viene usata l'estensione Bicep per Visual Studio Code. Assicurarsi di installare questa estensione in Visual Studio Code.
Creare il modello iniziale
Si inizia con un modello esistente che il team sta già usando. Il modello crea la rete virtuale.
Aprire Visual Studio Code.
Creare un nuovo file denominato azuredeploy.json.
Salvare il file vuoto in modo che Visual Studio Code carichi gli strumenti del modello di ARM.
È possibile selezionare File>Salva con nome oppure premere CTRL+S in Windows (⌘+S in macOS). Assicurarsi di ricordare dove è stato salvato il file. Ad esempio, è possibile creare una cartella scripts in cui salvarlo.
Copiare il codice seguente in 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" } } ] } } ] }
Scegliere Salva per salvare il modello.
Aprire Visual Studio Code.
Creare un nuovo file denominato main.bicep.
Salvare il file vuoto in modo che Visual Studio Code possa caricare gli strumenti di Bicep.
È possibile selezionare File>Salva con nome oppure premere CTRL+S in Windows (⌘+S in macOS). Assicurarsi di ricordare dove è stato salvato il file. Ad esempio, è possibile creare una cartella scripts in cui salvarlo.
Copiare il codice seguente in 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' } } ] } }
Scegliere Salva per salvare il modello.
Distribuire il modello in Azure
Per distribuire questo modello in Azure, accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi che sia stato installato Azure PowerShell e di accedere allo stesso account con cui è stata attivata la sandbox.
Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
Se la shell visualizzata sul lato destro della finestra del terminale è PowerShell o pwsh, la shell corretta è aperta ed è possibile passare alla sezione successiva.
Se viene visualizzata una shell diversa da powershell o pwsh, selezionare l'elenco a discesa delle shell e quindi PowerShell.
Nell'elenco delle shell del terminale selezionare powershell o pwsh.
Nel terminale passare alla directory in cui è stato salvato il modello. Se, ad esempio, il salvataggio del modello è stato eseguito nella cartella templates, è possibile usare questo comando:
Set-Location -Path templates
Installare l'interfaccia della riga di comando di Bicep
Per usare Bicep da Azure PowerShell, installare l'interfaccia della riga di comando di Bicep.
Accedere ad Azure usando Azure PowerShell
Nel terminale di Visual Studio Code eseguire il comando seguente:
Connect-AzAccount
Verrà aperta una finestra del browser per accedere all'account Azure.
Una volta effettuato l'accesso ad Azure, il terminale mostra un elenco delle sottoscrizioni associate all'account.
Se è stata attivata la sandbox, viene visualizzata una sottoscrizione denominata Concierge Subscription. Usarla nella parte rimanente dell'esercizio.
Impostare la sottoscrizione predefinita per tutti i comandi di Azure PowerShell eseguiti in questa sessione.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se di recente sono state usate più sandbox, il terminale potrebbe mostrare più istanze di Concierge Subscription. In questo caso, attenersi ai due passaggi seguenti per impostarne una come predefinita. Se il comando precedente ha avuto esito positivo ed è elencata una sola Concierge Subscription, ignorare i due passaggi successivi.
Ottenere l'ID sottoscrizione. Eseguendo il comando seguente vengono elencate le sottoscrizioni e i rispettivi ID. Cercare
Concierge Subscription
e quindi copiare l'ID dalla seconda colonna. Il risultato sarà simile a:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Modificare la sottoscrizione attiva impostandola su Concierge Subscription. Assicurarsi di sostituire {Your subscription ID} con l'ID copiato.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Impostare il gruppo di risorse predefinito
In questo esercizio è possibile impostare il gruppo di risorse predefinito e omettere il parametro dal resto dei comandi di Azure PowerShell. Impostare come predefinito il gruppo di risorse creato automaticamente nell'ambiente sandbox.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Per distribuire questo modello in Azure, è necessario accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi che sia installata l'interfaccia della riga di comando di Azure e ricordarsi di accedere con lo stesso account usato per attivare la sandbox.
Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
Se la shell visualizzata sul lato destro della finestra del terminale è bash, significa che è aperta la shell corretta ed è possibile passare alla sezione successiva.
Se viene visualizzata una shell diversa da bash, selezionare l'elenco a discesa delle shell e quindi Azure Cloud Shell (Bash).
Nell'elenco delle shell del terminale selezionare bash.
Nel terminale passare alla directory in cui è stato salvato il modello. Se, ad esempio, il salvataggio del modello è stato eseguito nella cartella templates, è possibile usare questo comando:
cd templates
Installare Bicep
Eseguire il comando seguente per assicurarsi che sia installata la versione più recente di Bicep:
az bicep install && az bicep upgrade
Accedere ad Azure
Nel terminale di Visual Studio Code accedere ad Azure eseguendo il comando seguente:
az login
Nel browser visualizzato accedere al proprio account Azure.
Il terminale di Visual Studio Code mostra un elenco delle sottoscrizioni associate a questo account.
Impostare la sottoscrizione predefinita per tutti i comandi dell'interfaccia della riga di comando di Azure eseguiti in questa sessione.
az account set --subscription "Concierge Subscription"
Nota
Se di recente sono state usate più sandbox, il terminale potrebbe mostrare più istanze di Concierge Subscription. In questo caso, attenersi ai due passaggi seguenti per impostarne una come predefinita. Se il comando precedente ha avuto esito positivo ed è elencata una sola Concierge Subscription, ignorare i due passaggi successivi.
Ottenere gli ID della sottoscrizione Concierge Subscription.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Impostare la sottoscrizione predefinita usando l'ID sottoscrizione. Sostituire {your subscription ID} con l'ID della sottoscrizione Concierge Subscription più recente.
az account set --subscription {your subscription ID}
Impostare il gruppo di risorse predefinito
Se si usa l'interfaccia della riga di comando di Azure, in questo esercizio è possibile impostare il gruppo di risorse predefinito e omettere il parametro dal resto dei comandi dell'interfaccia della riga di comando di Azure. Impostare come gruppo di risorse predefinito quello creato nell'ambiente sandbox.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Per distribuire questo modello in Azure, accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi che sia stato installato Azure PowerShell e di accedere allo stesso account con cui è stata attivata la sandbox.
Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
Se la shell visualizzata sul lato destro della finestra del terminale è PowerShell o pwsh, la shell corretta è aperta ed è possibile passare alla sezione successiva.
Se viene visualizzata una shell diversa da powershell o pwsh, selezionare l'elenco a discesa delle shell e quindi PowerShell.
Nell'elenco delle shell del terminale selezionare powershell o pwsh.
Nel terminale passare alla directory in cui è stato salvato il modello. Se, ad esempio, il salvataggio del modello è stato eseguito nella cartella templates, è possibile usare questo comando:
Set-Location -Path templates
Accedere ad Azure usando Azure PowerShell
Nel terminale di Visual Studio Code eseguire il comando seguente:
Connect-AzAccount
Verrà aperta una finestra del browser per accedere all'account Azure.
Una volta effettuato l'accesso ad Azure, il terminale mostra un elenco delle sottoscrizioni associate all'account.
Se è stata attivata la sandbox, viene visualizzata una sottoscrizione denominata Concierge Subscription. Usarla nella parte rimanente dell'esercizio.
Impostare la sottoscrizione predefinita per tutti i comandi di Azure PowerShell eseguiti in questa sessione.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Nota
Se di recente sono state usate più sandbox, il terminale potrebbe mostrare più istanze di Concierge Subscription. In questo caso, attenersi ai due passaggi seguenti per impostarne una come predefinita. Se il comando precedente ha avuto esito positivo ed è elencata una sola Concierge Subscription, ignorare i due passaggi successivi.
Ottenere l'ID sottoscrizione. Eseguendo il comando seguente vengono elencate le sottoscrizioni e i rispettivi ID. Cercare
Concierge Subscription
e quindi copiare l'ID dalla seconda colonna. Il risultato sarà simile a:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
.Get-AzSubscription
Modificare la sottoscrizione attiva impostandola su Concierge Subscription. Assicurarsi di sostituire {Your subscription ID} con l'ID copiato.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Impostare il gruppo di risorse predefinito
In questo esercizio è possibile impostare il gruppo di risorse predefinito e omettere il parametro dal resto dei comandi di Azure PowerShell. Impostare come predefinito il gruppo di risorse creato automaticamente nell'ambiente sandbox.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Per distribuire questo modello in Azure, è necessario accedere all'account Azure dal terminale di Visual Studio Code. Assicurarsi che sia installata l'interfaccia della riga di comando di Azure e ricordarsi di accedere con lo stesso account usato per attivare la sandbox.
Dal menu Terminale scegliere Nuovo terminale. La finestra del terminale si apre solitamente nella parte inferiore della schermata.
Se la shell visualizzata sul lato destro della finestra del terminale è bash, significa che è aperta la shell corretta ed è possibile passare alla sezione successiva.
Se viene visualizzata una shell diversa da bash, selezionare l'elenco a discesa delle shell e quindi Azure Cloud Shell (Bash).
Nell'elenco delle shell del terminale selezionare bash.
Nel terminale passare alla directory in cui è stato salvato il modello. Se, ad esempio, il salvataggio del modello è stato eseguito nella cartella templates, è possibile usare questo comando:
cd templates
Accedere ad Azure
Nel terminale di Visual Studio Code accedere ad Azure eseguendo il comando seguente:
az login
Nel browser visualizzato accedere al proprio account Azure.
Il terminale di Visual Studio Code mostra un elenco delle sottoscrizioni associate a questo account.
Impostare la sottoscrizione predefinita per tutti i comandi dell'interfaccia della riga di comando di Azure eseguiti in questa sessione.
az account set --subscription "Concierge Subscription"
Nota
Se di recente sono state usate più sandbox, il terminale potrebbe mostrare più istanze di Concierge Subscription. In questo caso, attenersi ai due passaggi seguenti per impostarne una come predefinita. Se il comando precedente ha avuto esito positivo ed è elencata una sola Concierge Subscription, ignorare i due passaggi successivi.
Ottenere gli ID della sottoscrizione Concierge Subscription.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Impostare la sottoscrizione predefinita usando l'ID sottoscrizione. Sostituire {your subscription ID} con l'ID della sottoscrizione Concierge Subscription più recente.
az account set --subscription {your subscription ID}
Impostare il gruppo di risorse predefinito
Se si usa l'interfaccia della riga di comando di Azure, in questo esercizio è possibile impostare il gruppo di risorse predefinito e omettere il parametro dal resto dei comandi dell'interfaccia della riga di comando di Azure. Impostare come gruppo di risorse predefinito quello creato nell'ambiente sandbox.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Distribuire il modello usando Azure PowerShell
Eseguire New-AzResourceGroupDeployment
per distribuire il modello.
New-AzResourceGroupDeployment -TemplateFile main.bicep
Viene visualizzato il testo In esecuzione... nel terminale. Il completamento della distribuzione richiede un minuto o due.
Distribuire il modello usando Azure PowerShell
Eseguire New-AzResourceGroupDeployment
per distribuire il modello.
New-AzResourceGroupDeployment -TemplateFile azuredeploy.json
Viene visualizzato il testo In esecuzione... nel terminale. Il completamento della distribuzione richiede un minuto o due.
Distribuire il modello tramite l'interfaccia della riga di comando di Azure
Eseguire az deployment group create
per distribuire il modello.
az deployment group create --template-file main.bicep
Il completamento della distribuzione richiede un minuto o due.
Distribuire il modello tramite l'interfaccia della riga di comando di Azure
Eseguire az deployment group create
per distribuire il modello.
az deployment group create --template-file azuredeploy.json
Il completamento della distribuzione richiede un minuto o due.
Verificare la distribuzione
Per verificare che la distribuzione sia stata creata e inviata ad Azure, passare al portale di Azure e assicurarsi che la sottoscrizione della sandbox sia attiva:
Selezionare il proprio avatar nell'angolo superiore della pagina.
Selezionare Cambia directory. Nell'elenco selezionare la directory Microsoft Learn Sandbox.
Selezionare Gruppi di risorse.
Selezionare
[nome gruppo di risorse sandbox] .In Panoramica viene visualizzata una distribuzione completata.
Selezionare 1 completata per visualizzare i dettagli della distribuzione.
Selezionare la distribuzione principale per visualizzare le risorse distribuite. In questo caso è stata distribuita una rete virtuale (spazio indirizzi 10.0.0.0/16) con due subnet.
Lasciare aperta la pagina nel browser in modo da poter controllare di nuovo le distribuzioni in un secondo momento.
Modificare il modello
Nel file azuredeploy.json in Visual Studio Code eliminare il tag denominato
Owner
e il relativo valore. Al termine, la proprietàtags
della rete virtuale dovrebbe essere simile alla seguente:"tags": { "CostCenter": "12345" },
Aggiornare
addressPrefixes
per sostituire/16
con/15
. Al termine, la proprietàaddressSpace
della rete virtuale dovrebbe essere simile alla seguente:"addressSpace": { "addressPrefixes": [ "10.0.0.0/15" ] },
Eliminare la subnet denominata
subnet001
. Assicurarsi di eliminare l'intero oggetto subnet. Al termine, la proprietàsubnets
della rete virtuale dovrebbe essere simile alla seguente:"subnets": [ { "name": "subnet002", "properties": { "addressPrefix": "10.0.1.0/24" } } ]
Scegliere Salva per salvare il modello.
Nel file main.bicep in Visual Studio Code eliminare il tag denominato
Owner
e il relativo valore. Al termine, la proprietàtags
della rete virtuale dovrebbe essere simile alla seguente:tags: { 'CostCenter': '12345' }
Aggiornare
addressPrefixes
per sostituire/16
con/15
. Al termine, la proprietàaddressSpace
della rete virtuale dovrebbe essere simile alla seguente:addressSpace: { addressPrefixes: [ '10.0.0.0/15' ] }
Eliminare la subnet denominata
subnet001
. Assicurarsi di eliminare l'intero oggetto subnet. Al termine, la proprietàsubnets
della rete virtuale dovrebbe essere simile alla seguente:subnets: [ { name: 'subnet002' properties: { addressPrefix: '10.0.1.0/24' } } ]
Scegliere Salva per salvare il modello.
Eseguire il comando di simulazione con il modello modificato
Eseguire New-AzResourceGroupDeployment
con il flag -WhatIf
per eseguire l'operazione di simulazione.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile main.bicep
Eseguire New-AzResourceGroupDeployment
con il flag -WhatIf
per eseguire l'operazione di simulazione.
New-AzResourceGroupDeployment `
-WhatIf `
-TemplateFile azuredeploy.json
Immettere az deployment group what-if
per eseguire l'operazione di simulazione:
az deployment group what-if \
--template-file main.bicep
Immettere az deployment group what-if
per eseguire l'operazione di simulazione:
az deployment group what-if \
--template-file azuredeploy.json
L'output del comando di simulazione è simile al seguente:
Si noti che il risultato è contraddistinto dal colore, oltre ad avere un prefisso:
- Viola e ~ per le modifiche
- Verde e + per le nuove risorse da creare
- Arancione e - per le eliminazioni
Rimuovere le risorse nel modello
Aggiornare il file azuredeploy.json in Visual Studio Code e rimuovere tutto il contenuto della matrice
resources
. Al termine, il progetto dovrebbe avere questo aspetto:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ ] }
Scegliere Salva per salvare il modello.
Nel file main.bicep in Visual Studio Code eliminare tutto il contenuto del file, ma non il file stesso.
Scegliere Salva per salvare il modello.
Eseguire la distribuzione usando la modalità completa e l'opzione di conferma
Nella procedura seguente si distribuirà un modello vuoto nell'ambiente esistente.
Avviso
L'esecuzione di questa procedura in un ambiente reale rimuoverà tutte le risorse presenti nel cloud. Il codice seguente è interessante come esperimento intellettuale, ma occorre prestare molta attenzione se si usa questa modalità. Usare almeno il flag -Confirm
per poter arrestare questa operazione se non si vogliono le modifiche proposte.
Avviso
L'esecuzione di questa procedura in un ambiente reale rimuoverà tutte le risorse presenti nel cloud. Il codice seguente è interessante come esperimento intellettuale, ma occorre prestare molta attenzione se si usa questa modalità. Usare almeno il flag --confirm-with-what-if
per poter arrestare questa operazione se non si vogliono le modifiche proposte.
Eseguire
New-AzResourceGroupDeployment
con il flag-Mode Complete
per eseguire la distribuzione in modalità completa:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile main.bicep
L'output avrà un aspetto simile al seguente:
Si noti che l'ultima riga dell'output è una conferma. Viene richiesto di selezionare y o n per continuare.
Per [A] Yes to All immettere A per eseguire la distribuzione e pulire l'ambiente.
Eseguire
New-AzResourceGroupDeployment
con il flag-Mode Complete
per eseguire la distribuzione in modalità completa:New-AzResourceGroupDeployment ` -Mode Complete ` -Confirm ` -TemplateFile azuredeploy.json
L'output avrà un aspetto simile al seguente:
Si noti che l'ultima riga dell'output è una conferma. Viene richiesto di selezionare y o n per continuare.
Per [A] Yes to All immettere A per eseguire la distribuzione e pulire l'ambiente.
Eseguire
az deployment group create
con il flag--mode Complete
per creare una distribuzione in modalità completa:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file main.bicep
L'output avrà un aspetto simile al seguente:
Si noti che l'ultima riga dell'output è una conferma. Viene richiesto di selezionare y o n per continuare.
Immettere y (per "yes") per eseguire la distribuzione e pulire l'ambiente.
Eseguire
az deployment group create
con il flag--mode Complete
per creare una distribuzione in modalità completa:az deployment group create \ --mode Complete \ --confirm-with-what-if \ --template-file azuredeploy.json
L'output avrà un aspetto simile al seguente:
Si noti che l'ultima riga dell'output è una conferma. Viene richiesto di selezionare y o n per continuare.
Immettere y (per "yes") per eseguire la distribuzione e pulire l'ambiente.
Verificare la distribuzione
Tornare alla finestra del browser aperta usata in precedenza. Verificare che la rete virtuale non sia più presente, come in questo screenshot: