Sunt sigur că ați auzit că toți copiii drăguți se joacă cu automatizarea orchestrației în aceste zile. Dar știi de ce? În primul rând, resursele consumate de sarcinile de lucru moderne ale microserviciilor devin mult mai complexe și se implementează în mai multe instanțe decât oricând. Și, în al doilea rând, din ce în ce mai multe resurse sunt mai degrabă virtuale decât fizice – așa că multe dintre ele vor exista doar minute sau chiar secunde.

Toate acestea înseamnă că, chiar dacă ați dori să vă întoarceți să vă conectați la fiecare dintre serverele dvs., pur și simplu nu ar avea sens. De fapt, în majoritatea cazurilor, nici măcar nu ar fi posibil. În schimb, veți rula o mulțime de scripturi inteligente. Și instrumentele pe care le folosiți pentru a rula aceste tipuri de scripturi sunt în general numite orchestratori.

Sunt sigur că ați întâlnit cel puțin unul sau doi membri ai clubului de orchestrație. Pe lângă Ansible, există Terraform, Chef, Puppet și altele. Dar există și instrumente de nivel inferior care funcționează ca suplimente pentru instrumentele Linux de bază, cum ar fi SSH. Deși, văzând cum va rula nativ pe Windows și, bineînțeles, pe MacOS, nu sunt sigur că este destul de corect să mai numim SSH un instrument „Linux”.

Unul dintre aceste suplimente SSH este un set de instrumente numit pssh – care înseamnă Paralel SSH. Despre asta vom învăța în acest articol – care este extras din noul meu Curs Pluralsight, optimizarea sistemului Linux.

Deocamdată, însă, vă voi povesti puțin despre laboratorul pe care îl folosesc, astfel încât să îl puteți reproduce mai ușor și să îl urmăriți acasă. Am trei containere Ubuntu LXD care rulează. Baza pentru toate operațiunile noastre va fi cea cu adresa IP de 10.0.3.140, în timp ce cele două noduri gazdă pe care le vom provoca de la distanță vor folosi 10.0.3.93 și 10.0.3.43.

Tot ceea ce vom face presupune că avem acces SSH fără parolă din containerul meu de bază la fiecare dintre cele două noduri. Dacă nu sunteți sigur cum să faceți acest lucru, puteți vizualiza modulul SSH al meu Protocol Deep Dive: curs SSH și Telnet pe Pluralsight. Dacă te grăbești, acest tutorial Red Hat te va duce în același loc.

Instalarea pssh pe Ubuntu este simplă și rapidă: sudo apt install pssh. Nu devine mai greu pe CentOS.

Am creat un fișier simplu de inventar al gazdei numit sshhosts.txt care nu conține nimic mai mult decât adresele IP ale celor două noduri ale mele:

$ less sshhosts.txt
10.0.3.93
10.0.3.43

Acum voi rula comanda pssh parallel-ssh pentru a executa o singură comandă pe gazdele mele.

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

-i spune programului să ruleze ca interactiv – altfel nu ni se va afișa nicio ieșire de comandă. -h indică fișierul hosts pe care l-am numit sshhosts.txt. Și comanda în sine va fi vechiul utilitar Unix df. Aceasta va returna o listă de unități atașate la sistem, împreună cu punctele de montare și informații de utilizare. -H aici va afișa spațiu pe disc în unități care pot fi citite de om și t va restricționa accesul doar la unitățile formatate ca ext4.

De ce îmi pasă de afacerea asta ext4? Deoarece Ubuntu folosește managerul de pachete snap și fiecare snap își creează propriul dispozitiv virtual. Și ce dacă? Ei bine, nu vreau să trebuiască să mă pieptăn cu o duzină de dispozitive virtuale care raportează 0 spațiu liber doar pentru a ajunge la unitățile reale care raportează utilizarea reală.

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

Și iată-te! Informații complete de spațiu pe disc despre ambele noduri ale mele. Sunt sigur că ați observat că informațiile sunt identice. Asta pentru că acestea sunt ambele containere care rulează pe stația mea de lucru, astfel încât, din câte știu, ambele au acces complet la propriul meu drive.

Pentru următorul meu truc, voi colecta fișierele / etc / group din fiecare dintre nodurile mele. Acesta este tipul de operație care ar putea fi utilă pentru a monitoriza rapid starea de securitate a nodurilor dvs. Puteți adăuga un script care analizează datele primite și vă avertizează dacă există vreo anomalie.

Înainte de a începe, voi crea un director numit local fișiere gazdă. Apoi voi folosi parallel-slurp comanda – al cărei nume descrie minunat funcția sa. Din nou, -h indică fișierul gazdelor. -L setează directorul fișierelor gazdă ca locație țintă pentru scrierea datelor pe care le vom genera, /etc/group este fișierul de la distanță pe care dorim să-l aruncăm și group este numele pe care am dori să-l atribuim local.

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

Când se termină, directorul fișierelor gazdă va conține subdirectoare numite după adresa IP a fiecărui nod. După cum puteți vedea, există un fișier numit „grup” care conține datele / etc / group din fiecare nod.

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

Pssh vine cu alte delicatese? Da. Și alergând apropos vă oferă întreaga listă.

$ 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

Acest articol se bazează pe conținutul din Curs Pluralsight, „Optimizarea sistemului Linux”. Există mult mai multă bunătate administrativă sub formă de cărți, cursuri și articole disponibile la bootstrap-it.com.