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: