Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s Linuxem ✔️
Důležité
Příkaz spravovaného spuštění je momentálně k dispozici v Azure CLI, PowerShellu a rozhraní API. Funkce portálu jsou v plánu.
Funkce Spustit příkaz používá agenta virtuálního počítače ke spouštění skriptů na virtuálním počítači Azure s Linuxem. Tyto skripty můžete použít k obecné správě počítačů nebo aplikací. Můžou vám pomoct rychle diagnostikovat a opravovat problémy s přístupem k virtuálním počítačům a sítí a získat virtuální počítač zpět do dobrého stavu.
Aktualizovaný spravovaný příkaz spustit používá ke spouštění skriptů stejný kanál agenta virtuálního počítače a poskytuje následující vylepšení oproti původnímu příkazu run orientovanému na akci:
- Podpora aktualizované funkce Spustit příkaz prostřednictvím šablony nasazení ARM
- Paralelní spouštění více skriptů
- Sekvenční spouštění skriptů
- Časový limit skriptu zadaný uživatelem
- Podpora dlouho běžících skriptů (hodiny/dny)
- Zabezpečené předávání tajných kódů (parametry, hesla)
Požadavky
Důležité
Minimálně podporovaná verze Linux Guest Agenta je 2.4.0.2. Starší verze nepodporují spravovaný příkaz "Run Command." Další informace najdete v tématu Řešení známých problémů.
Podporovaná distribuce Linuxu
| Vydavatel | Distribuce | x64 | ARM64 |
|---|---|---|---|
| Komunita Alma Linuxu | Alma Linux | 8.x+, 9.x+ | 8.x+, 9.x+ |
| Credativ | Debian | více než 10 | 11.x+ |
| Kinvolk | Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
| Microsoft | Azure Linux | 2.x | 2.x |
| openSUSE Project | openSUSE | 12.3+ | Nepodporováno |
| Oracle | Oracle Linux | 6.4+, 7.x+, 8.x+ | Nepodporováno |
| Red Hat | Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+, 9.x+, 10.x+ | 8.6+, 9.0+, 10.x+ |
| CIQ | Rocky Linux | 9.x+ | 9.x+ |
| SUSE | SLES | 12.x+, 15.x+ | 15.x SP4+ |
| Canonical | Ubuntu (verze LTS) | 18.04+, 20.04+, 22.04+, 24.04+ | 20.04+, 22.04+, 24.04+ |
Dostupné příkazy
| CommandID | Popis |
|---|---|
| RunShellScript | Spustí skript linuxového prostředí. |
| ifconfig | Získá konfiguraci všech síťových rozhraní. Informace o použití najdete v tématu Spouštění skriptů. |
Poznámka:
Id výše uvedených příkazů se vztahují na spravované příkazy spuštění pro virtuální počítače s Linuxem. Pomocí příkazu "Get-AzVMRunCommandDocument -Location {RegionName}" můžete zobrazit seznam všech ID příkazů.
Omezení přístupu k funkci Spustit příkaz
Výpis příkazů spuštění nebo zobrazení podrobností příkazu vyžaduje Microsoft.Compute/locations/runCommands/read oprávnění na úrovni předplatného. Předdefinovaná role Čtenář a vyšší úrovně mají toto oprávnění.
Spuštění příkazu vyžaduje Microsoft.Compute/virtualMachines/runCommand/write oprávnění. Role Přispěvatel virtuálních počítačů a vyšší úrovně mají toto oprávnění.
Můžete použít některou z předdefinovaných rolí nebo vytvořit vlastní roli pro použití příkazu Spustit.
Azure CLI (příkazový řádek nástroje Azure)
Následující příklady používají příkaz az vm run-command ke spuštění skriptu prostředí na virtuálním počítači Azure s Linuxem.
Spuštění skriptu s virtuálním počítačem
Tento příkaz doručí skript do virtuálního počítače, spustí ho a vrátí zachycený výstup.
az vm run-command create --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --script "echo Hello World!"
Výpis všech nasazených prostředků RunCommand na virtuálním počítači
Tento příkaz vrátí úplný seznam dříve nasazených příkazů Spustit spolu s jejich vlastnostmi.
az vm run-command list --vm-name "myVM" --resource-group "myRG"
Získání stavu spuštění a výsledků
Tento příkaz načte aktuální průběh provádění, včetně nejnovějšího výstupu, počátečního a koncového času, ukončovacího kódu a stavu terminálu spuštění.
az vm run-command show --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --expand instanceView
Poznámka:
Pole výstupu a chyby v instanceView je omezeno na poslední 4 kB.
Pokud chcete získat přístup k úplnému výstupu a chybě, máte možnost přesměrovat výstupní a chybová data do přírůstkového blobového úložiště pomocí parametrů -outputBlobUri a -errorBlobUri při používání příkazu Run s Set-AzVMRunCommand nebo Set-AzVMssRunCommand.
Odstranění prostředku RunCommand z virtuálního počítače
Odeberte dříve nasazený prostředek RunCommand na virtuální počítač. Pokud probíhá provádění skriptu, bude provádění ukončeno.
az vm run-command delete --name "myRunCommand" --vm-name "myVM" --resource-group "myRG"
PowerShell
Spuštění skriptu s virtuálním počítačem
Tento příkaz doručí skript do virtuálního počítače, spustí ho a vrátí zachycený výstup.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
Spuštění skriptu na virtuálním počítači pomocí parametru SourceScriptUri
OutputBlobUri a ErrorBlobUri jsou volitelné parametry.
Set-AzVMRunCommand -ResourceGroupName -VMName -RunCommandName -SourceScriptUri “< SAS URI of a storage blob with read access or public URI>" -OutputBlobUri “< SAS URI of a storage append blob with read, add, create, write access>” -ErrorBlobUri “< SAS URI of a storage append blob with read, add, create, write access>”
Spuštění dlouhotrvajícího příkazu na virtuálním počítači
Doba provádění by měla běžet déle než výchozí časový limit 90 minut. Měl by běžet po dobu 100 minut (s odkazem na 6 000 sekund – parametr -TimeoutInSecond), pokud se očekává, že skript poběží tak dlouho. Po 100 minutách by se mělo spuštění skriptu zastavit.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Výpis všech nasazených prostředků RunCommand na virtuálním počítači
Tento příkaz vrátí úplný seznam dříve nasazených příkazů Spustit spolu s jejich vlastnostmi.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Získání stavu spuštění a výsledků
Tento příkaz načte aktuální průběh provádění, včetně nejnovějšího výstupu, počátečního a koncového času, ukončovacího kódu a stavu terminálu spuštění.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand instanceView
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači pomocí SourceScriptURI (SAS URL úložiště blobů)
Vytvořte nebo aktualizujte příkaz 'Run Command' na virtuálním počítači s Windows pomocí adresy SAS URL objektu blob úložiště, který obsahuje skript PowerShell.
SourceScriptUri může to být úplná adresa URL SAS objektu blob úložiště nebo veřejná adresa URL.
Poznámka:
Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS se dají vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken, vaše adresa URL SAS = "adresa URL základního objektu blob" + "?" + "token SAS z New-AzStorageBlobSASToken"
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptURI>
Získání zobrazení instance příkazu Spustit pro virtuální počítač po vytvoření nebo aktualizaci příkazu Spustit
Získejte příkaz Spustit pro virtuální počítač se zobrazením instance. Zobrazení instance obsahuje stav spuštění příkazu Spustit (úspěšné, neúspěšné atd.), ukončovací kód, standardní výstup a standardní chybu vygenerovanou spuštěním skriptu pomocí příkazu Spustit. Nenulový exitCode indikuje neúspěšné spuštění.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Očekávaný výstup:
ExecutionState : Succeeded
ExecutionMessage :
ExitCode : 0
Output :
output : uid=0(root) gid=0(root) groups=0(root)
HelloWorld
Error :
StartTime : 10/27/2022 9:10:52 PM
EndTime : 10/27/2022 9:10:55 PM
Statuses :
InstanceView.ExecutionState -Stav spustitelného příkazu uživatele. V tomto stavu zjistíte, jestli byl váš skript úspěšný nebo ne.
ProvisioningState – Stav koncového nastavení obecného zřizování rozšíření (jestli platforma rozšíření mohla aktivovat skript spustit příkaz, nebo ne).
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači pomocí SourceScriptu (text skriptu)
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači, který předává obsah skriptu přímo do parametru -SourceScript. Slouží ; k oddělení více příkazů.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači pomocí SourceCommandId
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači pomocí existujícího commandIdprostředí . Dostupné ID příkazů lze načíst pomocí Get-AzVMRunCommandDocument.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId ipconfig
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači pomocí OutputBlobUri a ErrorBlobUri ke streamování standardního výstupu a standardních chybových zpráv do výstupních a chybových append objektů blob.
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači a streamujte standardní výstup a standardní chybové zprávy do výstupních a chybových blobů typu Append.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -OutputBlobUri <OutputBlobUri> -ErrorBlobUri <errorbloburi>
Poznámka:
Výstupní a chybové objekty blob musí být typu AppendBlob a jejich adresy URL SAS musí poskytovat přístup ke čtení, připojení, vytvoření, zápisu do objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Pokud výstupní ani chybový blob neexistuje, vytvoří se blob typu AppendBlob. Adresy URL SAS se dají vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken, adresa URL SAS se rovná adrese URL základního objektu blob plus "?" plus token SAS z New-AzStorageBlobSASToken.
Vytvoření nebo aktualizace příkazu Spustit na virtuálním počítači, spuštění příkazu Spustit jako jiného uživatele pomocí parametrů RunAsUser a RunAsPassword
Vytvořte nebo aktualizujte příkaz Spustit na virtuálním počítači, spusťte příkaz Spustit jako jiný uživatel s použitím RunAsUser a RunAsPassword parametry. Aby služba RunAs fungovala správně, obraťte se na správce virtuálního počítače a ujistěte se, že je na virtuálním počítači přidaný uživatel, má uživatel přístup k prostředkům, ke které přistupuje příkaz Spustit (adresáře, soubory, síť atd.) a v případě virtuálního počítače s Windows je na virtuálním počítači spuštěná služba Sekundární přihlášení.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP EastUS2EUAP -SourceScriptUri <SourceScriptUri> -RunAsUser myusername -RunAsPassword mypassword
Vytvořte nebo aktualizujte příkaz Spustit na prostředku škálovací sady virtuálních počítačů pomocí identifikátoru SourceScriptUri (adresa URL SAS objektu blob úložiště).
Vytvořte nebo aktualizujte příkaz Spustit (Run Command) na prostředku škálovací sady virtuálních počítačů pomocí SAS URL objektu blob úložiště, který obsahuje skript Bash.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Poznámka:
Poznámka: Adresa URL SAS musí poskytovat přístup pro čtení k objektu blob. Pro adresu URL SAS se navrhuje doba vypršení platnosti 24 hodin. Adresy URL SAS se dají vygenerovat na webu Azure Portal pomocí možností objektu blob nebo tokenu SAS pomocí New-AzStorageBlobSASToken. Pokud generujete token SAS pomocí New-AzStorageBlobSASToken, adresa URL SAS = adresa URL základního objektu blob + "?" + token SAS z New-AzStorageBlobSASToken.
Vytvoření nebo aktualizace příkazu Run na instanci virtuálního počítače pomocí parametrů Parameter a ProtectedParameter (veřejné a chráněné parametry pro skript)
$PublicParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam1';value='publicParam1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam2';value='publicParam2value'})
$ProtectedParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret1';value='secret1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret2';value='secret2value'})
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -Parameter $PublicParametersArray -ProtectedParameter $ProtectedParametersArray
Umožňuje ProtectedParameter předávat jakékoli citlivé vstupy do skriptu, jako jsou hesla, klíče atd.
- Windows: Parametry a chráněné parametry (ProtectedParameters) se předávají skriptu jako argumenty a skript se spustí takto:
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value - Linux: Pojmenované parametry a jeho hodnoty jsou nastaveny na konfiguraci prostředí, která by měla být přístupná v rámci
.shskriptu. Pro argumenty bez názvů předejte prázdný řetězec pro zadání názvu. Argumenty bez názvů se předávají skriptu a spustí se takto:myscript.sh publicParam1value publicParam2value secret1value secret2value
Odstranění prostředku RunCommand z virtuálního počítače
Odeberte dříve nasazený prostředek RunCommand na virtuální počítač. Pokud provádění skriptu stále probíhá, provádění se ukončí.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
REST API
Pokud chcete nasadit nový příkaz Spustit, spusťte na virtuálním počítači příkaz PUT přímo a zadejte jedinečný název instance příkazu Run Command.
PUT /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
{
"location": "<location>",
"properties": {
"source": {
"script": "Write-Host Hello World!",
"scriptUri": "<SAS URI of a storage blob with read access or public URI>",
"commandId": "<Id>"
},
"parameters": [
{
"name": "param1",
"value": "value1"
},
{
"name": "param2",
"value": "value2"
}
],
"protectedParameters": [
{
"name": "secret1",
"value": "value1"
},
{
"name": "secret2",
"value": "value2"
}
],
"runAsUser": "userName",
"runAsPassword": "userPassword",
"timeoutInSeconds": 3600,
"outputBlobUri": "< SAS URI of a storage append blob with read, add, create, write access>",
"errorBlobUri": "< SAS URI of a storage append blob with read, add, create, write access >"
}
}
Poznámky
- Jako vstupní zdroj můžete zadat vložený skript, identifikátor URI skriptu nebo PŘEDdefinované ID příkazu skriptu. Skript URI je buď SAS URI úložného blobu s přístupem pro čtení, nebo veřejné URI.
- Pro spuštění jednoho příkazu je podporován pouze jeden typ zdrojového vstupu.
- Příkaz Spustit podporuje záznam výsledků a chyb do objektů blob úložiště pomocí parametrů outputBlobUri a errorBlobUri, které lze použít k ukládání velkých výstupů skriptu. Použijte SAS URI objektu blob pro připojování v úložišti s přístupem ke čtení, přidání, vytvoření a zápisu. Blob by měl být typu AppendBlob. Zápis výstupu skriptu nebo chybového bloku by jinak selhal. Blob se přepíše, pokud už existuje. Pokud neexistuje, vytvoří se.
Výpis spuštěných instancí příkazu Spustit na virtuálním počítači
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2019-12-01
Získejte podrobnosti o výstupu pro konkrétní nasazení příkazu „Run Command“
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?$expand=instanceView&api-version=2019-12-01
Odstraňte konkrétní nasazení příkazu Spustit
Odstranění instance příkazu Spustit
DELETE /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2019-12-01
Nasazení skriptů v seřazené sekvenci
K postupnému nasazení skriptů použijte šablonu nasazení a určete dependsOn vztah mezi sekvenčními skripty.
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"secondRunCommand",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":<full resourceID of the previous other Run Command>,
"properties":{
"source":{
"script":"echo Hello World!"
},
"timeoutInSeconds":60
}
}
Spouštět několik příkazů postupně
Pokud ve výchozím nastavení nasadíte více prostředků RunCommand pomocí šablony nasazení, spustí se na virtuálním počítači současně. Pokud máte závislost na skriptech a upřednostňovaném pořadí provádění, můžete tuto vlastnost použít dependsOn k jejich postupnému spuštění.
V tomto příkladu secondRunCommand se spustí po firstRunCommand.
{
"$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion":"1.0.0.0",
"resources":[
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/firstRunCommand')]",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
],
"properties":{
"source":{
"script":"echo First: Hello World!"
},
"parameters":[
{
"name":"param1",
"value":"value1"
},
{
"name":"param2",
"value":"value2"
}
],
"timeoutInSeconds":20
}
},
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/secondRunCommand')]",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'),'runcommands/firstRunCommand')]"
],
"properties":{
"source":{
"scriptUri":"http://github.com/myscript.ps1"
},
"timeoutInSeconds":60
}
}
]
}
Řešení známých problémů
Nepodporovaná verze agenta hosta Linuxu
Problém: Pokud nasadíte virtuální počítač se spravovaným příkazem Spustit, pokud je agent hosta Linuxu verze 2.4.0.1 nebo starší, spravovaný příkaz Spustit se nespustí.
Příčina: Příkaz spravovaného spuštění vyžaduje Linuxový hostitelský agent verze 2.4.0.2 nebo novější pro instalaci a spuštění.
Zmírnění: Než použijete spravovaný příkaz Run Command, upgradujte agenta hosta Linuxu na verzi 2.4.0.2 nebo novější. Alternativně můžete použít obraz, který již obsahuje integrovaného Linux Guest Agenta verze 2.4.0.2 nebo novější.
Pokud chcete zkontrolovat verzi agenta hosta Linuxu, spusťte:
az vm get-instance-view --resource-group $RGName$ --name $VMName$ --subscription $SUBSCRIPTION --query 'instanceView.vmAgent.vmAgentVersion'
Další kroky
Další informace o dalších způsobech vzdáleného spouštění skriptů a příkazů na virtuálním počítači najdete v tématu Spouštění skriptů na virtuálním počítači s Linuxem.