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 pro zřizování použije tyto hodnoty, nakonfiguruje virtuální počítač a po dokončení ohlásí dokončení.

Azure podporuje dva agenty pro zřizování: cloud-init a Azure Linux Agent (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 stránkách 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 cloud-init funguje s operačním systémem na Azure. Následně se balíčky aktualizují a zpřístupní 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ídka skladová jednotka (SKU) Verze Obrázek cloud-init připraven Podpora balíčků cloud-init v Azure
Kanonický 24.04 Ubuntu Server 24.04-LTS nejnovější Ano Ano
Canonical 22.04 Ubuntu Server 22.04-LTS nejnovější Ano Ano
Canonical 20.04 Ubuntu Server 20.04-LTS nejnovější Ano Ano

RHEL

Vydavatel / verze Nabídka skladová jednotka (SKU) Verze Obrázek cloud-init připraven 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ídka skladová jednotka (SKU) Verze Obrázek cloud-init připraven 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ídka skladová jednotka (SKU) Verze Obrázek cloud-init připraven Podpora balíčků cloud-init v Azure
SUSE 15 SLES (SUSE Linux Enterprise Server) všichni poskytovatelé služeb nejnovější Ano Ano
SUSE 12 SLES (SUSE Linux Enterprise Server) sp5 nejnovější Ano Ano
  • SUSE Linux Enterprise Server 12 je po ukončení podpory dnem 31. října 2024, SP5 byl nejnovější Service Pack.

Debian

Vydavatel / verze Nabídka skladová jednotka (SKU) Verze Obrázek cloud-init připraven 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í obrazů s podporou cloud-init.

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 v image ke zpracování rozšíření, ale musí mít zakázaný kód pro zřizování. 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 pro zpracování vlastních dat, nesmí překročit celkový časový limit zřizování virtuálního počítače 40 minut. Pokud k tomu dojde, proces 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 není ovladač UDF v image dostupný, cloud-init použije metadata, která jsou k dispozici ve službě Azure Instance Metadata Service, pro zřízení virtuálního počítače. 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 distribucí Linuxu se musí rozhodnout, zda povolit a integrovat cloud-init do svých základních obrazů publikovaných na Azure. Jakmile potvrdíte, že obraz, který chcete nasadit, je s podporou cloud-init, můžete k nasazení obrazu použít Azure CLI.

Prvním krokem při nasazení této image je vytvoření skupiny prostředků pomocí az group create příkazu. 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ů s názvem myResourceGroup v lokaci 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 příkaz sensible-editor cloud-init.txt, abyste vytvořili soubor 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 práci se souborem a soubor uložte dle příslušného nastavení 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. Například, pokud selže skript runcmd, 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í analyzovat selhání při 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. Aktivuje 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: