Fabric - Automatiser Linux-administrasjonsoppgavene og applikasjonsdistribusjonene over SSH


Når det gjelder administrasjon av eksterne maskiner og distribusjon av applikasjoner, finnes det flere kommandolinjeverktøy der ute, selv om mange har et vanlig problem med mangel på detaljert dokumentasjon.

I denne veiledningen skal vi dekke trinnene for å introdusere og komme i gang med hvordan du bruker stoff for å forbedre administrasjonen av grupper av servere.

Fabric er et python-bibliotek og et kraftig kommandolinjeverktøy for å utføre systemadministrasjonsoppgaver som å utføre SSH-kommandoer på flere maskiner og applikasjonsdistribusjon.

Les også: Bruk Shell-skripting for å automatisere Linux-systemvedlikeholdsoppgaver

Å ha praktisk kunnskap om Python kan være nyttig når du bruker Fabric, men er kanskje ikke nødvendig.

Grunner til at du bør velge stoff fremfor andre alternativer:

  1. Enkelhet
  2. Det er godt dokumentert
  3. Du trenger ikke lære et annet språk hvis du allerede er en pytonfyr.
  4. Enkel å installere og bruke.
  5. Den er rask i driften.
  6. Den støtter parallell ekstern kjøring.

Hvordan installere Fabric Automation Tool i Linux

En viktig egenskap ved stoffet er at de eksterne maskinene som du trenger å administrere, bare trenger å ha standard OpenSSH-serveren installert. Du trenger bare visse krav installert på serveren du administrerer de eksterne serverne fra før du kan komme i gang.

  1. Python 2.5+ med utviklingshodene
  2. Python-oppsettverktøy og pip (valgfritt, men foretrukket) gcc

Stoff er enkelt å installere ved å bruke pip (anbefales på det sterkeste), men du kan også foretrekke å velge standard pakkebehandling apt-get to install fabric package, vanligvis kalt stoff eller python-stoff.

For RHEL/CentOS-baserte distribusjoner må du ha EPEL-lager installert og aktivert på systemet for å installere stoffpakken.

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

For Debian og dets derivater som Ubuntu og Mint kan brukere ganske enkelt gjøre apt-get for å installere stoffpakken som vist:

# apt-get install fabric

Hvis du vil installere utviklingsversjon av stoffet, kan du bruke pip for å ta tak i den nyeste mastergrenen.

# 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]

Når pip har blitt installert, kan du bruke pip til å ta tak i den nyeste versjonen av stoffet som vist:

# pip install fabric

Hvordan bruke stoff til å automatisere Linux-administrasjonsoppgaver

Så la oss komme i gang med hvordan du kan bruke Fabric. Under installasjonsprosessen ble et Python-skript kalt fab lagt til en katalog i banen din. Det fantastiske manuset gjør alt arbeidet når du bruker stoff.

Ved konvensjon må du begynne med å lage en Python-fil kalt fabfile.py ved å bruke favorittredigeringsprogrammet ditt. Husk at du kan gi denne filen et annet navn som du ønsker, men du må spesifisere filbanen som følger:

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

Fabric bruker fabfile.py for å utføre oppgaver. Fabric-filen skal være i samme katalog der du kjører Fabric-verktøyet.

Eksempel 1: La oss lage en grunnleggende Hello World først.

# vi fabfile.py

Legg til disse kodelinjene i filen.

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

Lagre filen og kjør kommandoen nedenfor.

# fab hello

La oss nå se på et eksempel på en fabfile.py for å utføre oppetidskommandoen på den lokale maskinen.

Eksempel 2: Åpne en ny fabfile.py-fil som følger:

# vi fabfile.py

Og lim inn følgende kodelinjer i filen.

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

Lagre deretter filen og kjør følgende kommando:

# fab uptime

Fabric API bruker en konfigurasjonsordbok som er Pythons ekvivalent av en assosiativ matrise kjent som env, som lagrer verdier som kontrollerer hva Fabric gjør.

env.hosts er en liste over servere du vil kjøre Fabric-oppgaver på. Hvis nettverket ditt er 192.168.0.0 og ønsker å administrere vert 192.168.0.2 og 192.168.0.6 med fabfilen din, kan du konfigurere env.hosts som følger:

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

Kodelinjen ovenfor spesifiserer bare vertene du skal kjøre Fabric-oppgaver på, men ikke gjøre noe mer. Derfor kan du definere noen oppgaver, Fabric tilbyr et sett med funksjoner som du kan bruke til å samhandle med eksterne maskiner.

Selv om det er mange funksjoner, er de mest brukte:

  1. run – som kjører en shell-kommando på en ekstern maskin.
  2. local – som kjører kommandoen på den lokale maskinen.
  3. sudo – som kjører en shell-kommando på en ekstern maskin, med root-privilegier.
  4. Get – som laster ned én eller flere filer fra en ekstern maskin.
  5. Put – som laster opp én eller flere filer til en ekstern maskin.

Eksempel 3: For å ekko en melding på flere maskiner oppretter du en fabfile.py som den nedenfor.

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

For å utføre oppgavene, kjør følgende kommando:

# fab echo

Eksempel 4: Du kan forbedre fabfile.py som du opprettet tidligere for å utføre oppetidskommandoen på den lokale maskinen, slik at den kjører oppetidskommandoen og også sjekker diskbruk ved å bruke df-kommandoen på flere maskiner som følger:

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

Lagre filen og kjør følgende kommando:

# fab uptime
# fab disk_space

Eksempel 4: La oss se på et eksempel for å distribuere LAMP (Linux, Apache, MySQL/MariaDB og PHP) server på en ekstern Linux-server.

Vi skal skrive en funksjon som lar LAMP installeres eksternt ved å bruke root-privilegier.

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

Lagre filen og kjør følgende kommando:

# fab deploy_lamp

Merk: På grunn av stor produksjon er det ikke mulig for oss å lage en screencast (animert gif) for dette eksemplet.

Nå kan du automatisere Linux-serveradministrasjonsoppgaver ved å bruke Fabric og dets funksjoner og eksempler gitt ovenfor ...

  1. Du kan kjøre fab –help for å se hjelpeinformasjon og en lang liste over tilgjengelige kommandolinjealternativer.
  2. Et viktig alternativ er –fabfile=PATH som hjelper deg å spesifisere en annen python-modulfil for å importere enn fabfile.py.
  3. For å spesifisere et brukernavn som skal brukes når du kobler til eksterne verter, bruk –user=USER-alternativet.
  4. For å bruke passord for autentisering og/eller sudo, bruk –password=PASSWORD-alternativet.
  5. For å skrive ut detaljert informasjon om kommandoen NAME, bruk alternativet –display=NAME.
  6. For å se formater, bruk –list-alternativet, valg: kort, normal, nestet, bruk –list-format=FORMAT-alternativet.
  7. For å skrive ut liste over mulige kommandoer og avslutte, ta med –liste-alternativet.
  8. Du kan spesifisere plasseringen til konfigurasjonsfilen som skal brukes ved å bruke alternativet –config=PATH.
  9. For å vise en farget feilutgang, bruk –colorize-errors.
  10. For å se programmets versjonsnummer og avslutte, bruk –versjon-alternativet.

Sammendrag

Stoff er et kraftig verktøy og er godt dokumentert og gir enkel bruk for nybegynnere. Du kan lese hele dokumentasjonen for å få mer forståelse av den. Hvis du har informasjon å legge til eller incase av feil du støter på under installasjon og bruk, kan du legge igjen en kommentar, så skal vi finne måter å fikse dem på.

Referanse: Stoffdokumentasjon