Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️
I en tidigare självstudiekurs lärde du dig hur du anslöt till en virtuell dator med SSH och installerade NGINX manuellt. Om du vill skapa virtuella datorer på ett snabbt och konsekvent sätt, kan det vara användbart med någon form av automatisering. Ett vanligt sätt att anpassa en virtuell dator första gången den startar är att använda cloud-init. I den här självstudiekursen får du lära du dig att:
- Skapa en cloud-init-konfigurationsfil
- Skapa en virtuell dator som använder en cloud-init-fil
- Visa en Node.js-app som körs efter att den virtuella datorn skapats
- Använda Key Vault för att förvara certifikat säkert
- Automatisera säker distribution av NGINX med cloud-init
Om du väljer att installera och använda CLI:t lokalt för den här självstudien måste du köra Azure CLI version 2.0.30 eller senare. Kör az --version
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.
Översikt över Cloud-init
Cloud-init är ett vanligt sätt att anpassa en virtuell Linux-dator när den startas för första gången. Du kan använda cloud-init till att installera paket och skriva filer eller för att konfigurera användare och säkerhet. Eftersom cloud-init körs under hela den ursprungliga startprocessen finns det inga fler steg eller obligatoriska agenter att tillämpa för konfigurationen.
Cloud-init fungerar med olika distributioner. Du använder till exempel inte apt-get install eller yum install när du vill installera ett paket. I stället definierar du en lista med paket att installera. Cloud-init använder automatiskt rätt pakethanteringsverktyg för den distribution du valt.
Vi arbetar med våra partners och försöker göra så att cloud-init inkluderas och fungerar i de avbildningar de tillhandahåller till Azure. Detaljerad information om stöd för cloud-init för varje distribution finns i Cloud-init-stöd för virtuella datorer i Azure.
Skapa en cloud-init-konfigurationsfil
Om du vill se hur cloud-init fungerar i praktiken skapar du en virtuell dator som installerar NGINX och kör en enkel ”Hello World” Node.js-app. Följande cloud-init-konfiguration installerar de paket som krävs, skapar en Node.js app och initierar och startar sedan appen.
I bash-prompten eller i Cloud Shell skapar du en fil med namnet cloud-init.txt och klistrar in följande konfiguration. Skriv till exempel sensible-editor cloud-init.txt
för att skapa filen och se en lista över tillgängliga redigerare. Se till att hela cloud-init-filen kopieras korrekt, särskilt den första raden:
#cloud-config
package_upgrade: true
packages:
- nginx
- nodejs
- npm
write_files:
- owner: www-data:www-data
path: /etc/nginx/sites-available/default
defer: true
content: |
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection keep-alive;
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
- owner: azureuser:azureuser
path: /home/azureuser/myapp/index.js
defer: true
content: |
var express = require('express')
var app = express()
var os = require('os');
app.get('/', function (req, res) {
res.send('Hello World from host ' + os.hostname() + '!')
})
app.listen(3000, function () {
console.log('Hello world app listening on port 3000!')
})
runcmd:
- service nginx restart
- cd "/home/azureuser/myapp"
- npm init
- npm install express -y
- nodejs index.js
Mer information om konfigurationsalternativ för cloud-init finns i konfigurationsexempel för cloud-init.
Skapa en virtuell dator
Innan du kan skapa en virtuell dator skapar du en resursgrupp med az group create. I följande exempel skapas en resursgrupp. I dessa kommandon läggs ett slumpmässigt suffix till i resursgruppen och VM-namnen för att förhindra namnkollisioner under upprepade distributioner.
export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroupAutomate$RANDOM_SUFFIX"
export REGION="eastus2"
az group create --name $RESOURCE_GROUP --location $REGION
Resultat:
{
"id": "/subscriptions/xxxxx-xxxxx-xxxxx-xxxxx/resourceGroups/myResourceGroupAutomatexxx",
"location": "eastus",
"managedBy": null,
"name": "myResourceGroupAutomatexxx",
"properties": {
"provisioningState": "Succeeded"
},
"tags": null,
"type": "Microsoft.Resources/resourceGroups"
}
Skapa nu en virtuell dator med az vm create. Använd parametern --custom-data
för att skicka in din cloud-init-konfigurationsfil. Ange den fullständiga sökvägen till cloud-init.txt om du sparat filen utanför din aktuella arbetskatalog. I följande exempel skapas en virtuell dator. Observera att namnet på den virtuella datorn också läggs till med det slumpmässiga suffixet.
export VM_NAME="myAutomatedVM$RANDOM_SUFFIX"
az vm create \
--resource-group $RESOURCE_GROUP \
--name $VM_NAME \
--image Ubuntu2204 \
--admin-username azureuser \
--generate-ssh-keys \
--custom-data cloud-init.txt
Resultat:
{
"fqdns": "",
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupAutomatexxx/providers/Microsoft.Compute/virtualMachines/myAutomatedVMxxx",
"location": "eastus",
"name": "myAutomatedVMxxx",
"powerState": "VM running",
"publicIpAddress": "x.x.x.x",
"resourceGroup": "myResourceGroupAutomatexxx",
"zones": ""
}
Det tar några minuter innan den virtuella datorn skapas, paketen installeras och appen startar. Det finns bakgrundsaktiviteter som fortsätter att köras när Azure CLI återgår till kommandotolken. Det kan ta några minuter innan du kan öppna programmet. När den virtuella datorn har skapats ska du anteckna publicIpAddress
som visas av Azure CLI. Adressen används för att komma åt Node.js i en webbläsare.
För att låta webbtrafik nå din virtuella dator öppnar du port 80 från Internet med az vm open-port:
az vm open-port --port 80 --resource-group $RESOURCE_GROUP --name $VM_NAME
Resultat:
{
"endpoints": [
{
"name": "80",
"protocol": "tcp",
"publicPort": 80,
"privatePort": 80
}
],
"id": "/subscriptions/xxxxx/resourceGroups/myResourceGroupAutomatexxx/providers/Microsoft.Compute/virtualMachines/myAutomatedVMxxx",
"location": "eastus",
"name": "myAutomatedVMxxx"
}
Testa webbappen
Nu kan du öppna en webbläsare och ange den offentliga IP-adressen i adressfältet. Ange din offentliga IP-adress från skapandeprocessen av den virtuella datorn. Din Node.js-app visas som den visas i det här exemplet:
Nästa steg
I den här självstudien använde du cloud-init för att konfigurera virtuella datorer vid första start. Du har lärt dig att:
- Skapa en cloud-init-konfigurationsfil
- Skapa en virtuell dator som använder en cloud-init-fil
- Visa en Node.js-app som körs efter att den virtuella datorn skapats
- Använda Key Vault för att förvara certifikat säkert
- Automatisera säker distribution av NGINX med cloud-init
Gå vidare till nästa självstudie där du får lära dig att skapa anpassade avbildningar för virtuella datorer.