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

Varning

Den här artikeln refererar till CentOS, en Linux-distribution som närmar sig EOL-status (End Of Life). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledningen.

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 bort parametervärdena skapa en virtuell dator, till exempel värdnamn, användarnamn och lösenord, och göra 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 22.04 UbuntuServer 22.04-LTS senaste ja ja
Kanonisk 20,04 UbuntuServer 20.04-LTS senaste ja ja
Kanonisk 18,04 UbuntuServer 18.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.

CentOS

Utgivare/version Erbjudande SKU Version image cloud-init klar 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 från CentOS 7 (version 7.7) och CentOS 8 (version 8.1) inklusive både Gen1- och Gen2-avbildningar etableras med hjälp av cloud-init. CentOS 6.10, 7.4, 7.5 och 7.6-avbildningar stöder inte cloud-init.

Kommentar

OpenLogic är nu Rogue Wave Software

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
  • Alla andra SUSE-SKU:er från SLES 15 (sp1) och SLES 12 (sp5) inklusive både Gen1- och Gen2-avbildningar etableras med cloud-init.
  • Dessutom etableras dessa avbildningar med cloud-init –
Utgivare/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

Utgivare/version Erbjudande SKU Version image cloud-init klar 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 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 sin etableringskod inaktiverad för godkända Linux-distributionsavbildningar som konverteras till etablering av cloud-init, de kommer att ha WALA installerat och konfigureras 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 är ute. 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 som 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 sensible-editor cloud-init.txt för att skapa filen och visa en lista över tillgängliga redigeringsprogram. I det här exemplet använder vi nanoredigeraren . Välj #1 för att använda nanoredigeraren . 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.

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 .

I följande exempel skapas en virtuell dator med namnet 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 din distribution. 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 för --custom-data 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.

Telemetriinsamling är för närvarande aktiverat 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: