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: