Kaip paleisti komandas keliuose „Linux“ kompiuteriuose naudojant PSSH

Esu tikras, kad girdėjote, jog visi šaunūs vaikai šiais laikais žaidžia orkestravimo automatiką. Bet ar žinote kodėl? Pirmiausia, resursai, kuriuos sunaudoja šiuolaikinės mikroservisų darbo apkrovos, tampa daug sudėtingesni ir pritaikomi kur kas daugiau atvejų nei bet kada anksčiau. Antra, vis daugiau tų išteklių yra virtualūs, o ne fiziniai - tiek daug jų egzistuos tik kelias minutes ar net sekundes.

Visa tai reiškia, kad net jei norėtumėte prisijungti prie kiekvieno iš savo daugelio serverių, tai tiesiog nebūtų prasmės. Daugeliu atvejų tai net nebūtų įmanoma. Vietoj to, jūs paleisite daug protingų scenarijų. Įrankiai, kuriuos naudojate paleisdami tokius scenarijus, paprastai vadinami orkestratoriais.

Esu įsitikinęs, kad susidūrėte bent su vienu ar dviem orkestro klubo nariais. Be „Ansible“, yra „Terraform“, „Chef“, „Lėlė“ ir kiti. Tačiau yra ir žemesnio lygio įrankių, kurie veikia kaip priedai prie pagrindinių „Linux“ įrankių, tokių kaip SSH. Nors, matydamas, kaip jis savaime veiks „Windows“ ir, žinoma, „MacOS“, nesu tikras, ar teisinga daugiau vadinti SSH „Linux“ įrankiu.

Vienas iš tų SSH priedų yra įrankių rinkinys, vadinamas pssh - tai reiškia „Parallel SSH“. Apie tai ir sužinosime šiame straipsnyje, kuris ištrauktas iš mano naujojo „Pluralsight“ kurso „Linux System Optimization“.

Tačiau kol kas šiek tiek pasakosiu apie naudojamą laboratoriją, kad galėtumėte lengviau ją atgaminti ir sekti namuose. Turiu tris „Ubuntu LXD“ konteinerius. Visų mūsų operacijų bazė bus ta, kurios IP adresas bus 10.0.3.140, o du prieglobos mazgai, kuriuos mes nuotoliniu būdu priimsime, naudos 10.0.3.93 ir 10.0.3.43.

Viskas, ką darysime, daro prielaidą, kad iš savo pagrindinio konteinerio turime prieigą be slaptažodžių SSH prie kiekvieno iš dviejų mazgų. Jei nežinote, kaip tai padaryti, „Pluralsight“ galite peržiūrėti mano protokolo giluminio nardymo SSH modulį: SSH ir „Telnet“. Jei skubate, ši „Red Hat“ pamoka pateks į tą pačią vietą.

Diegimas pssh Ubuntu yra paprastas ir greitas: sudo apt install pssh. „CentOS“ nėra sunkiau.

Aš sukūriau paprastą pagrindinio kompiuterio inventoriaus failą, pavadintą sshhosts.txt, kuriame yra tik mano dviejų mazgų IP adresai:

$ less sshhosts.txt 10.0.3.93 10.0.3.43 

Dabar aš paleisiu komandą pssh parallel-ssh, kad atlikčiau vieną komandą savo kompiuteriuose.

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

-i liepiu programai veikti kaip interaktyviai - kitaip mums nebus rodoma jokia komandos išvestis. -h nurodo hostų failą, kurį pavadinau sshhosts.txt. Ir pati komanda bus senasis „Unix“ įrankis df. Tai grąžins prie sistemos prijungtų diskų sąrašą kartu su jų tvirtinimo taškais ir naudojimo informacija. Čia „-h“ rodys vietą diske žmonių skaitomuose vienetuose, o t apribos prieigą tik prie diskų, suformatuotų kaip ext4.

Kodėl man rūpi tas ext4 verslas? Kadangi „Ubuntu“ naudoja paketinių paketų tvarkytuvę ir kiekvienas momentas sukuria savo virtualų įrenginį. Tai kas? Na, aš nenoriu, kad turėčiau šukuoti maždaug tuziną virtualių įrenginių, pranešančių apie 0 laisvos vietos, kad patektų į tikrus diskus, kurie praneša apie faktinį naudojimą.

$ 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% / 

Ir štai! Visa informacija apie abu mano mazgus vietos diske. Esu tikras, kad pastebėjote, kad informacija yra identiška. Taip yra todėl, kad abu šie konteineriai veikia mano darbo vietoje, todėl, kiek jie žino, jie abu turi visišką prieigą prie mano paties disko.

Savo kitam triukui surinksiu / etc / group failus iš kiekvieno savo mazgo. Tai operacija, kuri gali būti naudinga norint greitai stebėti jūsų mazgų saugos būseną. Galite pridėti scenarijų, kuris analizuoja gaunamus duomenis ir įspėja jus, jei yra kokių nors anomalijų.

Prieš pradėdamas sukursiu vietinį katalogą, vadinamą kompiuterio failais. Tada naudosiu parallel-slurpkomandą, kurios pavadinimas nuostabiai apibūdina jos funkciją. Vėlgi, -h rodo į kompiuterio failą. Į -Lrinkiniai šeimininko failų katalogas kaip tikslinę vietą raštu duomenis mes ketiname sukurti, /etc/groupyra nuotolinio failo norime pliurpti iki, ir groupyra pavadinimas, mes norėtume perleisti duomenis vietoje.

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

Tai atlikus, pagrindinio kompiuterio failų kataloge bus pakatalogiai, pavadinti pagal kiekvieno jūsų mazgo IP adresą. Kaip matote, yra failas, vadinamas „grupe“, kuriame yra kiekvieno mazgo / etc / group duomenys.

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

Ar pssh ateina su kitais skanėstais? Taip. Bėgimas apropossuteikia jums visą sąrašą.

$ 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 

Šis straipsnis yra pagrįstas mano „Pluralsight“ kurso „Linux sistemos optimizavimas“ turiniu. Yra daug daugiau administravimo gerumo knygų, kursų ir straipsnių, kuriuos galima rasti tinklalapyje bootstrap-it.com, forma.