In de steeds veranderende wereld van softwareontwikkeling is efficiënt beheer van externe servers cruciaal. Of je nu een systeembeheerder, een software-engineer of een softwareontwikkelaar bent, het kunnen uitvoeren van Linux-commando’s op externe servers is een veelvoorkomende taak.
Dit is waar Fabric, een hoog-niveau Python-bibliotheek die is ontworpen om Linux-commando’s op afstand via SSH uit te voeren, het een onmisbaar gereedschap maakt voor iedereen die externe systemen moet beheren terwijl hij de kracht van Python benut.
Wat is Fabric?
Fabric is een veelzijdige Python-bibliotheek die het proces van het uitvoeren van shell-commando’s op externe servers via SSH-verbindingen vereenvoudigt. Het werd oorspronkelijk ontwikkeld door Jeff Forcier en werd later een open-source project.
Het biedt een hoog-niveau, Pythonic interface voor het werken met externe systemen, waardoor je taken kunt automatiseren, code kunt implementeren en configuraties over meerdere servers moeiteloos kunt beheren.
Waarom Fabric gebruiken?
Er zijn verschillende overtuigende redenen om Fabric te kiezen voor je behoeften aan het uitvoeren van externe commando’s:
- Pythonic Approach – Fabric houdt zich aan de filosofie van Python, waardoor het voor ontwikkelaars en systeembeheerders gemakkelijk is om scripts te schrijven in een taal waar ze al bekend mee zijn.
- SSH en Paramiko – Fabric vertrouwt op de Paramiko-bibliotheek om SSH-verbindingen te beheren, wat een veilige en betrouwbare manier biedt om opdrachten op afstand uit te voeren.
- Taakgebaseerde Workflow – Fabric moedigt een taakgerichte benadering aan voor het uitvoeren van opdrachten op afstand. U definieert taken, die in feite Python-functies zijn, en Fabric zorgt voor de uitvoering ervan op externe servers.
- Gebruiksscenario’s – Fabric is een veelzijdige tool die geschikt is voor een breed scala aan gebruiksscenario’s, waaronder het implementeren van toepassingen, het beheren van serverconfiguraties en het uitvoeren van systeemonderhoudstaken.
In deze handleiding zullen we de stappen behandelen om Fabric te introduceren en aan de slag te gaan met het verbeteren van serverbeheer voor groepen servers.
Hoe Fabric Automatiseringstool te Installeren in Linux
Een belangrijk kenmerk van fabric is dat de externe machines die u moet beheren alleen de standaard OpenSSH-server geïnstalleerd hoeven te hebben.
U hebt slechts bepaalde vereisten geïnstalleerd op de server nodig waarvan u de externe servers beheert voordat u kunt beginnen.
Vereisten:
- Python 2.5+ met de ontwikkelingsheaders
- Python-setuptools en pip (optioneel, maar aanbevolen) gcc
Fabric is gemakkelijk te installeren met behulp van de pip package manager, maar u kunt ook uw standaard pakketbeheerder kiezen yum, dnf, of apt/apt-get om het fabric pakket te installeren, meestal aangeduid als fabric of python-fabric.
Fabric installeren op RHEL-systemen
Op RHEL-gebaseerde distributies zoals CentOS Stream, Rocky Linux, en AlmaLinux, moet u de EPEL-repository geïnstalleerd en ingeschakeld hebben op het systeem om het fabric pakket te installeren.
sudo dnf install epel-release sudo dnf install fabric
Install Fabric in Debian Systems
Op Debian-gebaseerde distributies zoals Ubuntu en Linux Mint kunnen gebruikers gewoon apt doen om het fabric pakket te installeren zoals weergegeven:
sudo apt install fabric
Install Fabric Using PiP
Als fabric niet beschikbaar is uit de repositories van uw systeem, kunt u pip gebruiken om het te installeren zoals weergegeven.
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]
Zodra pip succesvol is geïnstalleerd, kunt u pip gebruiken om de nieuwste versie van fabric te downloaden zoals weergegeven:
pip3 install fabric
Hoe Fabric te gebruiken om Linux-beheertaken te automatiseren
Laten we beginnen met het gebruik van Fabric. Als onderdeel van het installatieproces is een Python-script genaamd 'fab'
toegevoegd aan een directory in het pad van uw systeem. Het 'fab'
script verwerkt alle taken bij het gebruik van Fabric.
Voer Linux-opdrachten lokaal uit
Volgens afspraak moet je beginnen met het maken van een Python-bestand met de naam fabfile.py
met behulp van je favoriete teksteditor. Vergeet niet dat je dit bestand een andere naam kunt geven, maar dan moet je de bestandslocatie als volgt opgeven:
fab --fabfile /path/to/the/file.py
Fabric gebruikt 'fabfile.py'
om taken uit te voeren, de 'fabfile'
moet zich in dezelfde map bevinden waar je het Fabric hulpmiddel uitvoert.
Voorbeeld 1: Laten we eerst een eenvoudige Hello World
maken.
# vi fabfile.py
Voeg deze regels code toe aan het bestand.
def hello(): print('Hello world, Tecmint community')
Sla het bestand op en voer de onderstaande opdracht uit.
# fab hello

Laten we nu eens kijken naar een voorbeeld van een fabfile.py om de uptime opdracht uit te voeren op de lokale machine.
Voorbeeld 2: Open een nieuw fabfile.py bestand als volgt:
# vi fabfile.py
En plak de volgende regels code in het bestand.
#! /usr/bin/env python from fabric.api import local def uptime(): local('uptime')
Sla het bestand vervolgens op en voer de volgende opdracht uit:
# fab uptime

Voer Linux-opdrachten op afstand uit via SSH
De Fabric API gebruikt een configuratiedictionary, dat in Python vergelijkbaar is met een associatieve array en bekend staat als env
, waarin waarden worden opgeslagen die bepalen wat Fabric doet.
De env.hosts
is een lijst met servers waarop u Fabric taken wilt uitvoeren. Als uw netwerk 192.168.0.0 is en u wilt hosts 192.168.0.2 en 192.168.0.6 beheren met uw fabfile, kunt u de env.hosts als volgt configureren:
#!/usr/bin/env python from fabric.api import env env.hosts = [ '192.168.0.2', '192.168.0.6' ]
De bovenstaande regel code specificeert alleen de hosts waarop u Fabric taken zult uitvoeren, maar doet verder niets. Daarom kunt u enkele taken definiëren; Fabric biedt een reeks functies die u kunt gebruiken om te communiceren met uw externe machines.
Hoewel er veel functies zijn, worden de meest gebruikte gewoonlijk gebruikt:
- run – die een shell-opdracht uitvoert op een externe machine.
- local – die de opdracht uitvoert op de lokale machine.
- sudo – die een shell-opdracht uitvoert op een externe machine, met root-rechten.
- Get – die één of meer bestanden downloadt vanaf een externe machine.
- Put – die één of meer bestanden uploadt naar een externe machine.
Voorbeeld 3: Om een boodschap op meerdere machines te echoën, maak een fabfile.py
zoals hieronder.
#!/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 ' ")
Om de taken uit te voeren, voer de volgende opdracht uit:
# fab echo

Voorbeeld 4: U kunt de fabfile.py
die u eerder hebt gemaakt, aanpassen om de opdracht uptime uit te voeren op de lokale machine, zodat deze de opdracht uptime uitvoert en ook schijfgebruik controleert met behulp van de df-opdracht op meerdere machines, als volgt:
#!/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')
Sla het bestand op en voer de volgende opdracht uit:
# fab uptime # fab disk_space

Automatische Installatie van LAMP-stack op een Externe Linux-server
Voorbeeld 4: Laten we een voorbeeld bekijken van het implementeren van een LAMP (Linux, Apache, MySQL/MariaDB en PHP) server op een externe Linux-server.
We zullen een functie schrijven die LAMP op afstand kan installeren met behulp van root-rechten.
Voor RHEL/CentOS en Fedora
#!/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")
Voor Debian/Ubuntu en 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")
Sla het bestand op en voer de volgende opdracht uit:
# fab deploy_lamp
Opmerking: Vanwege de grote output, kunnen we geen screencast (geanimeerde gif) voor dit voorbeeld maken.
Nu kunt u Linux-serverbeheertaken automatiseren met behulp van Fabric en de hierboven gegeven functies en voorbeelden…
Handige Opties voor Fabric
- Je kunt
fab --help
uitvoeren om nuttige informatie te bekijken en een lange lijst met beschikbare opdrachtregelopties. - Een belangrijke optie
--fabfile=PATH
die helpt om een ander Python modulebestand te importeren danfabfile.py
. - Om een gebruikersnaam op te geven die wordt gebruikt bij het verbinden met externe hosts, gebruik de
--user=USER
optie. - Om een wachtwoord voor authenticatie en/of sudo te gebruiken, gebruik de
--password=PASSWORD
optie. - Om gedetailleerde informatie over opdracht NAAM weer te geven, gebruik de
--display=NAME
optie. - Om formaten weer te geven, gebruik de
--list
optie, keuzes: kort, normaal, genest, gebruik de--list-format=FORMAT
optie. - Om een lijst met mogelijke opdrachten weer te geven en te stoppen, bevat de
--list
optie. - Je kunt de locatie van het configuratiebestand opgeven door de
--config=PATH
optie te gebruiken. - Om een gekleurde foutuitvoer weer te geven, gebruik
--colorize-errors
. - Om het programma’s versienummer weer te geven en te stoppen, gebruik de
--version
optie.
Samenvatting
Fabric is een krachtige Python-bibliotheek die remote command uitvoering stroomlijnt via SSH, biedt een gebruiksvriendelijke Pythonic aanpak. Het vermogen om complexe taken te vereenvoudigen en systeembeheer te automatiseren, maakt het een waardevol hulpmiddel voor systeembeheerders, ontwikkelaars en DevOps professionals.
Of u nu een enkele server beheert of een grootschalige implementatie coördineert, Fabric kan u helpen om de klus efficiënt en effectief te klaren.
Source:
https://www.tecmint.com/automating-linux-system-administration-tasks/