Esercizio - Controllare l'ordine di distribuzione delle risorse
In questa parte si inizia eseguendo alcune attività di configurazione di base. In Visual Studio Code si connette una sessione di terminale alla sottoscrizione di Azure disponibile con l'ambiente sandbox di Azure gratuito. Questa operazione consente di autenticare i comandi in Azure.
Quindi, eseguire un modello di ARM di base che effettua il provisioning di una macchina virtuale (VM) Linux. Al termine della distribuzione verificare che la VM sia in esecuzione e collegabile.
Anche se l'uso delle macchine virtuali è un'attività comune, si scopre che una risorsa della VM richiede componenti di rete e di archiviazione che devono già esistere per poter creare la VM. Viene illustrato in che modo il costrutto dependsOn
consente di impostare l'ordine in cui viene eseguito il provisioning delle risorse.
Attrezzaggio
Aprire Visual Studio Code, creare una sessione di PowerShell ed eseguire la connessione alla sottoscrizione di Azure disponibile con l'ambiente sandbox di Azure gratuito.
È necessario eseguire queste attività di configurazione una volta durante questo modulo. È possibile fare riferimento a questi passaggi se si esegue la disconnessione o si viene disconnessi in un esercizio successivo.
Aprire PowerShell in Visual Studio Code
Aprire Visual Studio Code.
Aprire una finestra del terminale usando il menu Terminale.
Se nel menu a discesa a destra della finestra del terminale viene visualizzato pwsh, la shell è corretta ed è possibile passare alla sezione successiva.
In caso contrario, fare clic sull'elenco a discesa e scegliere Seleziona shell predefinita.
Selezionare pwsh.
Selezionare + nel terminale per creare un nuovo terminale con pwsh come shell.
Accedere ad Azure
Eseguire
Connect-AzAccount
per accedere al proprio account.Connect-AzAccount
Verrà visualizzata una finestra del browser.
Selezionare l'account usato per attivare la sandbox e chiudere la finestra del browser quando richiesto.
Impostare la sottoscrizione attiva
Eseguire
Get-AzSubscription
per ottenere l'ID sottoscrizione per l'ambiente sandbox.Get-AzSubscription
Cercare
Concierge Subscription
e copiare la seconda colonna. Sarà simile a cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.Eseguire
Set-AzContext
per modificare la sottoscrizione attiva impostandola sulla sottoscrizione Concierge.Nota
Assicurarsi di sostituire {Your subscription ID} con l'ID della sottoscrizione Concierge ottenuto con il comando precedente.
$subscription = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $subscription
Impostare il gruppo di risorse predefinito
In genere, quando si esegue un comando dell'interfaccia della riga di comando di Azure è necessario specificare un gruppo di risorse.
L'ambiente sandbox mette a disposizione un gruppo di risorse predefinito. Per semplificare l'esecuzione dei comandi dell'interfaccia della riga di comando di Azure, impostare il gruppo di risorse predefinito.
Eseguire il cmdlet Set-AzDefault
per impostare il gruppo di risorse predefinito.
Set-AzDefault -ResourceGroupName <rgn>resource group name</rgn>
Nota
In genere, quando si usa PowerShell per distribuire una risorsa in Azure, è necessario specificare un gruppo di risorse. Per ignorare questo requisito, impostare il contesto della distribuzione usando Set-AzDefault
.
Contenuto di una tipica distribuzione di VM
Quando si distribuisce una macchina virtuale, tenere presente che è necessario distribuire anche alcune risorse per consentire il funzionamento della macchina virtuale.
Di seguito è riportato un breve riepilogo dei tipi di risorse che in genere devono essere distribuiti insieme a una VM:
- Microsoft.Storage/storageAccounts. Un account di archiviazione offre lo spazio su disco per il sistema operativo e i file.
- Microsoft.Network/publicIPAddresses. Un indirizzo IP pubblico consente di connettersi alla VM da Internet.
- Microsoft.Network/networkSecurityGroups. Un gruppo di sicurezza di rete contiene le regole per la gestione del traffico in ingresso e in uscita verso la rete virtuale.
- Microsoft.Network/virtualNetworks. La VM deve essere posizionata in una rete virtuale. Questa risorsa richiede che venga prima distribuito il gruppo di sicurezza di rete.
- Microsoft.Network/networkInterfaces. Questa risorsa dipende da altre due risorse: l'indirizzo IP pubblico e la rete virtuale.
- Microsoft.Compute/virtualMachines. La macchina virtuale è la risorsa principale da distribuire. Dipende da due risorse diverse: l'account di archiviazione e le interfacce di rete.
Distribuire una macchina virtuale Linux
Qui è possibile scaricare un modello di ARM da un repository GitHub disponibile per l'utente. Il modello esegue il provisioning di una macchina virtuale Linux e di tutte le risorse necessarie per eseguirla.
Eseguire il seguente comando
curl
per scaricare il modello di ARM:curl -O 'https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json'
Eseguire il cmdlet
ConvertTo-SecureString
e assegnare i risultati a una variabile di PowerShell denominata$secure
:$secure = "insecurepassword123!" | ConvertTo-SecureString -AsPlainText -Force
A questo punto è disponibile una versione crittografata della password che successivamente si può passare allo script di distribuzione.
Eseguire il comando
New-AzResourceGroupDeployment
per distribuire il modello:New-AzResourceGroupDeployment ` -TemplateFile "./azuredeploy.json" ` -adminUsername "azureuser" ` -vmName "vm1" ` -adminPasswordOrKey $secure
L'esecuzione del comando può richiedere alcuni minuti. Durante l'esecuzione del comando è possibile esaminare il modello di ARM in una scheda separata del browser.
Prendere nota delle dipendenze delle risorse cercando la chiave
dependsOn
. Ad esempio, la risorsa della macchina virtuale dipende dall'interfaccia di rete:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verificare la distribuzione
Verificare che la macchina virtuale sia stata sottoposta a provisioning e sia collegabile via SSH. A questo scopo:
Eseguire il comando
Invoke-Expression
per effettuare la connessione alla VM via SSH:Invoke-Expression (Get-AzResourceGroupDeployment -Name azuredeploy -ResourceGroupName <rgn>your resource group</rgn>).outputs.sshCommand.value
Quando richiesto, immettere
yes
per continuare la connessione. Quindi, immettere di nuovo la password di amministratore.insecurepassword123!
Importante
Nella pratica le password vanno protette. È anche possibile usare l'autenticazione con chiave pubblica, che in genere è più sicura rispetto all'uso delle password.
Dalla connessione SSH alla VM eseguire
hostname
per stampare il nome host della VM:hostname
Viene visualizzato il nome host interno della macchina virtuale,
vm1
:vm1
Eseguire
exit
per lasciare la sessione SSH.exit
La distribuzione di una VM Linux usando un modello di ARM è stata completata. Una VM è un tipo di risorsa comune che include risorse dipendenti.
Attrezzaggio
Aprire Visual Studio Code, creare una sessione di terminale ed eseguire la connessione alla sottoscrizione di Azure disponibile con l'ambiente sandbox di Azure gratuito.
È necessario eseguire queste attività di configurazione una volta durante questo modulo. È possibile fare riferimento a questi passaggi se si esegue la disconnessione o si viene disconnessi in un esercizio successivo.
Aprire una shell in Visual Studio Code
Aprire Visual Studio Code.
Aprire una finestra del terminale usando il menu Terminale.
Se il menu a discesa visualizza la shell preferita, ad esempio bash o zsh, passare alla sezione successiva.
In caso contrario, fare clic sull'elenco a discesa e scegliere Seleziona shell predefinita.
Selezionare il tipo di shell che si vuole usare.
Selezionare + nel terminale per creare un nuovo terminale con il tipo di shell selezionato.
Accedere ad Azure
Dal terminale eseguire
az login
:az login
Verrà visualizzata una finestra del browser.
Selezionare l'account usato per attivare la sandbox e chiudere la finestra del browser quando richiesto.
Impostare la sottoscrizione attiva
Eseguire il seguente comando az account set
per impostare l'ambiente sandbox di Azure come sottoscrizione attiva:
az account set -s "Concierge Subscription"
Nota
Se il comando non riesce, eseguire az account list --refresh --all
e quindi eseguire di nuovo il comando az account set
.
Impostare il gruppo di risorse predefinito
In genere, quando si esegue un comando dell'interfaccia della riga di comando di Azure è necessario specificare un gruppo di risorse.
L'ambiente sandbox mette a disposizione un gruppo di risorse predefinito. Per semplificare l'esecuzione dei comandi dell'interfaccia della riga di comando di Azure, impostare il gruppo di risorse predefinito.
Eseguire il seguente comando az configure
per impostare il gruppo di risorse predefinito:
az configure --defaults group=<rgn>resource group name</rgn>
Contenuto di una tipica distribuzione di VM
Quando si distribuisce una macchina virtuale, tenere presente che è necessario distribuire anche alcune risorse per consentire il funzionamento della macchina virtuale.
Di seguito è riportato un breve riepilogo dei tipi di risorse che in genere devono essere distribuiti insieme a una VM:
- Microsoft.Storage/storageAccounts. Un account di archiviazione offre lo spazio su disco per il sistema operativo e i file.
- Microsoft.Network/publicIPAddresses. Un indirizzo IP pubblico consente di connettersi alla VM da Internet.
- Microsoft.Network/networkSecurityGroups. Un gruppo di sicurezza di rete contiene le regole per la gestione del traffico in ingresso e in uscita verso la rete virtuale.
- Microsoft.Network/virtualNetworks. La VM deve essere posizionata in una rete virtuale. Questa risorsa richiede che venga prima distribuito il gruppo di sicurezza di rete.
- Microsoft.Network/networkInterfaces. Questa risorsa dipende da altre due risorse: l'indirizzo IP pubblico e la rete virtuale.
- Microsoft.Compute/virtualMachines. La macchina virtuale è la risorsa principale da distribuire. Dipende da due risorse diverse: l'account di archiviazione e le interfacce di rete.
Distribuire una macchina virtuale Linux
Qui è possibile scaricare un modello di Azure Resource Manager (ARM) da un repository GitHub disponibile per l'utente. Il modello esegue il provisioning di una macchina virtuale Linux e di tutte le risorse necessarie per eseguirla.
Eseguire il seguente comando
wget
per scaricare il modello di ARM:wget https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json
Se
wget
non è installato, è possibile eseguire questo comandocurl
:curl https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/vm-simple-linux/azuredeploy.json > azuredeploy.json
Eseguire il comando
az deployment group create
per distribuire il modello:az deployment group create \ --template-file azuredeploy.json \ --parameters adminUsername=azureuser vmName=vm1 adminPasswordOrKey='insecurepassword123!'
L'esecuzione del comando può richiedere alcuni minuti. Durante l'esecuzione del comando è possibile esaminare il modello di ARM in una scheda separata del browser.
Prendere nota delle dipendenze delle risorse cercando la chiave
dependsOn
. Ad esempio, la risorsa della macchina virtuale dipende dall'interfaccia di rete:"type": "Microsoft.Compute/virtualMachines", "apiVersion": "2020-06-01", "name": "[parameters('vmName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Network/networkInterfaces/', variables('networkInterfaceName'))]" ],
Verificare la distribuzione
Verificare che la macchina virtuale sia stata sottoposta a provisioning e sia collegabile via SSH. A questo scopo:
Eseguire il seguente comando
az deployment group list
per elencare i gruppi di distribuzione della sottoscrizione:az deployment group list --output table
Viene visualizzato un gruppo di distribuzione, denominato azuredeploy:
Name ResourceGroup State Timestamp Mode ----------- ------------------------------------------ --------- -------------------------------- ----------- azuredeploy learn-1ef901aa-3f6a-46aa-8e93-a7f11e5192b8 Succeeded 2020-11-24T17:55:39.762517+00:00 Incremental
Eseguire il seguente comando
az deployment group show
per visualizzare il comando SSH da usare per la connessione alla VM:az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv
Il modello di ARM definisce questa proprietà nella sezione
output
. Ecco un esempio:ssh azureuser@simplelinuxvm-a33zb3sc332ue.westus.cloudapp.azure.com
Eseguire di nuovo il comando, questa volta usando la sintassi
$()
per eseguire il comando SSH:$(az deployment group show \ --name azuredeploy \ --query properties.outputs.sshCommand.value \ --output tsv)
Quando richiesto, immettere
yes
per continuare la connessione. Quindi, immettere di nuovo la password di amministratore.insecurepassword123!
Importante
Nella pratica le password vanno protette. È anche possibile usare l'autenticazione con chiave pubblica, che in genere è più sicura rispetto all'uso delle password.
Dalla connessione SSH alla VM eseguire
hostname
per stampare il nome host della VM:hostname
Viene visualizzato il nome host interno della macchina virtuale,
vm1
:vm1
Eseguire
exit
per lasciare la sessione SSH.exit
La distribuzione di una VM Linux usando un modello di ARM è stata completata. Una VM è un tipo di risorsa comune che include risorse dipendenti.