Delen via


Cloud-init gebruiken om een bash-script uit te voeren op een Linux-VM in Azure

Van toepassing op: ✔️ Flexibele schaalsets voor Linux-VM's ✔️

In dit artikel leest u hoe u cloud-init gebruikt om een bestaand bash-script uit te voeren op een virtuele Linux-machine (VM) of virtuele-machineschaalsets (VMSS) tijdens het inrichten in Azure. Deze cloud-init-scripts worden uitgevoerd bij de eerste keer opstarten zodra de resources zijn ingericht door Azure. Zie het overzicht van cloud-init voor meer informatie over hoe cloud-init systeemeigen werkt in Azure en de ondersteunde Linux-distributies

Een bash-script uitvoeren met cloud-init

Met cloud-init hoeft u uw bestaande scripts niet te converteren naar een cloudconfiguratie, accepteert cloud-init meerdere invoertypen, een van de volgende is een bash-script.

Als u de Azure-extensie voor aangepaste Linux-scripts hebt gebruikt om uw scripts uit te voeren, kunt u deze migreren om cloud-init te gebruiken. Azure-extensies hebben echter geïntegreerde rapportage om te waarschuwen voor scriptfouten. Een implementatie van een cloud-init-installatiekopie mislukt echter niet als het script mislukt.

Als u deze functionaliteit in actie wilt zien, maakt u een eenvoudig bash-script voor testen. Net als bij het cloud-init-bestand #cloud-config moet dit script lokaal zijn waar u de AzureCLI-opdrachten uitvoert om uw virtuele machine in te richten. Maak voor dit voorbeeld het bestand in Cloud Shell niet op uw lokale computer. U kunt elke editor die u wilt gebruiken. Zorg ervoor dat het hele cloud-init-bestand correct is gekopieerd, met name de eerste regel.

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

Voordat u deze image implementeert, moet u met de opdracht az group create een resourcegroep maken. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt in de regio eastus.

az group create --name myResourceGroup --location eastus

Maak nu een virtuele machine met az vm create en geef het bash-scriptbestand --custom-data simple_bash.sh als volgt op:

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

Opmerking

Vervang de waarden myResourceGroup, vmName en imageCIURN dienovereenkomstig. Zorg ervoor dat een afbeelding met Cloud-init is gekozen.

Controleren of het bash-script is uitgevoerd

SSH naar het openbare IP-adres van uw VM zoals getoond in de uitvoer van het voorgaande commando. Voer als volgt uw eigen gebruiker en publicIpAddress in:

ssh <user>@<publicIpAddress>

Controleer of het /tmp/myScript.txt bestand bestaat en de juiste tekst bevat.

sudo cat /tmp/myScript

Als dat niet het geval is, kunt u de /var/log/cloud-init.log raadplegen voor meer details. Zoek naar de volgende vermelding:

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

Volgende stappen

Zie het volgende voor aanvullende cloud-init-voorbeelden van configuratiewijzigingen: