Weboldal keresés

Fabric – A Shell-parancsok távoli futtatása SSH-n keresztül Linux alatt


A szoftverfejlesztés folyamatosan változó világában a hatékony távoli szerverkezelés kulcsfontosságú. Legyen Ön rendszergazda, szoftvermérnök vagy szoftverfejlesztő, a Linux parancsok távoli szervereken való futtatása gyakori feladat.

Ez az a hely, ahol a Fabric, egy magas szintű Python könyvtár, amelyet Linux-parancsok távoli, SSH-n keresztüli végrehajtására terveztek, nélkülözhetetlen eszközzé teszi mindenki számára, akinek távoli rendszereket kell kezelnie, miközben kihasználva a Python erejét.

Mi az a Fabric?

A Fabric egy sokoldalú Python könyvtár, amely leegyszerűsíti a shell-parancsok távoli szervereken való futtatását SSH-kapcsolaton keresztül. Eredetileg Jeff Forcier fejlesztette ki, majd nyílt forráskódú projektté vált.

Magas szintű Pythonic felületet biztosít a távoli rendszerekkel való munkavégzéshez, lehetővé téve a feladatok automatizálását, a kódok telepítését és a konfigurációk kezelését több szerveren.

Miért használjunk szövetet?

Számos nyomós oka van annak, hogy a távoli parancsvégrehajtási igényekhez a Fabric lehetőséget válassza:

  • Pythonic Approach – A Fabric követi a Python filozófiáját, megkönnyítve a fejlesztők és rendszergazdák számára, hogy olyan nyelven írhassanak szkripteket, amelyeket már ismernek.
  • SSH és Paramiko – A Fabric a Paramiko könyvtárra támaszkodik az SSH-kapcsolatok kezelésére, amely biztonságos és megbízható módot biztosít a parancsok távoli végrehajtására.
  • Feladat-alapú munkafolyamat – A Fabric a távoli parancsvégrehajtás feladatorientált megközelítését ösztönzi. Ön határozza meg a feladatokat, amelyek lényegében Python-függvények, és a Fabric gondoskodik ezek végrehajtásáról a távoli kiszolgálókon.
  • Használati esetek – A Fabric egy sokoldalú eszköz, amely sokféle felhasználási célra alkalmas, beleértve az alkalmazások telepítését, a szerverkonfigurációk kezelését és a rendszerkarbantartási feladatok végrehajtását.

Ebben az útmutatóban bemutatjuk a Fabric bevezetésének és használatának lépéseit a kiszolgálócsoportok szerveradminisztrációjának javítása érdekében.

A Fabric Automation Tool telepítése Linux alatt

A fabric fontos jellemzője, hogy az adminisztrálandó távoli gépeken csak telepítve kell lennie a szabványos OpenSSH-kiszolgálónak.

Csak bizonyos követelményeket kell telepítenie azon a kiszolgálón, amelyről a távoli kiszolgálókat adminisztrálja, mielőtt elkezdheti.

Követelmények:

  • Python 2.5+ a fejlesztési fejlécekkel
  • Python-setuptools és pip (opcionális, de előnyös) gcc

A Fabric könnyen telepíthető a pip csomagkezelővel, de előfordulhat, hogy a fabric csomag telepítéséhez inkább az alapértelmezett yum, dnf vagy apt/apt-get csomagkezelőt választja. , amelyet általában szövetnek vagy python-szövetnek neveznek.

Telepítse a Fabric-ot az RHEL Systems-be

Az olyan RHEL-alapú disztribúciók esetében, mint a CentOS Stream, a Rocky Linux és az AlmaLinux, telepíteni kell és engedélyezni kell az EPEL-tárat a rendszeren, hogy telepítse a fabric csomagot.

sudo dnf install epel-release
sudo dnf install fabric

Telepítse a Fabric-ot a Debian Systemsbe

A Debian-alapú disztribúciókon, mint például az Ubuntu és a Linux Mint, a felhasználók egyszerűen az apt parancs segítségével telepíthetik a fabric csomagot Látható:

sudo apt install fabric

Telepítse a Fabric-et a PiP használatával

Ha a fabric nem érhető el a rendszer tárolóiból, a pip segítségével telepítheti az ábrán látható módon.

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]

A pip sikeres telepítése után a pip segítségével megragadhatja a fabric legújabb verzióját, az alábbi módon:

pip3 install fabric

A Fabric használata Linux adminisztrációs feladatok automatizálására

Kezdjük a Fabric használatával. A telepítési folyamat részeként egy 'fab' nevű Python-szkript hozzáadásra került a rendszer PATH-jában található könyvtárhoz. A 'fab' szkript kezeli az összes feladatot a Fabric használatakor.

Futtassa a Linux parancsokat helyileg

Megállapodás szerint először egy fabfile.py nevű Python-fájlt kell létrehoznia kedvenc szövegszerkesztője segítségével. Ne feledje, hogy a fájlnak tetszőlegesen eltérő nevet adhat, de a következőképpen kell megadnia a fájl elérési útját:

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

A Fabric a 'fabfile.py' fájlt használja a feladatok futtatásához, a 'fabfile' fájlnak ugyanabban a könyvtárban kell lennie, ahol a Szövetszerszám.

1. példa: Először hozzunk létre egy alapvető Hello World-t.

vi fabfile.py

Adja hozzá ezeket a kódsorokat a fájlhoz.

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

Mentse el a fájlt, és futtassa az alábbi parancsot.

fab hello

Nézzünk most egy példát egy fabfile.py fájlra, amely végrehajtja az uptime parancsot a helyi gépen.

2. példa: Nyisson meg egy új fabfile.py fájlt az alábbiak szerint:

vi fabfile.py

Illessze be a következő kódsorokat a fájlba.

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

Ezután mentse a fájlt, és futtassa a következő parancsot:

fab uptime

Futtassa a Linux parancsokat távolról SSH-n keresztül

A Fabric API konfigurációs szótárt használ, amely a Python megfelelője az env néven ismert asszociatív tömbnek, amely olyan értékeket tárol, amelyek szabályozzák a Fabric tevékenységét.

Az env.hosts azon kiszolgálók listája, amelyeken Fabric feladatokat szeretne futtatni. Ha a hálózata 192.168.0.0, és a 192.168.0.2 és 192.168.0.6 gazdagépeket szeretné kezelni a fabfájljával , a következőképpen konfigurálhatja az env.hosts fájlt:

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

A fenti kódsor csak azokat a gazdagépeket határozza meg, amelyeken a Fabric-feladatokat futtatja, de nem tehet többet. Ezért meghatározhat néhány feladatot, a Fabric olyan funkciókat biztosít, amelyek segítségével interakcióba léphet távoli gépeivel.

Bár számos funkció létezik, a leggyakrabban használtak a következők:

  • run – amely egy shell-parancsot futtat egy távoli gépen.
  • local – amely a parancsot a helyi gépen futtatja.
  • sudo – amely egy shell parancsot futtat egy távoli gépen, root jogosultságokkal.
  • Get – amely egy vagy több fájlt tölt le egy távoli gépről.
  • Put – amely egy vagy több fájlt tölt fel egy távoli gépre.

3. példa: Egy üzenet több gépen való visszhangzásához hozzon létre egy fabfile.py fájlt, például az alábbihoz.

#!/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 ' ")

A feladatok végrehajtásához futtassa a következő parancsot:

fab echo

4. példa: Javíthatja a korábban létrehozott fabfile.py fájlt, hogy végrehajtsa az uptime parancsot a helyi gépen, hogy az futtatja az uptime parancsot, és a lemezhasználatot is ellenőrzi a df paranccsal több gépen az alábbiak szerint:

#!/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')

Mentse el a fájlt, és futtassa a következő parancsot:

fab uptime
fab disk_space

A LAMP Stack automatikus telepítése a távoli Linux-kiszolgálóra

4. példa: Nézzünk egy példát egy LAMP (Linux, Apache, MySQL/MariaDB és PHP) szerver telepítésére távoli Linux szerver.

Írunk egy függvényt, amely lehetővé teszi a LAMP távoli telepítését root jogosultságokkal.

RHEL/CentOS és Fedora esetén
#!/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")
Debian/Ubuntu és Linux Mint számára
#!/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")

Mentse el a fájlt, és futtassa a következő parancsot:

fab deploy_lamp

Megjegyzés: A nagy kimenet miatt nem tudunk képernyőképet (animált gif) készíteni ehhez a példához.

Mostantól automatizálhatja a Linux-kiszolgálókezelési feladatokat a Fabric és annak szolgáltatásai és a fenti példák segítségével…

Fabric Hasznos lehetőségek

  • A fab --help futtatásával hasznos információkat és a rendelkezésre álló parancssori opciók hosszú listáját tekintheti meg.
  • Egy fontos --fabfile=PATH beállítás, amely segít a fabfile.py-tól eltérő Python-modulfájl megadásában.
  • A távoli gazdagépekhez való csatlakozáskor használandó felhasználónév megadásához használja a --user=USER opciót.
  • Ha jelszót szeretne használni a hitelesítéshez és/vagy a sudohoz, használja a --password=PASSWORD opciót.
  • Ha részletes információkat szeretne kinyomtatni a NAME parancsról, használja a --display=NAME opciót.
  • A formátumok megtekintéséhez használja a --list opciót, a választások: rövid, normál, beágyazott, a --list-format=FORMAT opciót.
  • A lehetséges parancsok listájának kinyomtatásához és a kilépéshez használja a --list opciót.
  • Megadhatja a használni kívánt konfigurációs fájl helyét a --config=PATH kapcsolóval.
  • A színes hibakimenet megjelenítéséhez használja a --colorize-errors parancsot.
  • A program verziószámának megtekintéséhez és a kilépéshez használja a --version opciót.
Összegzés

A Fabric egy hatékony Python-könyvtár, amely leegyszerűsíti a távoli parancsvégrehajtást az SSH felett, felhasználóbarát Pythonic megközelítést biztosítva. Az összetett feladatok egyszerűsítésére és a rendszerkezelés automatizálására való képessége értékes eszközzé teszi a rendszergazdák, fejlesztők és DevOps szakemberek számára.

Akár egyetlen szervert kezel, akár egy nagyszabású telepítést szervez, a Fabric segíthet a munka hatékony és eredményes elvégzésében.