Zelfstudie: Toepassingen installeren in virtuele-machineschaalsets met de Azure CLI

Als u toepassingen wilt uitvoeren op de exemplaren van een virtuele machine (VM) in een schaalset, moet u eerst de toepassingsonderdelen en de vereiste bestanden installeren. In een vorige zelfstudie hebt u geleerd om een aangepaste VM-installatiekopie te maken en te gebruiken voor het implementeren van uw VM-exemplaren. Deze aangepaste installatiekopie bevat handmatige installaties van toepassingen en configuraties. U kunt de installatie van toepassingen op een schaalset ook automatiseren nadat elk VM-exemplaar is geïmplementeerd. Bovendien kunt u toepassingen bijwerken die al worden uitgevoerd in een schaalset. In deze zelfstudie leert u het volgende:

  • Automatisch toepassingen installeren in een schaalset
  • De aangepaste scriptextensie van Azure gebruiken
  • Een actieve toepassing in een schaalset bijwerken

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Vereisten

  • Voor dit artikel is versie 2.0.29 of hoger van Azure CLI vereist. Als u Azure Cloud Shell gebruikt, is de nieuwste versie al geïnstalleerd.

Wat is de aangepaste scriptextensie van Azure?

Met de aangepaste scriptextensie kunnen scripts worden gedownload en uitgevoerd op virtuele machines in Azure. Deze uitbreiding is handig voor post-implementatieconfiguraties, software-installaties of andere configuratie-/beheertaken. Scripts kunnen worden gedownload uit Azure Storage of GitHub, of worden geleverd in Azure Portal tijdens de uitvoering van extensies.

De aangepaste scriptextensie kan worden geïntegreerd met Azure Resource Manager-sjablonen en ook worden uitgevoerd met Azure CLI, Azure PowerShell, de Azure-portal of de REST API. Zie voor meer informatie het overzicht van de aangepaste scriptextensie.

Als u de aangepaste scriptextensie wilt gebruiken met de Azure CLI, moet u een JSON-bestand maken met daarin de bestanden die u wilt verkrijgen en de opdrachten die u wilt uitvoeren. Deze JSON-definities kunnen worden hergebruikt binnen implementaties van schaalsets om zo toepassingen op een consistente manier te installeren.

Definitie van de aangepaste scriptextensie maken

Als u de aangepaste scriptextensie in actie wilt zien, maakt u een schaalset die de IIS-webserver installeert en de hostnaam levert van het VM-exemplaar in de schaalset. Met de volgende definitie van de aangepaste scriptextensie wordt er een voorbeeldscript gedownload vanuit GitHub, waarna de vereiste pakketten worden geïnstalleerd en de hostnaam van het VM-exemplaar wordt weggeschreven naar een standaard-HTML-pagina.

Maak in uw huidige shell een bestand met de naam customConfig.json en plak de volgende configuratie in het bestand. Maak bijvoorbeeld het bestand in de Cloud Shell, niet op uw lokale computer. U kunt elke editor die u wilt gebruiken. In deze zelfstudie gebruiken we Vi. Voervi in Cloud Shell in. Plak de onderstaande JSON in de editor en typ :w customConfig.json.

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx.sh"],
  "commandToExecute": './automate_nginx.sh'
}

Notitie

Mogelijk moet u het gebruik van enkele (') en dubbele aanhalingstekens (") in het JSON-blok omkeren als u besluit om rechtstreeks naar de JSON te verwijzen (in plaats van te verwijzen naar het bestand customConfig.json) in de parameter --Instellingen hieronder.

Een schaalset maken

Belangrijk

Vanaf november 2023 worden VM-schaalsets die zijn gemaakt met PowerShell en Azure CLI standaard ingesteld op de flexibele indelingsmodus als er geen indelingsmodus is opgegeven. Voor meer informatie over deze wijziging en welke acties u moet ondernemen, gaat u naar Belangrijke wijziging voor VMSS PowerShell/CLI-klanten - Microsoft Community Hub

Maak een resourcegroep maken met az group create. In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie eastus:

az group create --name myResourceGroup --location eastus

Maak nu een virtuele-machineschaalset met az vmss create. Het volgende voorbeeld wordt een schaalset gemaakt met de naam myScaleSet, en worden SSH-sleutels gegenereerd als deze nog niet bestaan:

az vmss create \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --image Ubuntu2204 \
  --orchestration-mode Flexible \
  --admin-username azureuser \
  --generate-ssh-keys

Het duurt enkele minuten om alle schaalsetresources en VM's te maken en te configureren.

Aangepaste scriptextensie toepassen

Pas de configuratie van de aangepaste scriptextensie toe op de VM-exemplaren in uw schaalset met az vmss extension set. In het volgende voorbeeld wordt de configuratie customConfig.json toegepast op de VM-exemplaren myScaleSet in de resourcegroep met de naam myResourceGroup:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings customConfig.json

Elk VM-exemplaar in de schaalset downloadt het script vanuit GitHub en voert het uit. In een meer complex voorbeeld kunnen meerdere toepassingsonderdelen en bestanden worden geïnstalleerd. Als de schaalset omhoog wordt geschaald, passen de VM-exemplaren automatisch dezelfde definitie van de aangepaste scriptextensie toe en installeren deze de vereiste toepassing.

Let op

Bestandsnamen zijn hoofdlettergevoelig. Gebruik de exacte bestandsnaam die in deze instructies wordt vermeld om fouten te voorkomen.

Uw schaalset testen

Als u wilt dat verkeer de webserver kan bereiken, maakt u een load balancer-regel met behulp van az network lb rule create. In het volgende voorbeeld wordt een regel met de naam myLoadBalancerRuleWeb gemaakt:

az network lb rule create \
  --resource-group myResourceGroup \
  --name myLoadBalancerRuleWeb \
  --lb-name myScaleSetLB \
  --backend-pool-name myScaleSetLBBEPool \
  --backend-port 80 \
  --frontend-ip-name loadBalancerFrontEnd \
  --frontend-port 80 \
  --protocol tcp

Als u de webserver in actie wilt zien, achterhaalt u het openbare IP-adres van de load balancer met az network public-ip show. In het volgende voorbeeld wordt het IP-adres voor myScaleSetLBPublicIP opgehaald, dat is gemaakt als onderdeel van de schaalset:

az network public-ip show \
  --resource-group myResourceGroup \
  --name myScaleSetLBPublicIP \
  --query [ipAddress] \
  --output tsv

Voer in een webbrowser het openbare IP-adres van de load balancer in. Via de load balancer wordt verkeer naar een van uw VM-instanties gedistribueerd, zoals wordt weergegeven in het volgende voorbeeld:

Basic web page in Nginx

Sluit de webbrowser niet af, zodat u in de volgende stap een bijgewerkte versie ziet.

App-implementatie bijwerken

Tijdens de levenscyclus van een schaalset moet u mogelijk een bijgewerkte versie van uw toepassing implementeren. U kunt met de aangepaste scriptextensie verwijzen naar een bijgewerkt implementatiescript en vervolgens de extensie opnieuw op uw schaalset toepassen. Bij het maken van de schaalset in een vorige stap is --upgrade-policy-mode ingesteld op Automatic. Met deze instelling kunnen de VM-exemplaren in de schaalset automatisch de meest recente versie van uw toepassing bijwerken en toepassen.

Maak in uw huidige shell een bestand met de naam customConfigv2.json en plak de volgende configuratie in het bestand. Deze definitie voert een bijgewerkte versie v2 van het installatiescript van de toepassing uit:

{
  "fileUris": ["https://raw.githubusercontent.com/Azure-Samples/compute-automation-configurations/master/automate_nginx_v2.sh"],
  "commandToExecute": "./automate_nginx_v2.sh"
}

Pas de configuratie van de aangepaste scriptextensie opnieuw toe op de VM-exemplaren in uw schaalset met az vmss extension set. customConfigv2.json wordt gebruikt voor het toepassen van de bijgewerkte versie van de toepassing:

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings @customConfigv2.json

Alle VM-exemplaren in de schaalset worden automatisch bijgewerkt met de meest recente versie van de voorbeeldwebpagina. Vernieuw de website in uw browser voor een overzicht van de bijgewerkte versie:

Updated web page in Nginx

Resources opschonen

Als u de schaalset en aanvullende resources wilt verwijderen, verwijdert u de resourcegroep en alle bijbehorende resources met az group delete. De parameter --no-wait retourneert het besturingselement naar de prompt zonder te wachten totdat de bewerking is voltooid. De parameter --yes bevestigt dat u de resources wilt verwijderen, zonder een extra prompt om dit te doen.

az group delete --name myResourceGroup --no-wait --yes

Volgende stappen

In deze zelfstudie hebt u geleerd hoe u automatisch toepassingen kunt installeren of bijwerken in uw schaalset met Azure CLI:

  • Automatisch toepassingen installeren in een schaalset
  • De aangepaste scriptextensie van Azure gebruiken
  • Een actieve toepassing in een schaalset bijwerken

Ga door naar de volgende zelfstudie voor informatie over het automatisch schalen van uw schaalset.