Přehled aplikací virtuálních počítačů

Aplikace virtuálních počítačů jsou typem prostředku v Galerii výpočetních prostředků Azure (dříve označované jako Galerie sdílených imagí), která zjednodušuje správu, sdílení a globální distribuci aplikací pro vaše virtuální počítače.

I když můžete vytvořit image virtuálního počítače s předinstalovanými aplikacemi, budete muset aktualizovat image pokaždé, když budete mít změny aplikace. Oddělení instalace aplikace od imagí virtuálních počítačů znamená, že není potřeba publikovat novou image pro každý řádek změny kódu.

Balíčky aplikací poskytují výhody oproti jiným metodám nasazení a balení:

  • Aplikace virtuálních počítačů mají podporu pro zásady Azure

  • Seskupování a správa verzí balíčků

  • Aplikace virtuálních počítačů se dají globálně replikovat tak, aby se blížily vaší infrastruktuře, takže nemusíte ke kopírování bitů napříč oblastmi Azure používat AzCopy ani jiné mechanismy kopírování úložiště.

  • Sdílení s ostatními uživateli prostřednictvím řízení přístupu na základě role v Azure (RBAC)

  • Podpora virtuálních počítačů a flexibilních i jednotných škálovacích sad

  • Pokud máte na virtuálním počítači nebo škálovací sadě použitá pravidla skupiny zabezpečení sítě (NSG), nemusí být stahování balíčků z internetového úložiště možné. A s účty úložiště by stahování balíčků na uzamčené virtuální počítače vyžadovalo nastavení privátních propojení.

  • Podpora objektů blob bloku: Tato funkce umožňuje efektivně zpracovávat velké soubory tím, že je rozdělí na menší a spravovatelné bloky. Ideální pro nahrávání velkých objemů dat, streamování a nahrávání na pozadí.

Co jsou balíčky aplikací virtuálních počítačů?

Balíčky aplikací virtuálních počítačů používají více typů prostředků:

Prostředek Popis
Galerie výpočetních prostředků Azure Galerie je úložiště pro správu a sdílení balíčků aplikací. Uživatelé můžou sdílet prostředek galerie a všechny podřízené prostředky se sdílejí automaticky. Název galerie musí být v rámci předplatného jedinečný. Můžete mít například jednu galerii k uložení všech imagí operačního systému a jiné galerie pro uložení všech aplikací virtuálních počítačů.
Aplikace virtuálního počítače Definice aplikace virtuálního počítače Jedná se o logický prostředek, který ukládá společná metadata pro všechny verze v něm. Můžete mít například definici aplikace pro Apache Tomcat a mít v ní více verzí.
Verze aplikace virtuálního počítače Nasaditelný prostředek. Verze aplikací virtuálních počítačů můžete globálně replikovat do cílových oblastí blíže k infrastruktuře virtuálních počítačů. Verze aplikace virtuálního počítače se musí replikovat do oblasti, aby mohla být nasazena na virtuálním počítači v této oblasti.

Omezení

  • Maximálně 3 repliky na oblast: Při vytváření verze aplikace virtuálního počítače je maximální počet replik na oblast tři.

  • Úložiště s veřejným přístupem nebo identifikátorem URI SAS s oprávněním ke čtení: Účet úložiště musí mít přístup na veřejné úrovni nebo použít identifikátor URI SAS s oprávněním ke čtení, protože jiné úrovně omezení selžou nasazení.

  • Opakování neúspěšných instalací: Jediným způsobem, jak opakovat neúspěšnou instalaci, je odebrat aplikaci z profilu a pak ji přidat zpět.

  • Na virtuální počítač může být nasazeno maximálně 25 aplikací: Na virtuální počítač se nesmí v žádném okamžiku nasazovat více než 25 aplikací.

  • Velikost aplikace 2 GB: Maximální velikost souboru verze aplikace je 2 GB.

  • Žádné záruky při restartování ve skriptu: Pokud váš skript vyžaduje restartování, doporučujeme umístit tuto aplikaci jako poslední během nasazení. I když se kód pokusí zpracovat restartování, může selhat.

  • Vyžaduje agenta virtuálního počítače: Agent virtuálního počítače musí na virtuálním počítači existovat a může přijímat cílové stavy.

  • Více verzí stejné aplikace na stejném virtuálním počítači: Na virtuálním počítači nemůžete mít více verzí stejné aplikace.

  • Operace přesunu se v současné době nepodporují: Přesun virtuálních počítačů s aplikacemi virtuálních počítačů do jiných skupin prostředků se v současné době nepodporuje.

Poznámka:

U aplikací Azure Compute a aplikací virtuálních počítačů je možné po replikaci odstranit SAS úložiště.

Náklady

Za používání balíčků aplikací virtuálních počítačů se neúčtují žádné další poplatky, ale účtují se vám následující zdroje informací:

  • Náklady na úložiště při ukládání jednotlivých balíčků a všech replik.
  • Poplatky za výchozí přenos dat sítě za replikaci první verze image ze zdrojové oblasti do replikovaných oblastí. Další repliky se zpracovávají v rámci oblasti, takže se neúčtují žádné další poplatky.

Další informace o výchozích přenosech dat sítě najdete v tématu Ceny šířky pásma.

Aplikace virtuálních počítačů

Prostředek aplikace virtuálního počítače definuje následující informace o vaší aplikaci virtuálního počítače:

  • Galerie výpočetních prostředků Azure, ve které je aplikace virtuálního počítače uložená
  • Název aplikace
  • Podporovaný typ operačního systému, jako je Linux nebo Windows
  • Popis aplikace virtuálního počítače

Verze aplikací virtuálních počítačů

Verze aplikací virtuálních počítačů jsou nasaditelný prostředek. Verze jsou definovány s následujícími vlastnostmi:

  • Číslo verze
  • Propojení se souborem balíčku aplikace v účtu úložiště
  • Instalace řetězce pro instalaci aplikace
  • Odebrání řetězce pro zobrazení správného odebrání aplikace
  • Název souboru balíčku, který se má použít při stažení do virtuálního počítače
  • Název konfiguračního souboru, který se má použít ke konfiguraci aplikace na virtuálním počítači
  • Odkaz na konfigurační soubor pro aplikaci virtuálního počítače, který můžete zahrnout soubory licencí
  • Aktualizační řetězec pro aktualizaci aplikace virtuálního počítače na novější verzi
  • Datum ukončení životnosti. Data ukončení životnosti jsou informativní; Stále můžete nasadit verze aplikací virtuálních počítačů po datu ukončení životnosti.
  • Vyloučit z nejnovější verze Můžete zachovat, aby se verze používala jako nejnovější verze aplikace.
  • Cílové oblasti pro replikaci
  • Počet replik na oblast

Stáhnout adresář

Umístění stahování balíčku aplikace a konfiguračních souborů jsou:

  • Linux: /var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>
  • Windows: C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>

Příkazy install/update/remove by se měly zapsat za předpokladu, že balíček aplikace a konfigurační soubor jsou v aktuálním adresáři.

Pojmenování souborů

Když se soubor aplikace stáhne do virtuálního počítače, přejmenuje se na MyVmApp (bez přípony). Důvodem je to, že virtuální počítač nezná původní název nebo příponu vašeho balíčku. Využívá jediný název, který má, což je samotný název aplikace – MyVmApp.

Tady je několik alternativ pro navigaci v tomto problému:

Skript můžete upravit tak, aby zahrnoval příkaz pro přejmenování souboru před spuštěním:

move .\\MyVmApp .\\MyApp.exe & MyApp.exe /S

Můžete také použít packageFileName vlastnost (a odpovídající configFileName) a dát nám pokyn, co má soubor přejmenovat. Například nastavení na "MyApp.exe" způsobí, že váš instalační skript musí být pouze:

MyAppe.exe /S

Tip

Pokud byl objekt blob původně pojmenován "myApp.exe" místo "myapp", výše uvedený skript by fungoval bez nastavení packageFileName vlastnosti.

Interpret příkazů

Výchozí interprety příkazů jsou:

  • Linux: /bin/bash
  • Windows: cmd.exe

Je možné použít jiný interpret, například Chocolatey nebo PowerShell, pokud je nainstalovaný na počítači, zavoláním spustitelného souboru a předáním příkazu do něj. Pokud například chcete, aby příkaz běžel v PowerShellu ve Windows místo cmd, můžete předat powershell.exe -Command '<powershell commmand>'

Způsob zpracování aktualizací

Když aktualizujete verzi aplikace na virtuálním počítači nebo škálovací sadě virtuálních počítačů, použije se příkaz update, který jste zadali během nasazení. Pokud aktualizovaná verze nemá příkaz update, odebere se aktuální verze a nainstaluje se nová verze.

Příkazy aktualizace by se měly zapisovat s očekáváním, že by se mohly aktualizovat z jakékoli starší verze aplikace virtuálního počítače.

Tipy pro vytváření aplikací virtuálních počítačů v Linuxu

Aplikace třetích stran pro Linux je možné zabalit několika způsoby. Pojďme se podívat, jak zpracovat vytváření instalačních příkazů pro některé z nejběžnějších příkazů.

Soubory .tar a .gz

Tyto soubory jsou komprimované archivy a lze je extrahovat do požadovaného umístění. Projděte si pokyny k instalaci původního balíčku pro případ, že je potřeba je extrahovat do konkrétního umístění. Pokud soubor .tar.gz obsahuje zdrojový kód, přečtěte si pokyny pro balíček, jak nainstalovat ze zdroje.

Příklad instalace příkazu pro instalaci golang na počítač s Linuxem:

sudo tar -C /usr/local -xzf go_linux

Příklad příkazu remove:

sudo rm -rf /usr/local/go

Vytváření balíčků aplikací pomocí .deb.rpma dalších balíčků specifických pro platformu pro virtuální počítače s omezeným přístupem k internetu

Jednotlivé balíčky pro správce balíčků pro konkrétní platformu si můžete stáhnout, ale obvykle neobsahují všechny závislosti. U těchto souborů musíte zahrnout také všechny závislosti v balíčku aplikace nebo nechat správce systémových balíčků stáhnout závislosti prostřednictvím úložišť, která jsou k dispozici pro virtuální počítač. Pokud pracujete s virtuálním počítačem s omezeným přístupem k internetu, musíte všechny závislosti zabalit sami.

Zjištění závislostí může být trochu složité. Existují nástroje třetích stran, které vám můžou ukázat celý strom závislostí.

V Ubuntu můžete spustit sudo apt show <package_name> | grep Depends a zobrazit všechny balíčky, které jsou nainstalovány při spuštění sudo apt-get install <packge_name> příkazu. Tento výstup pak můžete použít ke stažení všech .deb souborů a vytvořit archiv, který se dá použít jako balíček aplikace.

  1. Pokud například chcete vytvořit balíček aplikace virtuálního počítače pro instalaci PowerShellu pro Ubuntu, spusťte nejprve následující příkazy, které umožní úložiště, ze kterého se dá PowerShell stáhnout, a také identifikovat závislosti balíčků na novém virtuálním počítači s Ubuntu.
# Download the Microsoft repository GPG keys
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
# Register the Microsoft repository GPG keys
sudo dpkg -i packages-microsoft-prod.deb
sudo rm -rf packages-microsoft-prod.deb
sudo apt update
sudo apt show powershell | grep Depends
  1. Zkontrolujte výstup řádku , který obsahuje následující balíčky:
Depends: libc6, libgcc1, libgssapi-krb5-2, libstdc++6, zlib1g, libicu72|libicu71|libicu70|libicu69|libicu68|libicu67|libicu66|libicu65|libicu63|libicu60|libicu57|libicu55|libicu52, libssl3|libssl1.1|libssl1.0.2|libssl1.
  1. Stáhněte si každý z těchto souborů pomocí sudo apt-get download <package_name> a vytvořte komprimovaný archiv tar se všemi soubory.
  • Ubuntu 18.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download libgcc1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl1.1
sudo apt-get download libicu60
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 20.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download libgcc1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl1.1
sudo apt-get download libicu66
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  • Ubuntu 22.04:
mkdir /tmp/powershell
cd /tmp/powershell
sudo apt-get download libc6
sudo apt-get download libgcc1
sudo apt-get download libgssapi-krb5-2
sudo apt-get download libstdc++6
sudo apt-get download zlib1g
sudo apt-get download libssl3
sudo apt-get download libicu70
sudo apt-get download powershell
sudo tar -cvzf powershell.tar.gz *.deb
  1. Tento archiv tar je soubor balíčku aplikace.
  • Příkaz install v tomto případě:
sudo tar -xvzf powershell.tar.gz && sudo dpkg -i *.deb
  • A příkaz pro odebrání je:
sudo apt remove powershell

Místo explicitního pokusu o odebrání všech závislostí použijte sudo apt autoremove . Možná jste nainstalovali jiné aplikace s překrývajícími se závislostmi a v takovém případě by příkaz explicitního odebrání selhal.

V případě, že nechcete vyřešit závislosti sami a apt můžete se připojit k úložištím, můžete nainstalovat aplikaci pouze s jedním .deb souborem a nechat apt zpracovat závislosti.

Příklad příkazu install:

dpkg -i <package_name> || apt --fix-broken install -y

Tipy pro vytváření aplikací virtuálních počítačů ve Windows

Většina aplikací třetích stran ve Windows je k dispozici jako instalační programy .exe nebo .msi. Některé jsou také k dispozici jako extrahování a spouštění souborů ZIP. Podívejme se na osvědčené postupy pro každou z nich.

Instalační program .exe

Spustitelné soubory instalačního programu obvykle spouštějí uživatelské rozhraní a vyžadují, aby ho někdo vybral prostřednictvím uživatelského rozhraní. Pokud instalační program podporuje parametr tichého režimu, měl by být součástí instalačního řetězce.

Cmd.exe také očekává spustitelné soubory mít příponu .exe, takže musíte přejmenovat soubor mít příponu .exe .

Pokud chci vytvořit balíček aplikace virtuálního počítače pro myApp.exe, který se dodává jako spustitelný soubor, moje aplikace virtuálního počítače se nazývá myApp, takže za předpokladu, že balíček aplikace je v aktuálním adresáři:

"move .\\myApp .\\myApp.exe & myApp.exe /S -config myApp_config"

Pokud spustitelný soubor instalačního programu nepodporuje parametr odinstalace, můžete někdy vyhledat registr na testovacím počítači, abyste věděli, že se odinstalátor nachází.

V registru je řetězec odinstalace uložen, Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\<installed application name>\UninstallString takže bych jako příkaz pro odebrání použil obsah:

'\"C:\\Program Files\\myApp\\uninstall\\helper.exe\" /S'

Instalační program .msi

Pro spuštění instalačního programu příkazového .msi řádku by příkazy k instalaci nebo odebrání aplikace měly použít msiexec. Obvykle se msiexec spouští jako vlastní samostatný proces a cmd nečeká na jeho dokončení, což může vést k problémům při instalaci více než jedné aplikace virtuálního počítače. Příkaz start lze použít msiexec k zajištění dokončení instalace před vrácením příkazu. Příklad:

start /wait %windir%\\system32\\msiexec.exe /i myapp /quiet /forcerestart /log myapp_install.log

Příklad příkazu remove:

start /wait %windir%\\system32\\msiexec.exe /x $appname /quiet /forcerestart /log ${appname}_uninstall.log

Zazipované soubory

U souborů ZIP nebo jiných zazipovaných souborů přejmenujte a rozbalte obsah balíčku aplikace do požadovaného cíle.

Příklad příkazu install:

rename myapp myapp.zip && mkdir C:\myapp && powershell.exe -Command "Expand-Archive -path myapp.zip -destinationpath C:\myapp"

Příklad příkazu remove:

rmdir /S /Q C:\\myapp

Zpracování selhání jako selhání nasazení

Rozšíření aplikace virtuálního počítače vždy vrací úspěch bez ohledu na to, jestli se některá aplikace virtuálního počítače při instalaci, aktualizaci nebo odebrání nezdařila. Rozšíření aplikace virtuálního počítače hlásí stav rozšíření pouze jako selhání, pokud dojde k problému s rozšířením nebo základní infrastrukturou. Toto chování se aktivuje příznakem "považovat selhání za selhání nasazení", který je ve výchozím nastavení nastavený $false na hodnotu a lze ho změnit na $true. Příznak selhání je možné nakonfigurovat v PowerShellu nebo rozhraní příkazového řádku.

Řešení potíží s aplikacemi virtuálních počítačů

Pokud chcete zjistit, jestli se konkrétní aplikace virtuálního počítače úspěšně přidala do instance virtuálního počítače, zkontrolujte zprávu o rozšíření aplikace virtuálního počítače.

Další informace o získání stavu rozšíření virtuálních počítačů najdete v tématu Rozšíření a funkce virtuálních počítačů pro rozšíření a funkce virtuálních počítačů s Linuxem a virtuálními počítači pro Windows.

Pokud chcete získat stav rozšíření virtuálních počítačů, použijte Rutinu Get-AzVM:

Get-AzVM -name <VM name> -ResourceGroupName <resource group name> -Status | convertto-json -Depth 10

Pokud chcete získat stav rozšíření škálovací sady, použijte Rutinu Get-AzVMSS:

$result = Get-AzVmssVM -ResourceGroupName $rgName -VMScaleSetName $vmssName -InstanceView
$resultSummary  = New-Object System.Collections.ArrayList
$result | ForEach-Object {
    $res = @{ instanceId = $_.InstanceId; vmappStatus = $_.InstanceView.Extensions | Where-Object {$_.Name -eq "VMAppExtension"}}
    $resultSummary.Add($res) | Out-Null
}
$resultSummary | convertto-json -depth 5

Chybové zprávy

Message Popis
Aktuální verze aplikace virtuálního počítače {name} byla zastaralá v {date}. Pokusili jste se nasadit verzi aplikace virtuálního počítače, která už byla zastaralá. Zkuste místo zadání konkrétní verze použít latest .
Aktuální verze aplikace virtuálního počítače {name} podporuje operační systém {OS}, zatímco operační systém aktuálního operačního systému operačního systému je {OS}. Pokusili jste se nasadit linuxovou aplikaci do instance Systému Windows nebo naopak.
Byl překročen maximální počet aplikací virtuálních počítačů (max=5, current={count}). Použijte méně aplikací a zkuste požadavek zopakovat. V současné době podporujeme pouze pět aplikací virtuálních počítačů na virtuální počítač nebo škálovací sadu.
Bylo zadáno více než jedna aplikace virtuálního počítače se stejným packageReferenceId. Stejná aplikace byla zadána více než jednou.
Předplatné nemá oprávnění pro přístup k této imagi. Předplatné nemá přístup k této verzi aplikace.
Účet úložiště v argumentech neexistuje. Pro toto předplatné nejsou žádné aplikace.
Image platformy {image} není k dispozici. Ověřte správnost všech polí v profilu úložiště. Další podrobnosti o informacích o profilu úložiště najdete v tématu https://aka.ms/storageprofile. Aplikace neexistuje.
Obrázek galerie {image} není k dispozici v oblasti {region}. Požádejte vlastníka image, aby se replikoval do této oblasti, nebo změňte požadovanou oblast. Verze aplikace galerie existuje, ale nebyla replikována do této oblasti.
Sas není platný pro identifikátor URI zdroje {uri}. Forbidden Při pokusu o načtení informací o adrese URL (mediaLink nebo defaultConfigurationLink) došlo z úložiště k chybě.
Objekt blob odkazovaný zdrojovým identifikátorem URI {uri} neexistuje. Objekt blob zadaný pro vlastnosti mediaLink nebo defaultConfigurationLink neexistuje.
Adresa URL verze aplikace galerie {url} není přístupná kvůli následující chybě: vzdálený název nebyl nalezen. Ujistěte se, že objekt blob existuje a jestli je veřejně přístupný, nebo je to adresa URL SAS s oprávněními ke čtení. Nejpravděpodobnějším případem je, že identifikátor URI SAS s oprávněními ke čtení nebyl zadán.
Adresa URL verze aplikace galerie {url} není přístupná kvůli následující chybě: {error description}. Ujistěte se, že objekt blob existuje a jestli je veřejně přístupný, nebo je to adresa URL SAS s oprávněními ke čtení. Došlo k problému s poskytnutým objektem blob úložiště. Popis chyby obsahuje další informace.
Operace {operationName} není v aplikaci {application} povolená, protože je označená k odstranění. Operaci odstranění můžete opakovat (nebo počkat na dokončení probíhající operace). Pokus o aktualizaci aplikace, která se právě odstraňuje
Hodnota {value} parametru galleryApplicationVersion.properties.publishingProfile.replicaCount je mimo rozsah. Hodnota musí být mezi 1 a třemi včetně. Pro verze aplikací virtuálních počítačů jsou povoleny pouze mezi jednou a třemi replikami.
Změna vlastnosti galleryApplicationVersion.properties.publishingProfile.manageActions.install není povolená. (nebo aktualizovat, odstranit) U existující aplikace VmApplication není možné změnit žádnou z akcí správy. Je nutné vytvořit novou verzi aplikace VmApplication.
Změna vlastnosti galleryApplicationVersion.properties.publishingProfile.settings.packageFileName není povolená. (nebo configFileName) Není možné změnit žádné nastavení, například název souboru balíčku nebo název konfiguračního souboru. Je nutné vytvořit novou verzi aplikace VmApplication.
Objekt blob odkazovaný zdrojovým identifikátorem URI {uri} je příliš velký: velikost = {size}. Maximální povolená velikost objektu blob je 1 GB. Maximální velikost objektu blob odkazujícího na mediaLink nebo defaultConfigurationLink je aktuálně 1 GB.
Objekt blob odkazovaný zdrojovým identifikátorem URI {uri} je prázdný. Byl odkazován na prázdný objekt blob.
{type} typ objektu blob není pro operaci {operation} podporovaný. Podporují se jenom objekty blob stránky a objekty blob bloku. Aplikace VmApplications podporuje pouze objekty blob stránky a objekty blob bloku.
Sas není platný pro identifikátor URI zdroje {uri}. Identifikátor URI SAS zadaný pro mediaLink nebo defaultConfigurationLink není platným identifikátorem URI SAS.
V cílových oblastech nelze zadat {region}, protože chybí požadovaná funkce {featureName}. Buď zaregistrujte své předplatné s požadovanou funkcí, nebo odeberte oblast ze seznamu cílových oblastí. Pokud chcete používat VmApplications v určitých omezených oblastech, musí mít příznak funkce zaregistrovaný pro toto předplatné.
Oblasti profilu publikování imagí galerie {regions} musí obsahovat umístění verze image {location}. Seznam oblastí pro replikaci musí obsahovat umístění, ve kterém je verze aplikace.
V cílových oblastech publikování nejsou povolené duplicitní oblasti. Oblasti publikování nemusí mít duplicity.
Prostředky verze aplikace galerie v současné době nepodporují šifrování. Vlastnost šifrování pro cílové oblasti není pro aplikace virtuálních počítačů podporovaná.
Název entity neodpovídá názvu v adrese URL požadavku. Verze aplikace galerie zadaná v adrese URL požadavku neodpovídá verzi zadané v textu požadavku.
Název verze aplikace galerie je neplatný. Název verze aplikace by měl následovat po major (int32). Minor(int32). Formát Patch(int32), kde int je mezi 0 a 2 147 483 647 (včetně). Například 1.0.0, 2018.12.1 atd. Verze aplikace galerie musí odpovídat zadanému formátu.

Další kroky