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 afabfile.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.