Vyhledávání na webu

Fabric - Spouštějte příkazy Shell vzdáleně přes SSH v Linuxu


V neustále se měnícím světě vývoje softwaru je efektivní vzdálená správa serverů zásadní. Ať už jste správce systému, softwarový inženýr nebo vývojář softwaru, schopnost spouštět příkazy Linuxu na vzdálených serverech je běžným úkolem.

To je místo, kde Fabric, knihovna Python na vysoké úrovni, která je navržena tak, aby spouštěla příkazy Linuxu vzdáleně přes SSH, z ní činí nepostradatelný nástroj pro každého, kdo potřebuje spravovat vzdálené systémy využití síly Pythonu.

Co je Fabric?

Fabric je všestranná Python knihovna, která zjednodušuje proces spouštění příkazů shellu na vzdálených serverech přes připojení SSH. Původně jej vyvinul Jeff Forcier a později se stal open-source projektem.

Poskytuje rozhraní Pythonic na vysoké úrovni pro práci se vzdálenými systémy, které vám umožňuje bez námahy automatizovat úlohy, nasazovat kód a spravovat konfigurace na více serverech.

Proč používat Fabric?

Existuje několik pádných důvodů, proč zvolit Fabric pro potřeby vzdáleného provádění příkazů:

  • Přístup Pythonic – Fabric dodržuje filozofii Pythonu a usnadňuje vývojářům a správcům systému psát skripty v jazyce, který již znají.
  • SSH a Paramiko – Fabric se při zpracování připojení SSH spoléhá na knihovnu Paramiko, která poskytuje bezpečný a spolehlivý způsob vzdáleného provádění příkazů.
  • Pracovní postup založený na úkolech – Fabric podporuje přístup ke vzdálenému provádění příkazů orientovaný na úkoly. Definujete úlohy, což jsou v podstatě funkce Pythonu, a Fabric se postará o jejich provádění na vzdálených serverech.
  • Případy použití – Fabric je všestranný nástroj vhodný pro širokou škálu případů použití, včetně nasazování aplikací, správy konfigurací serveru a spouštění úloh údržby systému.

V této příručce se budeme zabývat kroky k zavedení a zahájení používání Fabric ke zlepšení správy serverů pro skupiny serverů.

Jak nainstalovat Fabric Automation Tool v Linuxu

Důležitou vlastností fabric je, že vzdálené počítače, které potřebujete spravovat, musí mít nainstalovaný pouze standardní OpenSSH server.

Než budete moci začít, musíte na serveru, ze kterého spravujete vzdálené servery, nainstalovat pouze určité požadavky.

Požadavky:

  • Python 2.5+ s vývojovými hlavičkami
  • Python-setuptools a pip (volitelné, ale preferované) gcc

Fabric se snadno instaluje pomocí správce balíčků pip, ale pro instalaci balíčku fabric můžete také upřednostnit výběr výchozího správce balíčků yum, dnf nebo apt/apt-get , obvykle nazývané látka nebo python-látka.

Nainstalujte Fabric do RHEL Systems

V distribucích založených na RHEL, jako jsou CentOS Stream, Rocky Linux a AlmaLinux, musíte mít v systému nainstalované a povolené úložiště EPEL, abyste nainstalujte balíček fabric.

sudo dnf install epel-release
sudo dnf install fabric

Nainstalujte Fabric v systémech Debian

V distribucích založených na Debianu, jako jsou Ubuntu a Linux Mint, mohou uživatelé jednoduše provést apt a nainstalovat balíček fabric jako zobrazeno:

sudo apt install fabric

Nainstalujte Fabric pomocí PiP

Pokud látka není dostupná v úložištích vašeho systému, můžete ji nainstalovat pomocí pip, jak je znázorněno.

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]

Jakmile bude pip úspěšně nainstalován, můžete použít pip k získání nejnovější verze fabric, jak je znázorněno:

pip3 install fabric

Jak používat Fabric k automatizaci úloh správy Linuxu

Začneme tím, jak používat látku. Jako součást instalačního procesu byl do adresáře v PATH vašeho systému přidán Python skript s názvem 'fab'. Skript 'fab' zpracovává všechny úkoly při použití Fabric.

Spusťte Linux Commands lokálně

Podle konvence musíte začít vytvořením souboru Python s názvem fabfile.py pomocí vašeho oblíbeného textového editoru. Nezapomeňte, že tomuto souboru můžete dát jiný název, jak chcete, ale cestu k souboru budete muset zadat následovně:

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

Fabric používá ke spouštění úloh 'fabfile.py', 'fabfile' by měl být umístěn ve stejném adresáři, kde spouštíte Nástroj tkanina.

Příklad 1: Nejprve vytvořte základní Ahoj světe.

