cloud-init-ondersteuning voor virtuele machines in Azure

Van toepassing op: ✔️ Virtuele Linux-heavy_check_mark: Flexibele schaalsets

In dit artikel wordt de ondersteuning beschreven die cloud-init biedt voor het configureren van een virtuele machine (VM) of virtuele-machineschaalsets tijdens het inrichten in Azure. Deze cloud-init-configuraties worden bij de eerste keer opstarten uitgevoerd zodra de resources zijn ingericht door Azure.

VM-inrichting is het proces waarbij de Azure-parameterwaarden voor uw VM doorgeven, zoals hostnaam, gebruikersnaam, wachtwoord, enzovoort, en deze beschikbaar maakt voor de VM wanneer deze wordt op start. Een inrichtingsagent verbruikt deze waarden, configureert de VM en rapporteert dit als deze is voltooid.

Azure ondersteunt twee inrichtingsagents cloud-initen de Azure Linux-agent (WALA).

overzicht van cloud-init

cloud-init is een veelgebruikte benadering voor het aanpassen van een Linux-VM wanneer deze voor de eerste keer wordt opgeslagen. U kunt cloud-init gebruiken voor het installeren van pakketten en schrijven van bestanden, of om gebruikers en beveiliging te configureren. Omdat cloud-init wordt aangeroepen tijdens het eerste opstartproces, zijn er geen extra stappen of vereiste agents om uw configuratie toe te passen. Zie de #cloud-config documentatiesite van cloud-initvoor meer informatie over het correct opmaken van uw bestanden of andere invoer. #cloud-config bestanden zijn tekstbestanden die zijn gecodeerd in base64.

cloud-init werkt ook in distributies. U gebruikt bijvoorbeeld niet apt-get install of yum install om een pakket te installeren. In plaats daarvan kunt u een lijst definiëren met te installeren pakketten. cloud-init maakt automatisch gebruik van het systeemeigen pakketbeheerprogramma voor de distributie die u selecteert.

We werken actief samen met onze goedgekeurde Linux-distributiepartners om cloud-init-ingeschakelde afbeeldingen beschikbaar te maken in de Azure Marketplace. Met deze installatiekopieën kunnen uw cloud-init-implementaties en -configuraties naadloos werken met VM's en virtuele-machineschaalsets. In eerste instantie werken we samen met de goedgekeurde Linux-distributiepartners en upstream om ervoor te zorgen dat cloud-init-functies worden gebruikt met het besturingssysteem in Azure. Vervolgens worden de pakketten bijgewerkt en openbaar beschikbaar gesteld in de opslagplaatsen van het distributiepakket.

Er zijn twee fasen voor het beschikbaar maken van cloud-init voor de goedgekeurde Linux-distributiebesturingssystemen in Azure, pakketondersteuning en vervolgens ondersteuning voor afbeeldingen:

  • 'cloud-init package support on Azure' documents which cloud-init packages onwards are supported or in preview, so you can use these packages with the OS in a custom image.
  • Documenten over 'image cloud-init ready' als de afbeelding al is geconfigureerd voor het gebruik van cloud-init.

Canonical

Publisher/versie Aanbieding SKU Versie image cloud-init ready ondersteuning voor cloud-init-pakketten in Azure
Canonical 20.04 UbuntuServer 20.04-LTS meest recente ja ja
Canonical 18.04 UbuntuServer 18.04-LTS meest recente ja ja

RHEL

Publisher/versie Aanbieding SKU Versie image cloud-init ready ondersteuning voor cloud-init-pakketten in Azure
RedHat 7 RHEL 7.7, 7.8, 7_9 meest recente ja ja
RedHat 8 RHEL 8.1, 8.2, 8_3, 8_4 meest recente ja ja
  • Alle andere RedHat-SKU's vanaf RHEL 7 (versie 7.7) en RHEL 8 (versie 8.1), inclusief gen1- en Gen2-afbeeldingen, worden ingericht met behulp van cloud-init. RHEL 6-afbeeldingen bieden geen ondersteuning voor cloud-init.

CentOS

Publisher/versie Aanbieding SKU Versie image cloud-init ready ondersteuning voor cloud-init-pakketten in Azure
OpenLogic 7 CentOS 7.7, 7.8, 7.9 meest recente ja ja
OpenLogic 8 CentOS 8.1, 8.2, 8.3 meest recente ja ja
  • Alle andere CentOS-SKU's vanaf CentOS 7 (versie 7.7) en CentOS 8 (versie 8.1), inclusief gen1- en Gen2-afbeeldingen, worden ingericht met behulp van cloud-init. CentOS 6.10-, 7.4-, 7.5- en 7.6-afbeeldingen bieden geen ondersteuning voor cloud-init.

Notitie

OpenLogic is nu Rogue Wave Software

Oracle

Publisher/versie Aanbieding SKU Versie image cloud-init ready ondersteuning voor cloud-init-pakketten in Azure
Oracle 7 Oracle Linux 77, 78, ol79 meest recente ja ja
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm meest recente ja ja
  • Alle andere Oracle-SKU's vanaf Oracle 7 (versie 7.7) en Oracle 8 (versie 8.1), inclusief gen1- en Gen2-afbeeldingen, worden ingericht met behulp van cloud-init.

SUSE SLES

Publisher/versie Aanbieding SKU Versie image cloud-init ready ondersteuning voor cloud-init-pakketten in Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1, sp2, sp3 meest recente ja ja
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 meest recente ja ja
  • Alle andere SUSE-SKU's vanaf SLES 15 (sp1) en SLES 12 (sp5), inclusief zowel Gen1- als Gen2-afbeeldingen, worden ingericht met behulp van cloud-init.
  • Daarnaast worden deze afbeeldingen ook ingericht met cloud-init -
Publisher/versie Aanbieding SKU/versie
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/versie Aanbieding SKU Versie image cloud-init ready ondersteuning voor cloud-init-pakketten in Azure
debian (Gen1) debian-10 10-cloudinit 10:0.20201013.422 ja ja - ondersteuning vanuit pakketversie: 20.2-2~deb10u1
debian (Gen2) debian-10 10-cloudinit-gen2 0.20201013.422 ja ja - ondersteuning vanuit pakketversie: 20.2-2~deb10u1

Momenteel Azure Stack ondersteuning voor het inrichten van voor cloud-init ingeschakelde afbeeldingen.

Wat is het verschil tussen cloud-init en de Linux-agent (WALA)?

WALA is een platformspecifieke Azure-agent die wordt gebruikt voor het inrichten en configureren van VM's en het afhandelen van Azure-extensies.

We verbeteren de taak van het configureren van VM's voor het gebruik van cloud-init in plaats van de Linux-agent, zodat bestaande cloud-init-klanten hun huidige cloud-init-scripts kunnen gebruiken of nieuwe klanten kunnen profiteren van de uitgebreide cloud-init-configuratiefunctionaliteit. Als u bestaande investeringen hebt gedaan in cloud-init-scripts voor het configureren van Linux-systemen, zijn er geen aanvullende instellingen vereist om cloud-init in te schakelen.

cloud-init kan geen Azure-extensies verwerken, dus WALA is nog steeds vereist in de installatier voor het verwerken van extensies, maar de inrichtingscode moet zijn uitgeschakeld, voor goedgekeurde Linux-distributies die worden geconverteerd naar inrichten door cloud-init, wordt WALA geïnstalleerd en correct ingesteld.

Als u bij het maken van een VM de Azure CLI-switch niet op de inrichtingstijd inschakelt, gebruikt cloud-init of WALA de minimale inrichtingsparameters voor de VM die nodig zijn om de VM in terichten en voltooit u de implementatie met de --custom-data standaardinstellingen. Als u verwijst naar de cloud-init-configuratie met de -switch, is alles in uw aangepaste gegevens beschikbaar voor cloud-init wanneer de --custom-data VM wordt opgeslagen.

Cloud-init-configuraties die worden toegepast op VM's, hebben geen tijdsbeperkingen en veroorzaken niet dat een implementatie mislukt door een time-out. Dit geldt niet voor WALA. Als u de WALA-standaardwaarden wijzigt voor het verwerken van aangepaste gegevens, mag de totale inrichtingstijd van de VM niet langer zijn dan 40 minuten. Als dat het geval is, mislukt het maken van de VM.

cloud-init-VM inrichten zonder UDF-stuurprogramma

Vanaf cloud-init 21.2 kunt u cloud-init gebruiken voor het inrichten van een VM in Azure zonder UDF-stuurprogramma. Als er geen UDF-stuurprogramma beschikbaar is in de afbeelding, gebruikt cloud-init de metagegevens die beschikbaar zijn in de Azure-Instance Metadata Service voor het inrichten van de VM. Houd er rekening mee dat deze optie alleen werkt voor SSH-sleutel en gebruikersgegevens. Als u tijdens het inrichten een wachtwoord of aangepaste gegevens wilt doorgeven aan een VM, moet u een UDF-stuurprogramma gebruiken.

Een virtuele machine met cloud-init implementeren

Het implementeren van een virtuele machine met cloud-init is net zo eenvoudig als het verwijzen naar een distributie met cloud-init tijdens de implementatie. Linux-distributie-onderhouders moeten cloud-init inschakelen en integreren in hun basis gepubliceerde Azure-afbeeldingen. Nadat u hebt bevestigd dat de afbeelding die u wilt implementeren cloud-init is ingeschakeld, kunt u de Azure CLI gebruiken om de afbeelding te implementeren.

De eerste stap bij het implementeren van deze afbeelding is het maken van een resourcegroep met de opdracht az group create. Een Azure-resourcegroep is een logische container waarin Azure-resources worden geïmplementeerd en beheerd.

In het volgende voorbeeld wordt een resourcegroep met de naam myResourceGroup gemaakt op de locatie VS - oost.

az group create --name myResourceGroup --location eastus

De volgende stap is het maken van een bestand in uw huidige shell met de naamcloud-init.txt plak de volgende configuratie. Voor dit voorbeeld maakt u het bestand in de Cloud Shell niet op uw lokale computer. U kunt elke editor die u wilt gebruiken. Voer sensible-editor cloud-init.txt in voor het maken van het bestand en om een overzicht van beschikbare editors te zien. Kies #1 nano-editor wilt gebruiken. Controleer of het hele cloud-init-bestand correct is gekopieerd, met name de eerste regel:

#cloud-config
package_upgrade: true
packages:
  - httpd

Notitie

cloud-init heeft meerdere invoertypen, cloud-init gebruikt de eerste regel van customData/userData om aan te geven hoe de invoer moet worden verwerkt. Dit geeft bijvoorbeeld aan dat de inhoud moet worden verwerkt als een #cloud-config cloud-init-configuratie.

Druk ctrl-X op om het bestand af te sluiten, typ om het bestand op te slaan en druk op om de bestandsnaam bij afsluiten te y enter bevestigen.

De laatste stap is het maken van een VM met de opdracht az vm create.

In het volgende voorbeeld wordt een VM gemaakt met de naam centos74 en worden er SSH-sleutels gemaakt als deze nog niet bestaan op een standaardsleutellocatie. Als u een specifieke set sleutels wilt gebruiken, gebruikt u de optie --ssh-key-value. Gebruik de --custom-data-parameter om door te geven in uw cloud-init-configuratiebestand. Geef het volledige pad naar cloud-init.txt op als u het bestand buiten uw huidige werkmap hebt opgeslagen.

az vm create \
  --resource-group myResourceGroup \
  --name centos74 \
  --image OpenLogic:CentOS-CI:7-CI:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

Wanneer de VM is gemaakt, toont de Azure CLI specifieke informatie voor uw implementatie. Noteer het publicIpAddress. Dit adres wordt gebruikt voor toegang tot de virtuele machine. Het duurt enige tijd om de VM te maken, de pakketten te installeren en de app te starten. Er zijn achtergrondtaken die nog worden uitgevoerd nadat u door de Azure CLI bent teruggeleid naar de prompt. U kunt via SSH verbinding maken met de VM en de stappen in de sectie Probleemoplossing gebruiken om de cloud-init-logboeken weer te geven.

U kunt ook een VM met cloud-init implementeren door de parameters door te geven in arm-sjabloon.

Problemen met cloud-init oplossen

Zodra de VM is ingericht, worden in cloud-init alle modules en scripts uitgevoerd die zijn gedefinieerd in om --custom-data de VM te configureren. Als u fouten of weglatingen in de configuratie wilt oplossen, moet u zoeken naar de modulenaam ( of bijvoorbeeld) in het cloud-init-logboek , dat zich disk_setup runcmd bevindt in /var/log/cloud-init.log.

Notitie

Niet elke modulefout resulteert in een fatale configuratiefout in cloud-init. Als het script bijvoorbeeld mislukt met behulp van de module, rapporteert cloud-init nog steeds dat de inrichting is geslaagd omdat de runcmd runcmd-module is uitgevoerd.

Raadpleeg de documentatie over cloud-init voor meer informatie over cloud-init-logboekregistratie

Volgende stappen

Problemen met cloud-init oplossen.

Zie de volgende documenten voor cloud-init-voorbeelden van configuratiewijzigingen: