Stoff - Automatiséiert Är Linux Administratioun Aufgaben an Applikatioun Deployment iwwer SSH


Wann et drëm geet Remote Maschinnen ze managen an Uwendungen z'installéieren, ginn et e puer Kommandozeil Tools dobaussen, awer vill hunn e gemeinsame Problem vum Mangel u detailléierter Dokumentatioun.

An dësem Guide wäerte mir d'Schrëtt ofdecken fir anzeféieren an unzefänken wéi Dir Stoff benotzt fir d'Administratioun vu Servergruppen ze verbesseren.

Fabric ass eng Python-Bibliothéik an e mächtege Kommandozeil-Tool fir Systemverwaltungsaufgaben auszeféieren wéi d'Ausféierung vun SSH Kommandoen op verschidde Maschinnen an Uwendungsdeployment.

Liest och: Benotzt Shell Scripting fir Linux System Maintenance Aufgaben ze automatiséieren

En Aarbechtskenntnisser vu Python ze hunn kann hëllefräich sinn wann Dir Stoff benotzt, awer ass sécher net néideg.

Grënn firwat Dir Stoff iwwer aner Alternativen sollt wielen:

  1. Einfachheet
  2. Et ass gutt dokumentéiert
  3. Dir braucht keng aner Sprooch ze léieren, wann Dir schonn e Python Guy sidd.
  4. Einfach ze installéieren an ze benotzen.
  5. Et ass séier a seng Operatiounen.
  6. Et ënnerstëtzt parallel Fernausféierung.

Wéi installéiere Fabric Automation Tool a Linux

Eng wichteg Charakteristik iwwer Stoff ass datt d'Fernmaschinnen, déi Dir braucht ze administréieren, nëmmen de Standard OpenSSH Server installéiert mussen hunn. Dir braucht nëmme bestëmmte Viraussetzungen op de Server installéiert, vun deem Dir d'Remote-Server administréiert, ier Dir ufänke kënnt.

  1. Python 2.5+ mat den Entwécklungsheader
  2. Python-Setuptools a Pip (optional, awer bevorzugt) gcc

Stoff ass einfach mat Pip installéiert (héich recommandéiert), awer Dir kënnt och léiwer Äre Standard Package Manager ze wielen apt-get fir Stoff Package z'installéieren, typesch Stoff oder Python-Stoff genannt.

Fir RHEL/CentOS baséiert Verdeelungen, musst Dir EPEL Repository installéiert hunn an um System aktivéiert fir Stoffpaket ze installéieren.

# yum install fabric   [On RedHat based systems]  
# dnf install fabric   [On Fedora 22+ versions]

Fir Debian an hir Derivate wéi Ubuntu a Mint Benotzer kënnen einfach apt-get maachen fir de Stoff Package z'installéieren wéi gewisen:

# apt-get install fabric

Wann Dir d'Entwécklung Versioun vum Stoff installéiere wëllt, kënnt Dir Pip benotzen fir déi lescht Master Branche ze gräifen.

# yum install python-pip       [On RedHat based systems] 
# dnf install python-pip       [On Fedora 22+ versions]
# apt-get install python-pip   [On Debian based systems]

Wann de Pip erfollegräich installéiert ass, kënnt Dir Pip benotzen fir déi lescht Versioun vum Stoff ze gräifen wéi gewisen:

# pip install fabric

Wéi benotzt Dir Stoff fir Linux Administration Tasks ze automatiséieren

Also loosst eis ufänken wéi Dir Stoff benotze kënnt. Wärend dem Installatiounsprozess gouf e Python Skript mam Numm fab an e Verzeechnes an Ärem Wee bäigefüügt. De Fab Skript mécht all d'Aarbecht wann Dir Stoff benotzt.

Vun der Konventioun musst Dir ufänken mat engem Python-Datei mam Numm fabfile.py mat Ärem Liiblingseditor ze kreéieren. Denkt drun datt Dir dës Datei en aneren Numm gitt wéi Dir wëllt, awer Dir musst de Dateiwee wéi follegt spezifizéieren:

# fabric --fabfile /path/to/the/file.py

Fabric benotzt fabfile.py fir Aufgaben auszeféieren. D'Fabfile sollt am selwechte Verzeechnes sinn, wou Dir de Fabric Tool leeft.

Beispill 1: Loosst eis als éischt e Basis Hallo Welt erstellen.

# vi fabfile.py

Füügt dës Zeilen vum Code an der Datei.

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

Späichert d'Datei a lafen de Kommando hei ënnen.

# fab hello

Loosst eis elo e Beispill vun engem fabfile.py kucken fir den Uptime Kommando op der lokaler Maschinn auszeféieren.

Beispill 2: Öffnen eng nei fabfile.py Datei wéi follegt:

# vi fabfile.py

A paste déi folgend Zeilen vum Code an der Datei.

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

Da späichert d'Datei a lafen de folgende Kommando:

# fab uptime

De Fabric API benotzt e Konfiguratiounswörterbuch dat dem Python säin Äquivalent vun enger assoziativer Array ass bekannt als env, déi Wäerter späichert déi kontrolléieren wat Fabric mécht.

De env.hosts ass eng Lëscht vu Serveren op deenen Dir Fabric Aufgaben ausféiere wëllt. Wann Ären Netz 192.168.0.0 ass a wëllt Host 192.168.0.2 an 192.168.0.6 mat Ärer Fabfile verwalten, kënnt Dir d'env.hosts wéi follegt konfiguréieren:

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

Déi uewe genannte Codelinn spezifizéiert nëmmen d'Hosten op deenen Dir Fabric Aufgaben ausféiert awer näischt méi maacht. Dofir kënnt Dir e puer Aufgaben definéieren, Fabric bitt eng Rei vu Funktiounen déi Dir benotze kënnt fir mat Äre Fernmaschinnen ze interagéieren.

Obwuel et vill Funktiounen sinn, sinn déi meescht benotzt:

  1. run - deen e Shell-Kommando op enger Fernmaschinn leeft.
  2. lokal - déi de Kommando op der lokaler Maschinn leeft.
  3. sudo - deen e Shell-Kommando op enger Fernmaschinn leeft, mat Root-Privilegien.
  4. Kréien - wat een oder méi Dateien vun enger Fernmaschinn erofluet.
  5. Put - déi een oder méi Dateien op eng Fernmaschinn eropluet.

Beispill 3: Fir e Message op verschidde Maschinnen ze widderhuelen, erstellt e fabfile.py wéi deen hei drënner.

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

Fir d'Aufgaben auszeféieren, fuert de folgende Kommando:

# fab echo

Beispill 4: Dir kënnt de fabfile.py verbesseren, deen Dir virdru erstallt hutt fir den Uptime Kommando op der lokaler Maschinn auszeféieren, sou datt et den Uptime Kommando leeft an och d'Disknotzung iwwerpréift mam df Kommando op multiple Maschinnen wéi follegt:

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

Späichert d'Datei a lafen de folgende Kommando:

# fab uptime
# fab disk_space

Beispill 4: Loosst eis e Beispill kucken fir LAMP (Linux, Apache, MySQL/MariaDB a PHP) Server op engem Remote Linux Server z'installéieren.

Mir schreiwen eng Funktioun déi et erlaabt datt LAMP op afstand installéiert gëtt mat Root Privilegien.

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

Späichert d'Datei a lafen de folgende Kommando:

# fab deploy_lamp

Bemierkung: Wéinst grousser Ausgab ass et net méiglech fir eis e Screencast (animéiert GIF) fir dëst Beispill ze kreéieren.

Elo kënnt Dir fäeg sinn Linux Serververwaltungsaufgaben ze automatiséieren mat Fabric a seng Featuren an Beispiller uewen uginn ...

  1. Dir kënnt fab –help lafen fir Hëllefsinformatiounen an eng laang Lëscht vu verfügbare Kommandozeiloptiounen ze gesinn.
  2. Eng wichteg Optioun ass –fabfile=PATH déi Iech hëlleft eng aner Python Moduldatei ze spezifizéieren fir aner wéi fabfile.py ze importéieren.
  3. Fir e Benotzernumm ze spezifizéieren fir ze benotzen wann Dir mat Fernhoster verbënnt, benotzt d'Optioun –user=USER.
  4. Fir Passwuert fir Authentifikatioun an/oder Sudo ze benotzen, benotzt d' –password=PASSWORD Optioun.
  5. Fir detailléiert Informatioun iwwer de Kommando NAME ze drécken, benotzt –display=NAME Optioun.
  6. Fir Formater ze gesinn, benotzt d'Optioun –list, Choixen: kuerz, normal, nestéiert, benotzt d'Optioun –list-format=FORMAT.
  7. Fir d'Lëscht vun de méigleche Kommandoen auszedrécken an auszeschléissen, enthält d'Optioun –list.
  8. Dir kënnt de Standort vun der Configuratiounsdatei spezifizéieren, andeems Dir d'Optioun –config=PATH benotzt.
  9. Fir e faarwege Feelerausgang ze weisen, benotzt –colorize-errors.
  10. Fir d'Versiounsnummer vum Programm ze gesinn an auszeschléissen, benotzt d'–version Optioun.

Resumé

Stoff ass e mächtegt Tool an ass gutt dokumentéiert a bitt einfach Notzung fir Newbies. Dir kënnt déi voll Dokumentatioun liesen fir méi Verständnis dovun ze kréien. Wann Dir Informatioun hutt fir ze addéieren oder Feeler z'ënnerschreiwen déi Dir während der Installatioun an der Benotzung begéint, kënnt Dir e Kommentar hannerloossen a mir fanne Weeër fir se ze fixéieren.

Referenz: Stoff Dokumentatioun