Condividi tramite


Usare cloud-init per eseguire uno script Bash in una macchina virtuale Linux in Azure

Si applica a: ✔️ macchine virtuali di Linux ✔️ set di scalabilità flessibili

Questo articolo descrive come usare cloud-init per eseguire uno script Bash esistente in una macchina virtuale o 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

Eseguire uno script Bash con cloud-init

Con cloud-init non è necessario convertire gli script esistenti in cloud-config, in quanto cloud-init accetta più tipi di input, tra cui uno script Bash.

Se è stata usata l'estensione di Azure di script personalizzati di Linux per eseguire gli script, è possibile eseguire la migrazione degli script in modo da usare cloud-init. Tuttavia, poiché le estensioni di Azure hanno report integrati per avvisare degli errori degli script, una distribuzione di immagini cloud-init NON ha esito negativo se lo script non riesce.

Per visualizzare questa funzionalità in azione, creare un semplice script Bash per i test. Come il file cloud-init #cloud-config, questo script deve essere locale rispetto alla posizione in cui verranno eseguiti i comandi AzureCLI per il provisioning della macchina virtuale. Per questo esempio, creare il file in Cloud Shell anziché nel computer locale. È possibile usare qualsiasi editor. Assicurarsi che l'intero file cloud-init venga copiato correttamente, in particolare la prima riga.

#!/bin/sh
echo "this has been written via cloud-init" + $(date) >> /tmp/myScript.txt

Prima di distribuire l'immagine, è 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 script Bash con --custom-data simple_bash.sh in questo modo:

az vm create \
  --resource-group myResourceGroup \
  --name vmName \
  --image imageCIURN \
  --custom-data simple_bash.sh \
  --generate-ssh-keys

Nota

Sostituire i valori myResourceGroup, vmNamee imageCIURN di conseguenza. Assicurarsi che sia selezionata un'immagine con Cloud-init.

Verificare che lo script Bash sia stato eseguito

Stabilire una connessione SSH all'indirizzo IP pubblico della VM visualizzata nell'output del comando precedente. Immettere il proprio utente e publicIpAddress come indicato di seguito:

ssh <user>@<publicIpAddress>

Verificare che /tmp/myScript.txt il file esista e che al suo interno sia presente il testo appropriato.

sudo cat /tmp/myScript

In caso contrario, è possibile verificare la /var/log/cloud-init.log presenza di altri dettagli. Cercare la voce seguente:

sudo cat /var/log/cloud-init.log
Running config-scripts-user using lock Running command ['/var/lib/cloud/instance/scripts/part-001']

Passaggi successivi

Per altri esempi cloud-init di modifiche di configurazione, vedere i documenti seguenti: