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 cloud-init för att konfigurera en virtuell dator (VM) eller Virtual Machine Scale Sets vid etablering i Azure. Dessa cloud-init-konfigurationer körs vid första starten när resurserna har etablerats av Azure.

Vm-etablering är den process där Azure skickar bort parametervärdena för vm-skapande, 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-agenten (WALA).

översikt över cloud-init

cloud-init är en ofta använd metod 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 obligatoriska 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 för 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 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 de godkända Linux-distributionspartnerna och uppströms för att säkerställa att cloud-init fungerar med operativsystemet på Azure, sedan uppdateras paketen och görs offentligt tillgängliga i distributionspaketdatabaserna.

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:

  • "stöd för cloud-init-paket på Azure"-dokument, vilka cloud-init-paket och senare som 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

Utgivare/version Erbjudande SKU Version image cloud-init ready 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 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
RedHat 9 RHEL 9_0, 9_1 senaste ja ja
  • Alla andra RedHat-SKU:er som startar 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 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 som startar 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.

Anteckning

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 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 hjälp av 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 Agent (WALA)?

WALA är en plattformsspecifik Azure-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 tillåta befintliga cloud-init-kunder att använda sina aktuella cloud-init-skript eller nya kunder för att dra nytta av de omfattande molninit-konfigurationsfunktionerna. 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 etableringstiden, 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 orsakar inte att en distribution misslyckas genom att tidsgränsen nås. Detta är inte sant för WALA, om du ändrar WALA-standardvärdena för att bearbeta anpassade data får det inte överskrida den totala vm-etableringstiden på 40 minuter, i så fall misslyckas vm-skapandet.

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 cloud-init-aktiverad virtuell dator

Att distribuera en moln-init-aktiverad virtuell dator är så enkelt som att referera till en molninitaktiverad distribution under distributionen. Linux-distributionsunderhållare måste välja att aktivera och integrera cloud-init i sina azure-publicerade basavbildningar. 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 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 och 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 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 nano-redigeraren . Välj nr 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

Anteckning

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 distributionen. Anteckna publicIpAddress. Den här adressen används för att få åtkomst till den virtuella datorn. Det tar lite tid för den virtuella datorn att skapas, paketen att installera och appen att starta. Det finns bakgrundsaktiviteter som fortsätter att köras när Azure CLI återgår till kommandotolken. Du kan SSH-ansluta 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 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.

Anteckning

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

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

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 (första starten av den virtuella datorn). 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 VM-etablering (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 förberedelsen av avbildningen inaktiveras telemetriinsamlingen för alla virtuella datorer som skapas från den här avbildningen.

Exempelinnehåll i 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: