cloud-init-stöd för virtuella datorer i Azure

Gäller för: ✔️ Flexibla skalningsuppsättningar för virtuella Linux-datorer ✔️

Den här artikeln beskriver det stöd som finns för cloud-init för att konfigurera en virtuell dator (VM) eller Vm-skalningsuppsättningar vid etableringstid i Azure. Dessa cloud-init-konfigurationer körs vid första starten när resurserna har etablerats av Azure.

Etablering av virtuella datorer är den process där Azure skickar ned parametervärdena skapa den virtuella datorn, till exempel värdnamn, användarnamn och lösenord, och gör dem tillgängliga för den virtuella datorn när den startas. En etableringsagent använder dessa värden, konfigurerar den virtuella datorn och rapporterar tillbaka när den är klar.

Azure stöder två etableringsagenter cloud-init och Azure Linux Agent (WALA).

översikt över cloud-init

cloud-init är en metod som används ofta för 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 anropas under den inledande startprocessen finns det inga ytterligare steg eller nödvändiga agenter för att tillämpa konfigurationen. Mer information om hur du formaterar dina #cloud-config filer eller andra indata på rätt sätt finns på dokumentationswebbplatsen cloud-init. #cloud-config filer är textfiler som kodas i base64.

cloud-init fungerar också mellan 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 det interna pakethanteringsverktyget för den distribution du väljer.

Vi arbetar aktivt med våra godkända Linux-distributionspartner för att ha moln-init-aktiverade avbildningar tillgängliga på Azure Marketplace. Dessa avbildningar gör att dina cloud-init-distributioner och konfigurationer fungerar sömlöst med virtuella datorer och vm-skalningsuppsättningar. Inledningsvis samarbetar vi med de godkända Linux-distributionspartnerna och uppströms för att säkerställa moln-init-funktioner med operativsystemet i Azure, sedan uppdateras paketen och görs offentligt tillgängliga i distributionspaketlagringsplatserna.

Det finns två steg för att göra cloud-init tillgängligt för de Linux-distributioner som stöds i Azure, paketstöd och sedan avbildningsstöd:

  • "cloud-init package support on Azure"-dokument, vilka cloud-init-paket och senare stöds eller i förhandsversion, så att du kan använda dessa paket med operativsystemet i en anpassad avbildning.
  • "image cloud-init ready"-dokument om avbildningen redan har konfigurerats för att använda cloud-init.

Canonical

Utgivare/version Erbjudande SKU Version image cloud-init klar stöd för cloud-init-paket i Azure
Kanonisk 24,04 UbuntuServer 22.04-LTS senaste ja ja
Kanonisk 22.04 UbuntuServer 22.04-LTS senaste ja ja
Kanonisk 20,04 UbuntuServer 20.04-LTS senaste ja ja

RHEL

Utgivare/version Erbjudande SKU Version image cloud-init klar stöd för cloud-init-paket i Azure
RedHat 7 RHEL 7.7, 7.8, 7_9 senaste ja ja
RedHat 8 RHEL 8.1, 8.2, 8_3, 8_4 senaste ja ja
RedHat 9 RHEL 9_0, 9_1 senaste ja ja
  • Alla andra RedHat-SKU:er från RHEL 7 (version 7.7) och RHEL 8 (version 8.1) inklusive både Gen1- och Gen2-avbildningar etableras med hjälp av cloud-init. Cloud-init stöds inte på RHEL 6.

Oracle

Utgivare/version Erbjudande SKU Version image cloud-init klar stöd för cloud-init-paket i Azure
Oracle 7 Oracle Linux 77, 78, ol79 senaste ja ja
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm senaste ja ja
  • Alla andra Oracle-SKU:er från Oracle 7 (version 7.7) och Oracle 8 (version 8.1) inklusive både Gen1- och Gen2-avbildningar etableras med hjälp av cloud-init.

SUSE SLES

Utgivare/version Erbjudande SKU Version image cloud-init klar stöd för cloud-init-paket i Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1, sp2, sp3 senaste ja ja
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 senaste ja ja

Debian

Utgivare/version Erbjudande SKU Version image cloud-init klar stöd för cloud-init-paket i Azure
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.1015 ja ja
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.991 ja ja
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.999 ja ja

För närvarande stöder Azure Stack etablering av moln-init-aktiverade avbildningar.

Vad är skillnaden mellan cloud-init och Linux-agenten (WALA)?

WALA är en Azure-plattformsspecifik agent som används för att etablera och konfigurera virtuella datorer och hantera Azure-tillägg.

Vi förbättrar uppgiften att konfigurera virtuella datorer att använda cloud-init i stället för Linux-agenten för att låta befintliga cloud-init-kunder använda sina aktuella cloud-init-skript eller nya kunder för att dra nytta av de omfattande molninitkonfigurationsfunktionerna. Om du har befintliga investeringar i cloud-init-skript för att konfigurera Linux-system krävs inga ytterligare inställningar för att aktivera cloud-init-processen.

cloud-init kan inte bearbeta Azure-tillägg, så WALA krävs fortfarande i avbildningen för att bearbeta tillägg men måste ha dess etableringskod inaktiverad. För godkända Linux-distributionsavbildningar som konverteras till etablering av cloud-init har de WALA installerat och konfigurerats korrekt.

När du skapar en virtuell dator, om du inte inkluderar Azure CLI-växeln --custom-data vid etableringstidpunkt, tar cloud-init eller WALA de minimala vm-etableringsparametrar som krävs för att etablera den virtuella datorn och slutföra distributionen med standardvärdena. Om du refererar till cloud-init-konfigurationen med växeln --custom-data blir det som finns i dina anpassade data tillgängligt för cloud-init när den virtuella datorn startas.

cloud-init-konfigurationer som tillämpas på virtuella datorer har inte tidsbegränsningar och leder inte till att en distribution misslyckas när tidsgränsen nås. Detta gäller inte för WALA, om du ändrar WALA-standardvärdena för att bearbeta anpassade data kan det inte överskrida den totala tidsersättningen för VM-etablering på 40 minuter. I så fall misslyckas den virtuella datorns skapande.

cloud-init VM-etablering utan UDF-drivrutin

Från och med cloud-init 21.2 kan du använda cloud-init för att etablera en virtuell dator i Azure utan UDF-drivrutin. Om en UDF-drivrutin inte är tillgänglig i avbildningen använder cloud-init de metadata som är tillgängliga i Azure Instance Metadata Service för att etablera den virtuella datorn. Det här alternativet fungerar bara för SSH-nyckel- och användardata. Om du vill skicka ett lösenord eller anpassade data till en virtuell dator under etableringen måste du använda en UDF-drivrutin.

Distribuera en molninit-aktiverad virtuell dator

Att distribuera en moln-init-aktiverad virtuell dator är lika enkelt som att referera till en cloud-init-aktiverad distribution under distributionen. Linux-distributionsunderhållare måste välja att aktivera och integrera cloud-init i sina grundläggande Azure-publicerade avbildningar. När du har bekräftat att avbildningen du vill distribuera är cloud-init aktiverad kan du använda Azure CLI för att distribuera avbildningen.

Det första steget i distributionen av den här avbildningen är att skapa en resursgrupp med kommandot az group create . En Azure-resursgrupp är en logisk container där Azure-resurser distribueras och hanteras.

I följande exempel skapas en resursgrupp med namnet myResourceGroup i regionen eastus.

az group create --name myResourceGroup --location eastus

Nästa steg är att skapa en fil i det aktuella gränssnittet med namnet cloud-init.txt och klistra in följande konfiguration. I det här exemplet skapar du filen i Cloud Shell som inte finns på den lokala datorn. Du kan använda valfri redigerare. Ange förnuftig redigerare cloud-init.txt för att skapa filen och se en lista över tillgängliga redigerare. Använd valfri redigerare. Några typiska val är nano, vim eller ed. Se till att hela cloud-init-filen kopieras korrekt, särskilt den första raden:

SLES Ubuntu RHEL
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Kommentar

cloud-init har flera indatatyper, cloud-init använder den första raden i customData/userData för att ange hur indata ska bearbetas, till exempel #cloud-config anger att innehållet ska bearbetas som en cloud-init-konfiguration.

Avsluta filen och spara filen enligt redigeraren. Kontrollera filnamnet vid avslut.

Det sista steget är att skapa en virtuell dator med kommandot az vm create .

I följande exempel skapas en virtuell dator med namnet ubuntu2204 och SSH-nycklar skapas om de inte redan finns på en standardnyckelplats. Om du vill använda en specifik uppsättning nycklar använder du alternativet --ssh-key-value. 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.

az vm create \
  --resource-group myResourceGroup \
  --name ubuntu2204 \
  --image Canonical:UbuntuServer:22_04-lts:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

När den virtuella datorn skapas visar Azure CLI information som är specifik för distributionen. Anteckna publicIpAddress. Den här adressen används för att få åtkomst till den virtuella datorn. Det tar lite tid innan den virtuella datorn skapas, paketen som ska installeras och appen startas. Det finns bakgrundsaktiviteter som fortsätter att köras när Azure CLI återgår till kommandotolken. Du kan SSH till den virtuella datorn och använda stegen som beskrivs i avsnittet Felsökning för att visa cloud-init-loggarna.

Du kan också distribuera en cloud-init-aktiverad virtuell dator genom att skicka parametrarna i ARM-mallen.

Felsöka cloud-init

När den virtuella datorn har etablerats körs cloud-init genom alla moduler och skript som definierats i --custom-data för att konfigurera den virtuella datorn. Om du behöver felsöka eventuella fel eller utelämnanden från konfigurationen måste du söka efter modulnamnet (disk_setup eller runcmd till exempel) i cloud-init-loggen – som finns i /var/log/cloud-init.log.

Kommentar

Det är inte alla modulfel som resulterar i ett allvarligt övergripande konfigurationsfel i molnet. Om skriptet till exempel misslyckas med modulen runcmd rapporterar cloud-init fortfarande att etableringen lyckades eftersom runcmd-modulen kördes.

Mer information om cloud-init-loggning finns i dokumentationen för cloud-init

Telemetri

cloud-init samlar in användningsdata och skickar dem till Microsoft för att förbättra våra produkter och tjänster. Telemetri samlas bara in under etableringsprocessen (den virtuella datorns första start). De data som samlas in hjälper oss att undersöka etableringsfel och övervaka prestanda och tillförlitlighet. Insamlade data innehåller inga identifierare (personliga identifierare). Läs vår sekretesspolicy om du vill veta mer. Några exempel på telemetri som samlas in är (detta är inte en fullständig lista): OS-relaterad information (cloud-init-version, distributionsversion, kernelversion), prestandamått för viktiga åtgärder för etablering av virtuella datorer (tid för att hämta DHCP-lån, tid för att hämta metadata som krävs för att konfigurera den virtuella datorn osv.), cloud-init-logg och dmesg-logg.

Telemetrisamlingen är för närvarande aktiverad för de flesta av våra marketplace-avbildningar som använder cloud-init. Det aktiveras genom att ange KVP-telemetrireporter för cloud-init. I de flesta Azure Marketplace-avbildningar finns den här konfigurationen i filen /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. Om du tar bort den här filen under avbildningsförberedelsen inaktiveras telemetrisamlingen för alla virtuella datorer som skapas från den här avbildningen.

Exempelinnehåll på 10-azure-kvp.cfg

reporting:
  logging:
    type: log
  telemetry:
    type: hyperv

Nästa steg

Felsöka problem med cloud-init.

Exempel på konfigurationsändringar i cloud-init finns i följande dokument: