Fabric - Pokrenite Shell komande daljinski preko SSH-a u Linuxu


U svijetu razvoja softvera koji se stalno mijenja, efikasno upravljanje udaljenim serverom je ključno. Bilo da ste administrator sistema, softverski inženjer ili programer softvera, mogućnost pokretanja Linux komandi na udaljenim serverima je uobičajen zadatak.

Ovo je mjesto gdje Fabric, biblioteka Python visokog nivoa koja je dizajnirana za daljinsko izvršavanje Linux komandi preko SSH-a, čini je nezamjenjivim alatom za svakoga ko treba da upravlja udaljenim sistemima dok koristeći moć Pythona.

Šta je tkanina?

Fabric je raznovrsna Python biblioteka koja pojednostavljuje proces pokretanja komandi ljuske na udaljenim serverima preko SSH veza. U početku ga je razvio Jeff Forcier, a kasnije je postao projekat otvorenog koda.

Pruža Pythonic interfejs visokog nivoa za rad sa udaljenim sistemima, omogućavajući vam da automatizujete zadatke, implementirate kod i upravljate konfiguracijama na više servera bez napora.

Zašto koristiti tkaninu?

Postoji nekoliko uvjerljivih razloga da odaberete Fabric za potrebe izvršavanja vaših daljinskih naredbi:

  • Pythonic pristup – Fabric se pridržava Pythonove filozofije, olakšavajući programerima i sistemskim administratorima da pišu skripte na jeziku koji im je već poznat.
  • SSH i Paramiko – Fabric se oslanja na biblioteku Paramiko za rukovanje SSH vezama, što pruža siguran i pouzdan način za daljinsko izvršavanje komandi.
  • Protok rada zasnovan na zadacima – Fabric podstiče pristup orijentisan na zadatke daljinskom izvršavanju komandi. Vi definišete zadatke, koji su u suštini Python funkcije, a Fabric se brine o njihovom izvršavanju na udaljenim serverima.
  • Slučajevi upotrebe – Fabric je svestran alat pogodan za širok spektar slučajeva upotrebe, uključujući postavljanje aplikacija, upravljanje konfiguracijama servera i izvršavanje zadataka održavanja sistema.

U ovom vodiču ćemo pokriti korake za uvođenje i početak upotrebe Fabric-a za poboljšanje administracije servera za grupe servera.

Kako instalirati Fabric Automation Tool u Linux

Važna karakteristika fabrica je da udaljene mašine kojima treba da administrirate samo treba da imaju instaliran standardni OpenSSH server.

Potrebni su vam samo određeni zahtjevi instalirani na serveru s kojeg administrirate udaljene servere prije nego što počnete.

Zahtjevi:

  • Python 2.5+ sa razvojnim zaglavljima
  • Python-setuptools i pip (opciono, ali poželjno) gcc

Fabric se lako instalira pomoću upravitelja paketa pip, ali možete također radije odabrati svoj zadani upravitelj paketa yum, dnf ili apt/apt-get da instalirate fabric paket , koji se obično naziva tkanina ili python-tkanina.

Instalirajte Fabric u RHEL sisteme

Na distribucijama zasnovanim na RHEL-u kao što su CentOS Stream, Rocky Linux i AlmaLinux, morate imati instalirano i omogućeno EPEL spremište na sistemu da instalirajte fabric paket.

sudo dnf install epel-release
sudo dnf install fabric

Instalirajte Fabric u Debian sisteme

Na distribucijama zasnovanim na Debianu kao što su Ubuntu i Linux Mint korisnici mogu jednostavno učiniti apt da instaliraju fabric paket kao pokazano:

sudo apt install fabric

Instalirajte Fabric koristeći PiP

Ako fabric nije dostupan u spremištima vašeg sistema, možete koristiti pip da ga instalirate kao što je prikazano.

sudo yum install python3-pip       [On RedHat based systems] 
sudo dnf install python3-pip       [On Fedora 22+ versions]
sudo apt install python3-pip       [On Debian based systems]

Nakon što je pip uspješno instaliran, možete koristiti pip da preuzmete najnoviju verziju fabric kao što je prikazano:

pip3 install fabric

Kako koristiti Fabric za automatizaciju zadataka administracije Linuxa

Počnimo s korištenjem tkanine. Kao dio procesa instalacije, Python skripta pod nazivom 'fab' je dodana u direktorij u PATH vašeg sistema. 'fab' skripta upravlja svim zadacima kada se koristi Fabric.

Pokrenite Linux komande lokalno

Po dogovoru, morate početi kreiranjem Python datoteke pod nazivom fabfile.py koristeći svoj omiljeni uređivač teksta. Zapamtite da ovoj datoteci možete dati drugačije ime kako želite, ali ćete morati navesti putanju datoteke na sljedeći način:

fab --fabfile /path/to/the/file.py

Fabric koristi 'fabfile.py' za pokretanje zadataka, 'fabfile' bi trebao biti smješten u istom direktoriju gdje izvršavate Alat za tkanine.

Primjer 1: Kreirajmo prvo osnovni Hello World.

vi fabfile.py

Dodajte ove linije koda u datoteku.

def hello():
       print('Hello world, Tecmint community')

Sačuvajte datoteku i pokrenite naredbu ispod.

fab hello

Pogledajmo sada primjer fabfile.py za izvršavanje naredbe uptime na lokalnoj mašini.

Primjer 2: Otvorite novi fabfile.py fajl na sljedeći način:

vi fabfile.py

I zalijepite sljedeće linije koda u datoteku.

#!  /usr/bin/env python
from fabric.api import local
def uptime():
  local('uptime')

Zatim sačuvajte datoteku i pokrenite sljedeću naredbu:

fab uptime

Pokrenite Linux komande daljinski preko SSH-a

Fabric API koristi konfiguracijski rječnik koji je Pythonov ekvivalent asocijativnom nizu poznatom kao env, koji pohranjuje vrijednosti koje kontroliraju ono što Fabric radi.

env.hosts je lista servera na kojima želite pokrenuti Fabric zadatke. Ako je vaša mreža 192.168.0.0 i želite upravljati hostovima 192.168.0.2 i 192.168.0.6 sa vašim fabfileom , možete konfigurirati env.hosts na sljedeći način:

#!/usr/bin/env python
from  fabric.api import env
env.hosts = [ '192.168.0.2', '192.168.0.6' ]

Gornji red koda samo specificira hostove na kojima ćete izvoditi Fabric zadatke, ali ništa više ne radite. Stoga možete definirati neke zadatke, Fabric pruža skup funkcija koje možete koristiti za interakciju s vašim udaljenim strojevima.

Iako postoji mnogo funkcija, najčešće korištene su:

  • pokreni – koji pokreće komandu ljuske na udaljenoj mašini.
  • lokalni – koji pokreće naredbu na lokalnom stroju.
  • sudo – koji pokreće shell komandu na udaljenoj mašini, sa root privilegijama.
  • Preuzmi – koji preuzima jednu ili više datoteka sa udaljene mašine.
  • Stavi – koji učitava jednu ili više datoteka na udaljenu mašinu.

Primjer 3: Da biste ponovili poruku na više mašina, kreirajte fabfile.py kao što je ona ispod.

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def echo():
      run("echo -n 'Hello, you are tuned to Tecmint ' ")

Da izvršite zadatke, pokrenite sljedeću naredbu:

fab echo

Primjer 4: Možete poboljšati fabfile.py koji ste kreirali ranije kako biste izvršili naredbu uptime na lokalnoj mašini tako da pokreće naredbu uptime i također provjerava korištenje diska pomoću naredbe df na više mašina na sljedeći način:

#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def uptime():
      run('uptime')
def disk_space():
     run('df -h')

Sačuvajte datoteku i pokrenite sljedeću naredbu:

fab uptime
fab disk_space

Automatski instalirajte LAMP Stack na udaljeni Linux server

Primjer 4: Pogledajmo primjer postavljanja LAMP (Linux, Apache, MySQL/MariaDB i PHP) servera na udaljeni Linux server.

Napisat ćemo funkciju koja će omogućiti daljinsko instaliranje LAMP-a koristeći root privilegije.

Za RHEL/CentOS i Fedora
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  run ("yum install -y httpd mariadb-server php php-mysql")
Za Debian/Ubuntu i Linux Mint
#!/usr/bin/env python
from fabric.api import env, run
env.hosts = ['192.168.0.2','192.168.0.6']
def deploy_lamp():
  sudo("apt-get install -q apache2 mysql-server libapache2-mod-php php-mysql")

Sačuvajte datoteku i pokrenite sljedeću naredbu:

fab deploy_lamp

Napomena: Zbog velikog izlaza, ne možemo kreirati screencast (animirani gif) za ovaj primjer.

Sada možete automatizirati zadatke upravljanja Linux serverom koristeći Fabric i njegove karakteristike i primjere date gore…

Korisne opcije tkanine

  • Možete pokrenuti fab --help da vidite korisne informacije i dugu listu dostupnih opcija komandne linije.
  • Važna opcija --fabfile=PATH koja vam pomaže da navedete drugu datoteku Python modula za uvoz osim fabfile.py.
  • Da navedete korisničko ime koje će se koristiti prilikom povezivanja na udaljene hostove, koristite opciju --user=USER.
  • Za korištenje lozinke za autentifikaciju i/ili sudo, koristite opciju --password=PASSWORD.
  • Za štampanje detaljnih informacija o komandi NAME, koristite opciju --display=NAME.
  • Za pregled formata koristite opciju --list, izbor: kratko, normalno, ugniježđeno, koristite opciju --list-format=FORMAT.
  • Da odštampate listu mogućih komandi i izađete, uključite opciju --list.
  • Možete odrediti lokaciju konfiguracijske datoteke koju ćete koristiti korištenjem opcije --config=PATH.
  • Za prikaz obojenog izlaza greške koristite --colorize-errors.
  • Da vidite broj verzije programa i izađete, koristite opciju --version.
Sažetak

Fabric je moćna Python biblioteka koja pojednostavljuje daljinsko izvršavanje komandi preko SSH, pružajući Pythonic pristup prilagođen korisniku. Njegova sposobnost da pojednostavi složene zadatke i automatizira upravljanje sistemom čini ga vrijednim alatom za sistemske administratore, programere i profesionalce za DevOps.

Bilo da upravljate jednim serverom ili orkestrirate implementaciju velikih razmjera, Fabric vam može pomoći da posao obavite efikasno i efektivno.