Problemen met het inrichten van VM's oplossen met cloud-init

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

Als u gegeneraliseerde aangepaste afbeeldingen hebt gemaakt met behulp van cloud-init voor het inrichten, maar hebt ontdekt dat de VM niet correct is gemaakt, moet u problemen met uw aangepaste afbeeldingen oplossen.

Enkele voorbeelden van problemen met het inrichten:

  • Het maken van de VM duurt 40 minuten en het maken van de VM is gemarkeerd als mislukt
  • CustomData wordt niet verwerkt
  • De kortstondige schijf kan niet worden bevestigd
  • Gebruikers worden niet gemaakt of er zijn problemen met gebruikerstoegang
  • Netwerken is niet juist ingesteld
  • Wisselbestands- of partitiefouten

In dit artikel wordt beschreven hoe u problemen met cloud-init kunt oplossen. Zie cloud-init deep divevoor meer informatie.

Stap 1: de implementatie testen zonder customData

Cloud-init kan accepteren, dat wordt doorgegeven aan de customData VM wanneer de VM wordt gemaakt. Zorg er eerst voor dat dit geen problemen veroorzaakt met implementaties. Probeer de VM in terichten zonder een configuratie door te geven. Als u ziet dat de VM niet kan worden ingericht, gaat u verder met de onderstaande stappen. Als u ziet dat de configuratie die u doorgeeft niet wordt toegepast, gaat u verder met stap 4.

Stap 2: vereisten voor afbeeldingen controleren

De belangrijkste oorzaak van het mislukken van het inrichten van een VM is dat de besturingssysteemafbeelding niet voldoet aan de vereisten voor het uitvoeren in Azure. Zorg ervoor dat uw afbeeldingen goed zijn voorbereid voordat u ze gaat inrichten in Azure.

In de volgende artikelen ziet u de stappen voor het voorbereiden van verschillende Linux-distributies die worden ondersteund in Azure:

Voor de ondersteunde Azure cloud-init-installatieafbeeldingen hebben de Linux-distributies al alle vereiste pakketten en configuraties voor het correct inrichten van de installatie afbeelding in Azure. Als u vindt dat het maken van uw VM op uw eigen gecureerde afbeelding mislukt, probeert u een ondersteunde Azure Marketplace-afbeelding die al is geconfigureerd voor cloud-init, met uw optionele customData . Als de correct werkt met een Azure Marketplace afbeelding, is er waarschijnlijk een customData probleem met uw gecureerde afbeelding.

Stap 3: VM& logboeken verzamelen en controleren

Wanneer de VM niet kan worden ingericht, wordt in Azure gedurende 20 minuten de status 'maken' weergegeven, waarna de VM opnieuw wordt opgestart en nog eens 20 minuten wordt gewacht voordat de implementatie van de VM als mislukt wordt markeert, voordat de VM ten slotte een foutmelding OSProvisioningTimedOut krijgt.

Terwijl de VM wordt uitgevoerd, hebt u de logboeken van de VM nodig om te begrijpen waarom het inrichten is mislukt. Als u wilt weten waarom het inrichten van VM's is mislukt, moet u de VM niet stoppen. Houd de VM actief. U moet de mislukte VM actief houden om logboeken te kunnen verzamelen. Gebruik een van de volgende methoden om de logboeken te verzamelen:

/var/log/cloud-init*
/var/log/waagent*
/var/log/syslog*
/var/log/rsyslog*
/var/log/messages*
/var/log/kern*
/var/log/dmesg*
/var/log/boot*

Als u de eerste probleemoplossing wilt starten, begint u met de cloud-init-logboeken en begrijpt u waar de fout is opgetreden. Vervolgens gebruikt u de andere logboeken om dieper in te gaan en aanvullende inzichten te bieden.

  • /var/log/cloud-init.log
  • /var/log/cloud-init-output.log
  • Seriële/opstartlogboeken

Zoek in alle logboeken naar 'Mislukt', 'WAARSCHUWING', 'WAARSCHUWEN', 'err', 'fout', 'FOUT', 'FOUT'. Het wordt aanbevolen om de configuratie in te stellen om zoekopdrachten met een gevoelige vorm van case te negeren.

Tip

Als u problemen met een aangepaste afbeelding wilt oplossen, kunt u overwegen om een gebruiker toe te voegen tijdens de afbeelding. Als de gebruiker met beheerdersrechten niet kan worden ingesteld, kunt u zich nog steeds aanmelden bij het besturingssysteem.

De logboeken analyseren

Hier ziet u meer informatie over waar u naar moet zoeken in elk cloud-init-logboek.

/var/log/cloud-init.log

Standaard worden alle cloud-init-gebeurtenissen met de prioriteit foutopsporing of hoger naar /var/log/cloud-init.log geschreven. Dit biedt uitgebreide logboeken van elke gebeurtenis die zich heeft voorgedaan tijdens de initialisatie van cloud-init.

Bijvoorbeeld:

2019-10-10 04:51:25,321 - util.py[DEBUG]: Failed mount of '/dev/sr0' as 'auto': Unexpected error while running command.
Command: ['mount', '-o', 'ro,sync', '-t', 'auto', u'/dev/sr0', '/run/cloud-init/tmp/tmpLIrklc']
Exit code: 32
Reason: -
Stdout:
Stderr: mount: unknown filesystem type 'udf'
2020-01-31 00:21:53,352 - DataSourceAzure.py[WARNING]: /dev/sr0 was not mountable

Zodra u een fout of waarschuwing hebt gevonden, leest u terug in het cloud-init-logboek om te begrijpen wat cloud-init heeft geprobeerd voordat deze de fout of waarschuwing kreeg. In veel gevallen heeft cloud-init vóór de fout besturingssysteemopdrachten of inrichtingsbewerkingen uitgevoerd, wat inzicht kan geven in waarom fouten in de logboeken worden weergegeven. In het volgende voorbeeld ziet u dat cloud-init heeft geprobeerd een apparaat te installeren, net voordat er een fout is opgetreden.

2019-10-10 04:51:24,010 - util.py[DEBUG]: Running command ['mount', '-o', 'ro,sync', '-t', 'auto', u'/dev/sr0', '/run/cloud-init/tmp/tmpXXXXX'] with allowed return codes [0] (shell=False, capture=True)

Als u toegang hebt tot de seriële console,kunt u proberen de opdracht die cloud-init probeerde uit te voeren opnieuw uit te voeren.

De logboekregistratie voor kan ook opnieuw /var/log/cloud-init.log worden geconfigureerd in /etc/cloud/cloud.cfg.d/05_logging.cfg. Raadpleeg de cloud-init-documentatie voor meer informatie over cloud-init-logboekregistratie.

/var/log/cloud-init-output.log

U kunt informatie verkrijgen uit de stdout en tijdens de fasen van stderr cloud-init. Dit omvat doorgaans routeringstabelgegevens, netwerkgegevens, verificatiegegevens van de SSH-hostsleutel en voor elke fase van cloud-init, samen met de stdout stderr tijdstempel voor elke fase. Indien gewenst stderr kunnen stdout logboekregistraties opnieuw worden geconfigureerd vanuit /etc/cloud/cloud.cfg.d/05_logging.cfg .

Seriële/opstartlogboeken

Cloud-init heeft meerdere afhankelijkheden. Deze worden beschreven in de vereiste vereisten voor afbeeldingen in Azure, zoals netwerken, opslag, de mogelijkheid om een ISO te mounten en de tijdelijke schijf te kunnen monteren en formatteren. Elk van deze fouten kan fouten veroorzaken en ervoor zorgen dat cloud-init mislukt. Als de VM bijvoorbeeld geen DHCP-lease kan krijgen, mislukt cloud-init.

Als u nog steeds niet kunt isoleren waarom het inrichten van cloud-init is mislukt, moet u begrijpen welke cloud-init-fasen worden uitgevoerd en wanneer modules worden uitgevoerd. Zie Dieper ingaan op cloud-init voor meer informatie.

Stap 4: onderzoeken waarom de configuratie niet wordt toegepast

Niet elke fout in cloud-init leidt tot een fatale inrichtingsfout. Als u bijvoorbeeld de module in een runcmd cloud-init-configuratie gebruikt, zal een niet-nuluitgangscode van de opdracht die wordt uitgevoerd ervoor zorgen dat de VM niet kan worden ingericht. Dit komt doordat de functie wordt uitgevoerd na de kernfunctionaliteit voor het inrichten die zich in de eerste drie fasen van cloud-init voordeed. Als u wilt oplossen waarom de configuratie niet van toepassing is, bekijkt u de logboeken in stap 3 en de cloud-init-modules handmatig. Bijvoorbeeld:

  • runcmd - worden de scripts zonder fouten uitgevoerd? Voer de configuratie handmatig uit vanaf de terminal om ervoor te zorgen dat ze worden uitgevoerd zoals verwacht.
  • Pakketten installeren: heeft de VM toegang tot pakket-opslagplaatsen?
  • U moet ook de customData gegevensconfiguratie controleren die is opgegeven voor de VM. Deze bevindt zich in /var/lib/cloud/instances/<unique-instance-identifier>/user-data.txt .

Volgende stappen

Als u nog steeds niet kunt isoleren waarom cloud-init de configuratie niet heeft uitgevoerd, moet u beter bekijken wat er gebeurt in elke cloud-init-fase en wanneer modules worden uitgevoerd. Zie Dieper ingaan op cloud-init-configuratie voor meer informatie.