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

Gäller för: Virtuella ✔️ Linux-datorer – ✔️ flexibla skalningsuppsättningar

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

Etablering av virtuella datorer är en process där Azure skickar ned parametervärden för ATT skapa virtuella datorer, till exempel värdnamn, användarnamn, lösenord osv. 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-agenten (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 filer eller #cloud-config andra indata korrekt finns på webbplatsen för cloud-init-dokumentation. #cloud-config -filer är textfiler kodade 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 inbyggda pakethanteringsverktyget för den distribution du väljer.

Vi arbetar aktivt med våra godkända Linux-distributionpartner för att få cloud-init-aktiverade avbildningar tillgängliga i 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 godkända Linux-distribution partner och uppströms för att säkerställa cloud-init-funktioner med operativsystemet på Azure, och sedan uppdateras paketen och görs offentligt tillgängliga i distributionspaketlagringsplatsen.

Det finns två steg för att göra cloud-init tillgängligt för godkända Linux-distribution os på Azure, paketstöd och sedan avbildningsstöd:

  • "cloud-init package support on Azure" dokument som cloud-init-paket och framåt stöds eller är 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

Publisher/version Erbjudande SKU Version image cloud-init ready stöd för cloud-init-paket i Azure
Canonical 20.04 UbuntuServer 20.04-LTS senaste ja ja
Canonical 18.04 UbuntuServer 18.04-LTS senaste ja ja

RHEL

Publisher/version Erbjudande SKU Version image cloud-init ready 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
  • 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 cloud-init. RHEL 6-avbildningar stöder inte cloud-init.

CentOS

Publisher/version Erbjudande SKU Version image cloud-init ready stöd för cloud-init-paket i Azure
OpenLogic 7 CentOS 7.7, 7.8, 7.9 senaste ja ja
OpenLogic 8 CentOS 8.1, 8.2, 8.3 senaste ja ja
  • Alla andra CentOS-SKU:er med start från CentOS 7 (version 7.7) och CentOS 8 (version 8.1) inklusive både Gen1- och Gen2-avbildningar etableras med cloud-init. Avbildningarna CentOS 6.10, 7.4, 7.5 och 7.6 stöder inte cloud-init.

Anteckning

OpenLogic är nu Rogue Wave Software

Oracle

Publisher/version Erbjudande SKU Version image cloud-init ready 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 cloud-init.

SUSE SLES

Publisher/version Erbjudande SKU Version image cloud-init ready 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
  • Alla andra SUSE-SUSE-SKU:er från SLES 15 (sp1) och SLES 12 (sp5) inklusive både Gen1- och Gen2-avbildningar etableras med hjälp av cloud-init.
  • Dessutom etableras de här avbildningarna med cloud-init –
Publisher/version Erbjudande SKU/version
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp4:2020.06.10
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp3:2020.06.10
SUSE 12 SLES (SUSE Linux Enterprise Server) sles-{byos/sap/sap-byos}:12-sp2:2020.06.10
SUSE 15 SLES (SUSE Linux Enterprise Server) manager-proxy-4-byosgen1:2020.06.10
SUSE 15 SLES (SUSE Linux Enterprise Server) manager-server-4-byos:gen1:2020.06.10

Debian

Publisher/version Erbjudande SKU Version image cloud-init ready stöd för cloud-init-paket i Azure
debian (Gen1) debian-10 10-cloudinit 10:0.20201013.422 ja ja – stöd från paketversion: 20.2-2~deb10u1
debian (Gen2) debian-10 10-cloudinit-gen2 0.20201013.422 ja ja – stöd från paketversion: 20.2-2~deb10u1

För Azure Stack stöd för etablering av cloud-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 nuvarande cloud-init-skript eller nya kunder för att dra nytta av de omfattande konfigurationsfunktionerna i cloud-init. 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 sin etableringskod inaktiverad. För godkända Linux-distributioner av avbildningar som konverteras för att etableras av cloud-init kommer de att ha WALA installerat och konfigureras korrekt.

Om du inte inkluderar Azure CLI-växeln --custom-data vid etableringen när du skapar en virtuell dator tar cloud-init eller WALA de minimala etableringsparametrar för virtuella datorer som krävs för att etablera den virtuella datorn och slutför distributionen med standardvärdena. Om du refererar till cloud-init-konfigurationen --custom-data med växeln blir allt 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 inga tidsbegränsningar och kommer inte att orsaka att en distribution misslyckas genom en time out. Detta gäller inte för WALA. Om du ändrar WALA-standardinställningarna för att bearbeta anpassade data får den inte överskrida den totala tillåtna etableringstiden för virtuella datorer på 40 minuter, i så fall misslyckas VM Create.

etablering av virtuella cloud-init-datorer 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 en 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. Observera att det här alternativet endast fungerar 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 cloud-init-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-distributionens underhållare måste välja att aktivera och integrera cloud-init i sina azure-baserade publicerade avbildningar. När du har bekräftat att avbildningen som du vill distribuera är cloud-init-aktiverad kan du använda Azure CLI för att distribuera avbildningen.

Det första steget i att distribuera 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 på platsen 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 klistra in följande konfiguration. I det här exemplet skapar du filen i Cloud Shell inte på den lokala datorn. Du kan använda vilket redigeringsprogram som helst. Ange sensible-editor cloud-init.txt för att skapa filen och visa en lista över tillgängliga redigeringsprogram. Välj nr 1 för att använda nano-redigeraren . Se till att hela cloud-init-filen kopieras korrekt, särskilt den första raden:

#cloud-config
package_upgrade: true
packages:
  - httpd

Anteckning

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

Tryck på Ctrl + X för att avsluta filen, skriv y för att spara filen och tryck på Retur för att bekräfta filnamnet vid avslut.

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

Följande exempel skapar en virtuell dator som heter centos74, 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 centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

När den virtuella datorn har skapats 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 installeras och appen startas. Det finns bakgrundsaktiviteter som fortsätter att köras när Azure CLI återgår till kommandotolken. Du kan använda SSH till den virtuella datorn och följa stegen i avsnittet Felsökning för att visa cloud-init-loggarna.

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

Felsöka cloud-init

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

Anteckning

Inte alla modulfel resulterar i ett allvarligt övergripande konfigurationsfel för cloud-init. Om skriptet exempelvis misslyckas runcmd med hjälp av modulen kommer cloud-init fortfarande rapportera att etableringen lyckades eftersom runcmd-modulen kördes.

Mer information om cloud-init-loggning finns i cloud-init-dokumentationen

Nästa steg

Felsöka problem med cloud-init.

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