Sdílet prostřednictvím


podpora cloud-init pro virtuální počítače v Azure

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️

Tento článek vysvětluje podporu, která existuje pro cloud-init ke konfiguraci virtuálního počítače nebo škálovacích sad virtuálních počítačů v době zřizování v Azure. Tyto konfigurace cloud-init se spouští při prvním spuštění po zřízení prostředků v Azure.

Zřizování virtuálních počítačů je proces, kdy Azure předává hodnoty parametrů Create virtuálního počítače, jako je název hostitele, uživatelské jméno a heslo, a zpřístupní je virtuálnímu počítači při jeho spuštění. Agent zřizování tyto hodnoty spotřebuje, nakonfiguruje virtuální počítač a po dokončení se vrátí zpět.

podpora Azure dva agenty zřizování cloud-init a agenta Azure Linuxu (WALA).

přehled cloud-init

Cloud-init je široce používaný přístup k přizpůsobení virtuálního počítače s Linuxem při prvním spuštění. Pomocí cloud-init můžete instalovat balíčky a zapisovat soubory nebo konfigurovat uživatele a zabezpečení. Vzhledem k tomu, že se cloud-init volá během počátečního procesu spouštění, nejsou k dispozici žádné další kroky nebo požadované agenty pro použití vaší konfigurace. Další informace o tom, jak správně formátovat #cloud-config soubory nebo jiné vstupy, najdete na webu dokumentace cloud-init. #cloud-config soubory jsou textové soubory kódované v base64.

Cloud-init funguje také napříč distribucemi. K instalaci balíčku tak například nepoužijete apt-get install ani yum install. Místo toho můžete definovat seznam balíčků pro instalaci. Cloud-init automaticky používá nativní nástroj pro správu balíčků pro výběr distribuce.

Aktivně spolupracujeme s našimi doporučenými partnery pro distribuce Linuxu, abychom měli k dispozici image s podporou cloudu na Azure Marketplace. Díky těmto imagím budou vaše nasazení a konfigurace cloud-init bez problémů fungovat s virtuálními počítači a škálovacími sadami virtuálních počítačů. Zpočátku spolupracujeme s doporučenými partnery distribuce Linuxu a upstreamem, abychom zajistili, že funkce cloud-init s operačním systémem v Azure, pak se balíčky aktualizují a zpřístupní veřejně v úložištích balíčků distribuce.

Existují dvě fáze zpřístupnění cloud-init podporovaným linuxovým distribucím v Azure, podpoře balíčků a následné podpoře imagí:

  • Dokumenty s podporou balíčků cloud-init v Azure, které jsou balíčky cloud-init dál podporované nebo ve verzi Preview, takže tyto balíčky můžete používat s operačním systémem ve vlastní imagi.
  • Dokumenty připravené pro cloud-init image, pokud je už image nakonfigurovaná tak, aby používala cloud-init.

Canonical

Vydavatel / verze Nabízet Skladová jednotka (SKU) Verze Image cloud-init ready Podpora balíčků cloud-init v Azure
Kanonický 24.04 UbuntuServer 22.04-LTS nejnovější ano ano
Kanonický 22.04 UbuntuServer 22.04-LTS nejnovější ano ano
Kanonický 20.04 UbuntuServer 20.04-LTS nejnovější ano ano

RHEL

Vydavatel / verze Nabízet Skladová jednotka (SKU) Verze Image cloud-init ready Podpora balíčků cloud-init v Azure
RedHat 7 RHEL 7.7, 7.8, 7_9 nejnovější ano ano
RedHat 8 RHEL 8.1, 8.2, 8_3, 8_4 nejnovější ano ano
RedHat 9 RHEL 9_0, 9_1 nejnovější ano ano
  • Všechny ostatní skladové položky RedHat od RHEL 7 (verze 7.7) a RHEL 8 (verze 8.1) včetně imagí Gen1 a Gen2 se zřizují pomocí cloud-init. Cloud-init se v RHEL 6 nepodporuje.

Oracle

Vydavatel / verze Nabízet Skladová jednotka (SKU) Verze Image cloud-init ready Podpora balíčků cloud-init v Azure
Oracle 7 Oracle Linux 77, 78, ol79 nejnovější ano ano
Oracle 8 Oracle Linux 81, ol82, ol83-lvm, ol84-lvm nejnovější ano ano
  • Všechny ostatní skladové položky Oracle počínaje Oracle 7 (verze 7.7) a Oracle 8 (verze 8.1) včetně imagí Gen1 a Gen2 se zřizují pomocí cloud-init.

