Parancsok futtatása több Linux gépen a PSSH használatával

Biztos vagyok benne, hogy hallottátok, hogy manapság az összes menő gyerek játszik a hangszerelés automatizálásával. De tudod miért? Először is, a modern mikroszolgáltatások munkaterhelései által felhasznált erőforrások egyre bonyolultabbá válnak, és sokkal több példányban alkalmazhatók, mint valaha. Másodszor, ezeknek az erőforrásoknak egyre több virtuális és nem fizikai - így sok közülük csak percekig vagy akár másodpercekig is létezik.

Mindez azt jelenti, hogy még akkor sem lenne értelme, ha be szeretne jelentkezni a sok kiszolgáló mindegyikébe. Valójában a legtöbb esetben ez nem is lehetséges. Ehelyett sok okos szkriptet fogsz futtatni. Az ilyen típusú szkriptek futtatásához használt eszközöket általában orchestratoroknak nevezik.

Biztos vagyok benne, hogy találkozott legalább egy vagy két taggal a hangszerelési klubban. Az Ansible mellett ott van a Terraform, a Chef, a Báb és mások. De vannak olyan alacsonyabb szintű eszközök is, amelyek kiegészítésként működnek az alapvető Linux eszközökhöz, például az SSH-hoz. Annak ellenére, hogy látom, hogyan fog natívan futni a Windows-on és természetesen a macOS-on, nem vagyok biztos benne, hogy egészen helyes-e az SSH-t tovább "Linux" eszköznek nevezni.

Az egyik ilyen SSH kiegészítő a pssh nevű eszközkészlet, amely a Parallel SSH rövidítést jelenti. Erről fogunk tanulni ebben a cikkben - amely az új Pluralsight tanfolyamomból, a Linux rendszeroptimalizálásból van kivonatolva.

Most azonban elmondok egy kicsit az általam használt laboratóriumról, hogy könnyebben reprodukálhassa és kövesse otthon. Három Ubuntu LXD tároló fut. Minden műveletünk alapja az lesz, amelynek IP-címe 10.0.3.140, míg a két gazdagép csomópont, amelyet távolról létesítünk, a 10.0.3.93 és a 10.0.3.43.

Minden, amit meg fogunk tenni, feltételezi, hogy jelszó nélküli SSH hozzáférést kaptunk az alap tárolómtól a két csomóponthoz. Ha nem biztos abban, hogyan kell ezt megtenni, megtekintheti a Protokoll mély merülés: SSH és Telnet tanfolyamom SSH modulját a Pluralsight-on. Ha siet, ez a Red Hat oktatóanyag ugyanarra a helyre vezet.

Telepítése pssh Ubuntu egyszerű és gyors: sudo apt install pssh. Nem lesz nehezebb a CentOS-on.

Létrehoztam egy sshhosts.txt nevű egyszerű gazdagép-állományfájlt, amely nem tartalmaz mást, mint a két csomópontom IP-címét:

$ less sshhosts.txt 10.0.3.93 10.0.3.43 

Most futtatni fogom a pssh parallel-ssh parancsot, hogy egyetlen parancsot hajtsak végre a hosztjaimon.

$ parallel-ssh -i -h sshhosts.txt df -ht ext4 

-i azt mondja a programnak, hogy interaktív módon fusson - különben nem jelenítenénk meg parancskimenetet. -h mutat a hosts fájlra, amelyet sshhosts.txt-nek hívtam. Maga a parancs pedig a régi Unix segédprogram lesz. Ez visszaadja a rendszerhez csatolt meghajtók listáját, azok csatlakozási pontjaival és használati információival együtt. A -h itt az ember által olvasható egységekben jeleníti meg a lemezterületet, a t pedig csak az ext4 formátumú meghajtókra korlátozza a hozzáférést.

Miért érdekel az ext4 üzlet? Mivel az Ubuntu a snap csomagkezelőt használja, és minden egyes snap saját virtuális eszközt hoz létre. És akkor mi van? Nos, nem akarom, hogy körülbelül egy tucat virtuális eszközt kelljen átfésülnöm, amelyek 0 szabad helyet jelentenek, csak azért, hogy eljussak a valódi meghajtókra, amelyek jelentik a tényleges használatot.

$ parallel-ssh -i -h sshhosts.txt df -ht ext4 [1] 22:02:00 [SUCCESS] 10.0.3.43 Filesystem Size Used Avail Use% Mounted on /dev/sda2 457G 131G 304G 30% / [2] 22:02:00 [SUCCESS] 10.0.3.93 Filesystem Size Used Avail Use% Mounted on /dev/sda2 457G 131G 304G 30% / 

És tessék! Teljes lemezterület-információ mindkét csomópontomról. Biztos vagyok benne, hogy észrevette, hogy az információk megegyeznek. Ez azért van, mert ezek mind a munkaállomásomon futó konténerek, tehát tudomásuk szerint mindkettőnek teljes hozzáférése van a saját meghajtómhoz.

A következő trükkömhöz minden csomópontomból összegyűjtem az / etc / group fájlokat. Ez a fajta művelet hasznos lehet a csomópontok biztonsági állapotának gyors ellenőrzéséhez. Hozzáadhat egy szkriptet, amely elemzi a bejövő adatokat, és figyelmeztet, ha bármilyen rendellenesség van.

Mielőtt elkezdeném, létrehozok egy helyileg könyvtárat, host-fájloknak. Akkor használom a parallel-slurpparancsot - amelynek neve csodálatosan leírja a funkcióját. Ismét a -h a gazdagép fájlra mutat. A -Lhost-files könyvtárat állítja be a létrehozandó adatok megírásának célhelyeként, /etc/groupez a távoli fájl, amelyet fel akarunk csúsztatni, és groupaz a név, amelyet helyileg szeretnénk hozzárendelni az adatokhoz.

mkdir host-files parallel-slurp -h sshhosts.txt -L host-files/ /etc/group group 

Ha ez elkészült, a gazdagépfájlok könyvtárában minden alcsomópont IP-címe alapján elnevezett alkönyvtárak lesznek. Mint látható, van egy "csoport" nevű fájl, amely az egyes csomópontok / etc / group adatait tartalmazza.

$ tree host-files/ host-files/ ├── 10.0.3.43 │   └── group └── 10.0.3.93 └── group 

Jön-e a pssh-vel más csemege is? Aha. A futás pedig aproposmegadja neked a teljes listát.

$ apropos parallel parallel-nuke (1) - parallel process kill program parallel-rsync (1) - parallel process kill program parallel-scp (1) - parallel process kill program parallel-slurp (1) - parallel process kill program parallel-ssh (1) - parallel ssh program 

Ez a cikk a Pluralsight tanfolyamom "Linux rendszeroptimalizálás" tartalmán alapul. Sokkal több adminisztrációs jóság érhető el könyvek, tanfolyamok és cikkek formájában, amelyek elérhetőek a bootstrap-it.com oldalon.