Usare cloud-init per aggiornare e installare i pacchetti in una macchina virtuale Linux in Azure
Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili
Questo articolo illustra come usare cloud-init per aggiornare i pacchetti in una macchina virtuale o in un set di scalabilità di macchine virtuali Linux in fase di provisioning in Azure. Questi script cloud-init vengono eseguiti al primo avvio dopo il provisioning delle risorse da parte di Azure. Per altre informazioni sul funzionamento di cloud-init in modo nativo in Azure e sulle distribuzioni Linux supportate, vedere la panoramica di cloud-init
Aggiornare una macchina virtuale con cloud init
Per motivi di sicurezza, potrebbe essere necessario configurare una VM per applicare gli aggiornamenti più recenti al primo avvio. Poiché cloud-init funziona in distribuzioni Linux diverse, non è necessario specificare apt
, zypper
o yum
per la gestione pacchetti. È invece necessario definire package_upgrade
e consentire al processo cloud-init di determinare il meccanismo appropriato per la distribuzione in uso.
Per questo esempio viene usato Azure Cloud Shell. Per vedere il funzionamento del processo di aggiornamento, creare un file denominato cloud_init_upgrade.txt e incollare la configurazione seguente. È possibile usare qualsiasi editor. Assicurarsi che l'intero file cloud-init venga copiato correttamente, in particolare la prima riga.
Copiare il testo seguente e incollarlo nel file cloud_init_upgrade.txt
. Assicurarsi che l'intero file cloud-init venga copiato correttamente, in particolare la prima riga.
#cloud-config
package_upgrade: true
packages:
- httpd
Prima della distribuzione, è necessario creare un gruppo di risorse con il comando az group create. Un gruppo di risorse di Azure è un contenitore logico in cui le risorse di Azure vengono distribuite e gestite. L'esempio seguente crea un gruppo di risorse denominato myResourceGroup nella località stati uniti orientali.
az group create --name myResourceGroup --location eastus
Creare ora una macchina virtuale con az vm create e specificare il file cloud-init con il parametro --custom-data
come segue:
az vm create \
--resource-group myResourceGroup \
--name vmName \
--image imageCIURN \
--custom-data cloud_init_upgrade.txt \
--admin-username azureuser \
--generate-ssh-keys
Nota
Sostituire i valori myResourceGroup, vmNamee imageCIURN di conseguenza. Assicurarsi che sia selezionata un'immagine con Cloud-init.
Stabilire una connessione SSH all'indirizzo IP pubblico della VM visualizzata nell'output del comando precedente. Immettere il propri valori utente e publicIpAddress in questo modo:
ssh <user>@<publicIpAddress>
Eseguire lo strumento di gestione pacchetti e cercare gli aggiornamenti:
- Eseguire il comando seguente per verificare che non siano presenti aggiornamenti in sospeso
sudo yum check-update
Poiché cloud-init ha cercato e installato gli aggiornamenti all'avvio, non dovrebbero essere presenti altri aggiornamenti da applicare.
- È possibile visualizzare il processo di aggiornamento, il numero di pacchetti modificati e l'installazione di
httpd
eseguendo il comando seguente ed esaminare l'output.
sudo yum history
ID | Command line | Date and time | Action(s) | Altered
--------------------------------------------------------------------------------------------------
3 | -y install httpd | 2022-02-18 18:30 | Install | 7
2 | -y upgrade | 2022-02-18 18:23 | I, O, U | 321 EE
1 | | 2021-02-04 19:20 | Install | 496 EE
Passaggi successivi
Per altri esempi cloud-init di modifiche di configurazione, vedere i documenti seguenti: