Szkriptek futtatása Linux rendszerű virtuális gépen parancsfuttatási műveletek használatával
A következőkre vonatkozik: ✔️ Linux rendszerű virtuális gépek rugalmas méretezési ✔️ csoportjai
A Parancs futtatása funkció a virtuálisgép-ügynök segítségével futtatja a héjszkripteket az Azure-beli linuxos virtuális gépeken. Ezeket a szkripteket a gépek vagy alkalmazások általános kezelésére használhatja. Segíthetnek a virtuális gépek hozzáférésével és hálózatával kapcsolatos problémák gyors diagnosztizálásában és elhárításában, valamint a virtuális gép megfelelő állapotba helyezésében.
Előnyök
A virtuális gépek többféleképpen is elérhetők. A Run Command távolról is futtathat szkripteket a virtuális gépeken a virtuálisgép-ügynök használatával. A Futtatás parancsot az Azure Portalon, a REST API-on vagy az Azure CLI-on keresztül használhatja Linux rendszerű virtuális gépekhez.
Ez a funkció minden olyan forgatókönyvben hasznos, ahol szkriptet szeretne futtatni egy virtuális gépen. Ez az egyetlen módszer olyan virtuális gépek hibaelhárítására és szervizelésére, amelyeknél nincs megnyitva az RDP- vagy SSH-port a hálózati vagy rendszergazdai felhasználói konfiguráció miatt.
Előfeltételek
Linux disztribúció támogatott
Linux-disztribúció | x64 | ARM64 |
---|---|---|
Alma Linux | 9.x+ | 9.x+ |
Debian | 10+ | 11.x+ |
Flatcar Linux | 3374.2.x+ | 3374.2.x+ |
Azure Linux | 2.x | 2.x |
openSUSE | 12.3+ | Nem támogatott |
Oracle Linux | 6.4+, 7.x+, 8.x+ | Nem támogatott |
Red Hat Enterprise Linux | 6.7+, 7.x+, 8.x+ | 8.6+, 9.0+ |
Rocky Linux | 9.x+ | 9.x+ |
SLES | 12.x+, 15.x+ | 15.x SP4+ |
Ubuntu | 18.04+, 20.04+, 22.04+ | 20.04+, 22.04+ |
Korlátozások
Az alábbi korlátozások érvényesek parancs futtatásakor:
- A kimenet csak az utolsó 4096 bájtra korlátozódik.
- A szkriptek futtatásához szükséges minimális idő körülbelül 20 másodperc.
- A szkriptek alapértelmezés szerint rendszergazdai jogú felhasználóként futnak Linuxon.
- Egyszerre egy szkriptet is futtathat.
- Az információt kérő szkriptek (interaktív mód) nem támogatottak.
- A szkriptek futását nem lehet megszakítani.
- Egy szkript futásideje legfeljebb 90 perc lehet. Ezután a szkript időtúllépést fog végrehajtani.
- A szkript eredményeinek visszaadásához kimenő kapcsolat szükséges a virtuális gép felől.
Feljegyzés
A helyes működéshez a parancs futtatásához csatlakoztatni kell a (443-as portot) az Azure nyilvános IP-címéhez. Ha a bővítmény nem rendelkezik hozzáféréssel ezekhez a végpontokhoz, előfordulhat, hogy a szkriptek sikeresen futnak, de nem adnak vissza eredményeket. Ha blokkolja a virtuális gép forgalmát, szolgáltatáscímkék használatával engedélyezheti az Azure nyilvános IP-címeinek forgalmát a AzureCloud
címke használatával.
Elérhető parancsok
Ez a táblázat a Linux rendszerű virtuális gépekhez elérhető parancsok listáját tartalmazza. A RunShellScript paranccsal bármilyen egyéni szkriptet futtathat. Amikor az Azure CLI-t vagy a PowerShellt használja egy parancs futtatásához, a megadott --command-id
értéknek vagy -CommandId
paraméternek az alábbi értékek egyikének kell lennie. Ha olyan értéket ad meg, amely nem érhető el, a következő hibaüzenet jelenik meg:
The entity was not found in this Azure location
Név | Leírás |
---|---|
RunShellScript | Linux rendszerhéjszkriptet futtat. |
ifconfig | Lekéri az összes hálózati adapter konfigurációját. |
Azure CLI
Az alábbi példa az az vm run-command paranccsal futtat egy rendszerhéjszkriptet egy Azure Linux rendszerű virtuális gépen.
az vm run-command invoke -g myResourceGroup -n myVm --command-id RunShellScript --scripts "apt-get update && apt-get install -y nginx"
Feljegyzés
Ha más felhasználóként szeretne parancsokat futtatni, adjon sudo -u
meg egy felhasználói fiókot.
Azure Portal
Lépjen egy virtuális gépre az Azure Portalon, és válassza a Futtatás parancsot a bal oldali menü Műveletek területén. Megjelenik a virtuális gépen futtatandó elérhető parancsok listája.
Válasszon egy futtatandó parancsot. Egyes parancsok opcionális vagy kötelező bemeneti paraméterekkel rendelkezhetnek. Ezeknél a parancsoknál a paraméterek szövegmezőkként jelennek meg a bemeneti értékek megadásához. Minden parancshoz megtekintheti a futtatott szkriptet a View szkript kibontásával. A RunShellScript eltér a többi parancstól, mivel lehetővé teszi saját egyéni szkriptek megadását.
Feljegyzés
A beépített parancsok nem szerkeszthetők.
Miután kiválasztotta a parancsot, válassza a Futtatás lehetőséget a szkript futtatásához. A szkript befejeződése után visszaadja a kimenetet és a kimeneti ablakban megjelenő hibákat. Az alábbi képernyőképen az ifconfig parancs futtatásából származó példakimenet látható.
PowerShell
Az alábbi példa az Invoke-AzVMRunCommand parancsmaggal futtat egy PowerShell-szkriptet egy Azure-beli virtuális gépen. A parancsmag elvárja, hogy a paraméterben -ScriptPath
hivatkozott szkript helyi legyen a parancsmag futtatásának helyéhez.
Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}
A Parancs futtatása funkcióhoz való hozzáférés korlátozása
A futtatási parancsok felsorolásához vagy egy parancs részleteinek megjelenítéséhez előfizetési Microsoft.Compute/locations/runCommands/read
szintű engedély szükséges. A beépített olvasói szerepkör és a magasabb szintek rendelkeznek ezzel az engedéllyel.
A parancs futtatásához engedély Microsoft.Compute/virtualMachines/runCommands/write
szükséges. A virtuálisgép-közreműködői szerepkör és a magasabb szintek rendelkeznek ezzel az engedéllyel.
A parancs futtatásához használhatja az egyik beépített szerepkört, vagy létrehozhat egy egyéni szerepkört.
Műveletfuttatási parancs – Linux hibaelhárítás
A Linux-környezetek műveletfuttatási parancsának hibaelhárítása során további részletekért tekintse meg a jellemzően a következő könyvtárban /var/log/azure/run-command-handler/handler.log
található kezelő naplófájlt.
Ismert problémák
A Linux-műveletfuttatási parancsnaplók néhány jelentős különbséget mutatnak a windowsos műveletfuttatási parancsnaplókhoz képest:
- A rendszer a napló minden sorával "seq=#" néven jelenti a sorszámot.
- Nem lesz olyan sor, amely tartalmazna
Awaiting completion...
, mivel ez csak a Windows parancs futtatásával működik. - A sor
Command existed with code: #
is csak a műveletfuttatási parancs windowsos naplózásában jelenik meg.
Műveletfuttatási parancs eltávolítása
Ha el kell távolítania a műveletfuttatási parancs Linux-bővítményét, tekintse meg az Azure PowerShell és a parancssori felület alábbi lépéseit:
Az alábbi eltávolítási példákban cserélje le az rgname és a vmname nevet a megfelelő erőforráscsoport- és virtuálisgép-névre.
Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandLinuxExtension'
az vm run-command invoke --command-id RemoveRunCommandLinuxExtension --name vmname -g rgname
Feljegyzés
Amikor ismét futtatási parancsot alkalmaz, a bővítmény automatikusan települ. A bővítményeltávolítási paranccsal elháríthatja a bővítménysel kapcsolatos problémákat.
Következő lépések
A szkriptek és parancsok távoli futtatásának egyéb módjairól a Linux rendszerű virtuális gépen futó szkriptek futtatása című témakörben olvashat.