SUSE SLES

Vydavatel / verze Nabízet Skladová jednotka (SKU) Verze Image cloud-init ready Podpora balíčků cloud-init v Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) sp1, sp2, sp3 nejnovější ano ano
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 nejnovější ano ano

Debian

Vydavatel / verze Nabízet Skladová jednotka (SKU) Verze Image cloud-init ready Podpora balíčků cloud-init v Azure
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.1015 ano ano
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.991 ano ano
debian-10 Debian 10-cloudinit-gen2 Debian:debian-10:10-cloudinit-gen2:0.0.999 ano ano

Azure Stack v současné době podporuje zřizování imagí s podporou cloudu.

Jaký je rozdíl mezi cloud-init a linuxovým agentem (WALA)?

WALA je agent specifický pro platformu Azure, který se používá ke zřizování a konfiguraci virtuálních počítačů a zpracování rozšíření Azure.

Vylepšujeme úlohu konfigurace virtuálních počítačů tak, aby místo linuxového agenta používaly cloud-init, aby stávající zákazníci cloud-init mohli používat své aktuální skripty cloud-init nebo noví zákazníci, aby mohli využívat bohaté funkce konfigurace cloud-init. Pokud máte stávající investice do skriptů cloud-init pro konfiguraci systémů Linux, nejsou nutná žádná další nastavení pro povolení procesu cloud-init.

Cloud-init nemůže zpracovávat rozšíření Azure, takže WALA je stále potřeba na imagi ke zpracování rozšíření, ale musí mít zakázaný zřizovací kód. Pro schválené linuxové distribuce imagí, které se konvertují na zřizování cloud-init, mají nainstalované WALA a správně nastavují.

Pokud při vytváření virtuálního počítače nezahrnete přepínač Azure CLI --custom-data při zřizování, cloud-init nebo WALA převezme minimální parametry zřizování virtuálního počítače potřebné ke zřízení virtuálního počítače a dokončení nasazení s výchozími hodnotami. Pokud odkazujete na konfiguraci cloud-init s přepínačem --custom-data , bude při spuštění virtuálního počítače k dispozici cokoli, co obsahuje vaše vlastní data, cloud-init.

Konfigurace cloud-init použité na virtuální počítače nemají časová omezení a nezpůsobí selhání nasazení vypršením časového limitu. To neplatí pro WALA, pokud změníte výchozí nastavení WALA na zpracování vlastních dat, nemůže překročit celkový časový limit zřizování virtuálního počítače 40 minut, pokud ano, vytvoření virtuálního počítače selže.

Zřizování virtuálních počítačů cloud-init bez ovladače UDF

Počínaje cloud-init 21.2 můžete pomocí cloud-init zřídit virtuální počítač v Azure bez ovladače UDF. Pokud ovladač UDF není v imagi dostupný, cloud-init použije k zřízení virtuálního počítače metadata, která jsou k dispozici ve službě Azure Instance Metadata Service. Tato možnost funguje jenom pro klíč SSH a uživatelská data. Pokud chcete během zřizování předat virtuálnímu počítači heslo nebo vlastní data, musíte použít ovladač UDF.

Nasazení virtuálního počítače s podporou cloudu

Nasazení virtuálního počítače s podporou cloudu je stejně jednoduché jako odkazování na distribuci s podporou cloudu během nasazování. Správci distribuce Linuxu se musí rozhodnout povolit a integrovat cloud-init do svých základních publikovaných imagí Azure. Jakmile potvrdíte, že je image, kterou chcete nasadit, povolená cloud-init, můžete k nasazení image použít Azure CLI.

Prvním krokem při nasazení této image je vytvoření skupiny prostředků pomocí příkazu az group create . Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.

Následující příklad vytvoří skupinu prostředků myResourceGroup v umístění eastus.

az group create --name myResourceGroup --location eastus

Dalším krokem je vytvoření souboru v aktuálním prostředí s názvem cloud-init.txt a vložením následující konfigurace. V tomto příkladu vytvořte soubor v Cloud Shellu, ne na místním počítači. Můžete použít libovolný editor podle svého výběru. Zadejte rozumné cloud-init.txt editoru, abyste soubor vytvořili a zobrazili seznam dostupných editorů. Použijte editor podle svého výběru. Mezi typické volby patří nano, vim nebo ed. Ujistěte se, že se celý soubor cloud-init zkopíroval správně, zejména první řádek:

SLES Ubuntu RHEL
# cloud-config
package_upgrade: true
packages:
- apache2
# cloud-config
package_upgrade: true
packages:
- httpd
# cloud-config
package_upgrade: true
packages:
- httpd

Poznámka:

Cloud-init má více typů vstupu, cloud-init použije první řádek customData/userData k označení, jak by měl zpracovat vstup, například #cloud-config indikuje, že obsah by se měl zpracovat jako konfigurace cloud-init.

Ukončete soubor a soubor uložte podle editoru. Ověřte název souboru při ukončení.

Posledním krokem je vytvoření virtuálního počítače pomocí příkazu az vm create .

Následující příklad vytvoří virtuální počítač s názvem ubuntu2204 a vytvoří klíče SSH, pokud ještě neexistují ve výchozím umístění klíče. Chcete-li použít konkrétní sadu klíčů, použijte možnost --ssh-key-value. Pomocí parametru --custom-data předejte svůj konfigurační soubor cloud-init. Pokud jste konfigurační soubor cloud-init.txt uložili mimo aktuální pracovní adresář, zadejte úplnou cestu k němu.

az vm create \
  --resource-group myResourceGroup \
  --name ubuntu2204 \
  --image Canonical:UbuntuServer:22_04-lts:latest \
  --custom-data cloud-init.txt \
  --generate-ssh-keys 

Po vytvoření virtuálního počítače se v Azure CLI zobrazí informace specifické pro vaše nasazení. Poznamenejte si publicIpAddress. Tato adresa se používá pro přístup k virtuálnímu počítači. Vytvoření virtuálního počítače, instalace balíčků a spuštění aplikace nějakou dobu trvá. Když vás Azure CLI vrátí na příkazový řádek, na pozadí stále poběží úlohy. Připojte se k virtuálnímu počítači pomocí SSH a pomocí kroků uvedených v části Řešení potíží zobrazte protokoly cloud-init.

Virtuální počítač s podporou cloudu můžete nasadit také předáním parametrů v šabloně ARM.

Řešení potíží s cloud-init

Jakmile je virtuální počítač zřízený, cloud-init projde všemi moduly a skripty definovanými za --custom-data účelem konfigurace virtuálního počítače. Pokud potřebujete vyřešit případné chyby nebo vynechání konfigurace, musíte vyhledat název modulu (disk_setup nebo runcmd například) v protokolu cloud-init , který se nachází v /var/log/cloud-init.log.

Poznámka:

Ne každé selhání modulu vede k závažnému selhání celkové konfigurace cloud-init. Pokud například runcmd skript selže, cloud-init bude i nadále oznamovat úspěšné zřizování, protože se spustil modul runcmd.

Další informace o protokolování cloud-init najdete v dokumentaci ke cloud-init.

Telemetrie

cloud-init shromažďuje data o využití a odesílá je Microsoftu, aby pomohl zlepšit naše produkty a služby. Telemetrie se shromažďuje jenom během procesu zřizování (první spuštění virtuálního počítače). Shromážděná data nám pomáhají prošetřit selhání zřizování a monitorovat výkon a spolehlivost. Shromážděná data neobsahují žádné identifikátory (osobní identifikátory). Další informace najdete v našem prohlášení o zásadách ochrany osobních údajů. Mezi příklady shromažďovaných telemetrických dat patří (nejedná se o vyčerpávající seznam): informace související s operačním systémem (verze cloud-init, verze distribuce, verze jádra), metriky výkonu základních akcí zřizování virtuálních počítačů (doba získání zapůjčení DHCP, doba načtení metadat potřebných ke konfiguraci virtuálního počítače atd.), protokol cloud-init a protokol dmesg.

Shromažďování telemetrie je aktuálně povolené pro většinu imagí z marketplace, které používají cloud-init. Povolí se zadáním reportéru telemetrie KVP pro cloud-init. Ve většině imagí Azure Marketplace tuto konfiguraci najdete v souboru /etc/cloud/cloud.cfg.d/10-azure-kvp.cfg. Odebráním tohoto souboru během přípravy image zakážete shromažďování telemetrie pro všechny virtuální počítače vytvořené z této image.

Ukázkový obsah 10-azure-kvp.cfg

reporting:
  logging:
    type: log
  telemetry:
    type: hyperv

Další kroky

Řešení potíží s cloud-init

Příklady změn konfigurace cloud-init najdete v následujících dokumentech: