Szkriptek futtatása Linux rendszerű virtuális gépen parancsfuttatási műveletek használatával

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.

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.

Juttatások

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+
CentOS 7.x+, 8.x+ 7.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+
Sziklás 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.

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ó.

Parancsszkript kimenetének futtatása

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.