Komme i gang med Fabric Python Library

Fabric er et Python-bibliotek og kommandolinjeverktøy for effektivisering av bruken av SSH for applikasjonsutplassering eller systemadministrasjonsoppgaver. Stoffet er veldig enkelt og kraftig, og kan bidra til å automatisere repetitive kommandolinjeoppgaver. Denne tilnærmingen kan spare tid ved å automatisere hele arbeidsflyten. 

Denne opplæringen vil dekke hvordan du bruker Fabric for å integrere med SSH og automatisere oppgaver.

Installasjon

Stoffet er best installert via pip:

$ pip installert stoff 

Komme i gang med stoff

bruk

Nedenfor er en enkel funksjon som viser hvordan du bruker stoff.

def velkommen (): print ("Velkommen til å komme i gang med Fabric!")

Programmet over lagres så som fabfile.py i din nåværende arbeidskatalog. Velkomstfunksjonen kan utføres med fab verktøy som følger:

$ fab velkommen Velkommen til å komme i gang med Fabric

Fabric gir fab kommandoen som leser sin konfigurasjon fra en fil, fabfile.py. Filen skal være i katalogen der kommandoen kjøres. En standard fabfile inneholder funksjonene som skal utføres på en ekstern vert eller en gruppe av eksterne verter.

Egenskaper

Fabric implementerer funksjoner som kan brukes til å kommunisere med eksterne verter:

fabric.operations.run ()

Denne operasjonen brukes til å kjøre en shell-kommando på en ekstern vert.

eksempler

løp ("ls / var / www /") kjøre ("ls / home / userx", shell = False) output = kjør ('ls / var / www / mysites'

fabric.operations.get ()

Denne funksjonen brukes til å laste ned filer fra en ekstern vert. Eksempelet nedenfor viser hvordan du laster ned en sikkerhetskopi fra en ekstern server.

# Last ned en sikkerhetskopi ("/ backup / db.bak", "./db.bak") 

fabric.operations.put ()

Disse funksjonene laster opp filer til en ekstern vert. For eksempel:

med cd ('/ tmp'): put ('/ path / to / local / test.txt', 'files')

fabric.operations.reboot ()

Som navnet antyder, gjenoppretter denne funksjonen en systemserver.

# Start datamaskinen på nytt () 

fabric.operations.sudo ()

Denne funksjonen brukes til å utføre kommandoer på en ekstern vert med superbrukerrettigheter. I tillegg kan du også sende et nytt brukerargument som lar deg kjøre kommandoer som en annen bruker enn rot.

Eksempel

# Opprett en katalog sudo ("mkdir / var / www")

fabric.operations.local ()

Denne funksjonen brukes til å kjøre en kommando på det lokale systemet. Et eksempel er:

# Trekk ut innholdet i et tjærearkiv lokalt ("tar xzvf /tmp/trunk/app.tar.gz") # Fjern en fil lokal ("rm /tmp/trunk/app.tar.gz")

fabric.operations.prompt ()

Funksjonen ber brukeren med tekst og returnerer inngangen.

eksempler

# Enkeleste form: miljø = prompt ('Vennligst spesifiser målmiljø:') # angi vert env_host = prompt ('Vennligst spesifiser vert:') 

fabric.operations.require ()

Denne funksjonen brukes til å sjekke for gitt nøkler i et delt miljødikt. Hvis ikke funnet, avbrytes operasjonen.

SSH Integrasjon

En av måtene utviklere samhandler med eksterne servere i tillegg til FTP-klienter, er via SSH. SSH brukes til å koble til eksterne servere og gjøre alt fra grunnleggende konfigurasjon til å kjøre Git eller starte en webserver.

Med Fabric kan du utføre SSH-aktiviteter fra din lokale datamaskin.

Eksemplet nedenfor definerer funksjoner som viser hvordan du kontrollerer ledig diskplass og vertstype. Det definerer også hvilken vert som skal kjøre kommandoen:

# Import Fabrics API-modul fra fabric.api importkjøring env.hosts = '159.89.39.54' # Angi brukernavnet env.user = "root" def host_type (): run ('uname -s') def diskspace (): run ('df') def sjekke (): # sjekk verts type host_type () # Sjekk diskplass diskplass () 

For å kunne kjøre denne koden må du kjøre følgende kommando på terminalen:

fab sjekk

Produksjon

fab tjekke [159.89.39.54] Utføre oppgave 'sjekk' [159.89.39.54] run: uname -s [159.89.39.54] Logg inn passord for "root": [159.89.39.54] ut: Linux [159.89.39.54] ut: 159.89.39.54] run: df [159.89.39.54] ut: Filsystem 1K-blokker Brukt Tilgjengelig Bruk% Montert på [159.89.39.54] ut: udev 242936 0 242936 0% / dev [159.89.39.54] ut: tmpfs 50004 6020 43984 13% / løp [159.89.39.54] ut: / dev / vda1 20145768 4398716 15730668 22% / [159.89.39.54] ut: tmpfs 250012 1004 249008 1% / dev / shm [159.89.39.54] ut: tmpfs 5120 0 5120 0 % / run / lock [159.89.39.54] ut: tmpfs 250012 0 250012 0% / sys / fs / cgroup [159.89.39.54] ut: / dev / vda15 106858 3426 103433 4% / boot / efi [159.89.39.54] ut : tmpfs 50004 0 50004 0% / løp / bruker / 0 [159.89.39.54] ut: ingen 20145768 4398716 15730668 22% / var / lib / docker / aufs / mnt / 781d1ce30963c0fa8af93b5679bf96425a0a10039d10be8e745e1a22a9909105 [159.89.39.54] ut: shm 65536 0 65536 0 % / var / lib / docker / containere / 036b6bcd5344f13fdb1fc738752a0850219c7364b1a3386182fead0dd8b7460b / shm [159.89.39 0,54] ut: ingen 20145768 4398716 15730668 22% / var / lib / havnearbeider / aufs / mnt / 17934c0fe3ba83e54291c1aebb267a2762ce9de9f70303a65b12f808444dee80 [159.89.39.54] ut: SHM 65 536 0 65 536 0% / var / lib / havnearbeider / beholdere / fd90146ad4bcc0407fced5e5fbcede5cdd3cff3e96ae951a88f0779ec9c2e42d / shm [159,89 .39.54] ut: ingen 20145768 4398716 15730668 22% / var / lib / havnearbeider / aufs / mnt / ba628f525b9f959664980a73d94826907b7df31d54c69554992b3758f4ea2473 [159.89.39.54] ut: SHM 65 536 0 65 536 0% / var / lib / havnearbeider / beholdere / dbf34128cafb1a1ee975f56eb7637b1da0bfd3648e64973e8187ec1838e0ea44 / shm [159,89 .39.54] ut: Utført. Kobler fra 159.89.39.54 ... ferdig. 

Automatiseringsoppgaver

Stoff gjør det mulig å kjøre kommandoer på en ekstern server uten å måtte logge på den eksterne serveren.

Ekstern utførelse med Fabric kan føre til sikkerhetstrusler, siden det krever en åpen SSH-port, spesielt på Linux-maskiner.

For eksempel, anta at du vil oppdatere systembiblioteker på den eksterne serveren din. Du trenger ikke nødvendigvis å utføre oppgavene hver annen gang. Du kan bare skrive en enkel fab-fil som du vil kjøre hver gang du vil utføre oppgavene.

I dette tilfellet importerer du først stoffet API-modulen:

fra fabric.api import *

Definer den eksterne verten du vil oppdatere:

env.hosts = '159.89.39.54'

Angi brukernavnet til den eksterne verten:

env.user = "root"

Selv om det ikke anbefales, må du kanskje angi passordet til den eksterne verten.

Til slutt definerer du funksjonen som oppdaterer bibliotekene i den eksterne verten.

def update_libs (): "" "Oppdater standard OS-installasjonens grunnleggende standardverktøy." "" run ("apt-get update")

Nå som din fab-fil er klar, er alt du trenger å gjøre, utført som følger:

$ fab oppdatering

Du bør se følgende resultat:

$ fab-oppdatering [159.89.39.54] Utfør oppgaven 'update' [159.89.39.54] run: apt-get update [159.89.39.54] Logg inn passord for 'root':

Hvis du ikke har definert passordet, blir du bedt om det.

Etter at programmet har fullført de definerte kommandoene, får du følgende svar, hvis det ikke oppstår feil:

$ fab oppdatering ... Koble fra 159.89.39.54 ... ferdig. 

Konklusjon

Denne opplæringen har dekket det som er nødvendig for å komme i gang med Fabric lokalt og på eksterne verter. Du kan nå trygt begynne å skrive egne skript for å bygge, overvåke eller vedlikeholde eksterne servere.