vi fabfile.py

Přidejte tyto řádky kódu do souboru.

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

Uložte soubor a spusťte příkaz níže.

fab hello

Podívejme se nyní na příklad fabfile.py ke spuštění příkazu uptime na místním počítači.

Příklad 2: Otevřete nový soubor fabfile.py následovně:

vi fabfile.py

A vložte následující řádky kódu do souboru.

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

Poté soubor uložte a spusťte následující příkaz:

fab uptime

Spouštějte příkazy Linuxu vzdáleně přes SSH

Fabric API používá konfigurační slovník, který je v Pythonu ekvivalentem asociativního pole známého jako env, které ukládá hodnoty, které řídí, co Fabric dělá.

env.hosts je seznam serverů, na kterých chcete spouštět úlohy Fabric. Pokud je vaše síť 192.168.0.0 a chcete spravovat hostitele 192.168.0.2 a 192.168.0.6 pomocí fabfile , můžete nakonfigurovat env.hosts následovně:

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

Výše uvedený řádek kódu pouze specifikuje hostitele, na kterých budete spouštět úlohy Fabric, ale neuděláte nic víc. Proto můžete definovat některé úlohy, Fabric poskytuje sadu funkcí, které můžete použít k interakci se vzdálenými stroji.

Přestože existuje mnoho funkcí, nejčastěji používané jsou:

  • run – který spustí příkaz shellu na vzdáleném počítači.
  • local – který spustí příkaz na místním počítači.
  • sudo – který spouští příkaz shellu na vzdáleném počítači s právy root.
  • Získat – stáhne jeden nebo více souborů ze vzdáleného počítače.
  • Put – který nahraje jeden nebo více souborů na vzdálený počítač.

Příklad 3: Chcete-li zprávu opakovat na více počítačích, vytvořte fabfile.py, jako je ten níže.

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

Chcete-li provést úlohy, spusťte následující příkaz:

fab echo

Příklad 4: Soubor fabfile.py, který jste vytvořili dříve, můžete vylepšit tak, aby spouštěl příkaz uptime na místním počítači tak, aby spustí příkaz uptime a také zkontroluje využití disku pomocí příkazu df na více počítačích následovně:

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

Uložte soubor a spusťte následující příkaz:

fab uptime
fab disk_space

Automaticky nainstalujte LAMP Stack na vzdálený server Linux

Příklad 4: Podívejme se na příklad nasazení serveru LAMP (Linux, Apache, MySQL/MariaDB a PHP) na vzdálený linuxový server.

Napíšeme funkci, která umožní vzdálenou instalaci LAMP pomocí práv roota.

Pro RHEL/CentOS a Fedoru
#!/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")
Pro Debian/Ubuntu a 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")

Uložte soubor a spusťte následující příkaz:

fab deploy_lamp

Poznámka: Kvůli velkému výstupu nemůžeme pro tento příklad vytvořit screencast (animovaný gif).

Nyní můžete automatizovat úlohy správy serveru Linux pomocí Fabric a jeho funkcí a příkladů uvedených výše…

Užitečné možnosti tkaniny

  • Můžete spustit fab --help a zobrazit užitečné informace a dlouhý seznam dostupných možností příkazového řádku.
  • Důležitá volba --fabfile=PATH, která vám pomůže určit jiný soubor modulu Python k importu než fabfile.py.
  • Chcete-li zadat uživatelské jméno, které se má použít při připojování ke vzdáleným hostitelům, použijte volbu --user=USER.
  • Chcete-li pro ověření a/nebo sudo použít heslo, použijte možnost --password=PASSWORD.
  • Chcete-li vytisknout podrobné informace o příkazu NAME, použijte volbu --display=NAME.
  • Pro zobrazení formátů použijte volbu --list, možnosti: krátký, normální, vnořený, použijte volbu --list-format=FORMAT.
  • Chcete-li vytisknout seznam možných příkazů a skončit, použijte volbu --list.
  • Umístění konfiguračního souboru, který se má použít, můžete určit pomocí volby --config=PATH.
  • Chcete-li zobrazit barevný chybový výstup, použijte --colorize-errors.
  • Chcete-li zobrazit číslo verze programu a ukončit jej, použijte volbu --version.
souhrn

Fabric je výkonná knihovna Pythonu, která zjednodušuje vzdálené provádění příkazů přes SSH a poskytuje uživatelsky přívětivý přístup Pythonic. Jeho schopnost zjednodušit složité úkoly a automatizovat správu systému z něj dělá cenný nástroj pro systémové administrátory, vývojáře a profesionály DevOps.

Ať už spravujete jeden server nebo organizujete rozsáhlou implementaci, Fabric vám může pomoci provést práci efektivně a efektivně.