Fabric - Αυτοματοποιήστε τις εργασίες διαχείρισης Linux και τις αναπτύξεις εφαρμογών μέσω SSH


Όταν πρόκειται για τη διαχείριση απομακρυσμένων μηχανών και την ανάπτυξη εφαρμογών, υπάρχουν πολλά εργαλεία γραμμής εντολών εκεί έξω, αν και πολλά έχουν ένα κοινό πρόβλημα έλλειψης λεπτομερούς τεκμηρίωσης.

Σε αυτόν τον οδηγό, θα καλύψουμε τα βήματα για την εισαγωγή και την έναρξη χρήσης του υφάσματος για τη βελτίωση της διαχείρισης ομάδων διακομιστών.

Το Fabric είναι μια βιβλιοθήκη python και ένα ισχυρό εργαλείο γραμμής εντολών για την εκτέλεση εργασιών διαχείρισης συστήματος, όπως η εκτέλεση εντολών SSH σε πολλαπλούς υπολογιστές και η ανάπτυξη εφαρμογών.

Διαβάστε επίσης: Χρησιμοποιήστε το Shell Scripting για να αυτοματοποιήσετε τις εργασίες συντήρησης συστήματος Linux

Η γνώση εργασίας της Python μπορεί να είναι χρήσιμη κατά τη χρήση του Fabric, αλλά σίγουρα μπορεί να μην είναι απαραίτητη.

Λόγοι για τους οποίους πρέπει να επιλέξετε ύφασμα έναντι άλλων εναλλακτικών:

  1. Απλότητα
  2. Είναι καλά τεκμηριωμένο
  3. Δεν χρειάζεται να μάθετε άλλη γλώσσα εάν είστε ήδη τύπος πύθωνα.
  4. Εύκολη εγκατάσταση και χρήση.
  5. Είναι γρήγορο στις λειτουργίες του.
  6. Υποστηρίζει παράλληλη απομακρυσμένη εκτέλεση.

Πώς να εγκαταστήσετε το Fabric Automation Tool στο Linux

Ένα σημαντικό χαρακτηριστικό του υφάσματος είναι ότι τα απομακρυσμένα μηχανήματα που πρέπει να διαχειριστείτε χρειάζεται μόνο να έχουν εγκατεστημένο τον τυπικό διακομιστή OpenSSH. Χρειάζεστε μόνο ορισμένες απαιτήσεις εγκατεστημένες στον διακομιστή από τον οποίο διαχειρίζεστε τους απομακρυσμένους διακομιστές για να μπορέσετε να ξεκινήσετε.

Απαιτήσεις:

  1. Python 2.5+ με τις κεφαλίδες ανάπτυξης
  2. Python-setuptools και pip (προαιρετικό, αλλά προτιμώμενο) gcc

Το Fabric εγκαθίσταται εύκολα χρησιμοποιώντας το pip (συνιστάται ιδιαίτερα), αλλά μπορείτε επίσης να προτιμήσετε να επιλέξετε τον προεπιλεγμένο διαχειριστή πακέτων apt-get για να εγκαταστήσετε το πακέτο υφασμάτων, που συνήθως ονομάζεται fabric ή ύφασμα python.

Για διανομές που βασίζονται σε RHEL/CentOS, πρέπει να έχετε εγκατεστημένο και ενεργοποιημένο το αποθετήριο EPEL στο σύστημα για να εγκαταστήσετε το πακέτο υφασμάτων.

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

Για το Debian και τα παράγωγά του όπως το Ubuntu και το Mint οι χρήστες μπορούν απλώς να κάνουν apt-get για να εγκαταστήσουν το πακέτο υφασμάτων όπως φαίνεται:

# apt-get install fabric

Εάν θέλετε να εγκαταστήσετε την έκδοση ανάπτυξης του υφάσματος, μπορείτε να χρησιμοποιήσετε το pip για να πάρετε το πιο πρόσφατο κύριο κλαδί.

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

Μόλις το pip εγκατασταθεί με επιτυχία, μπορείτε να χρησιμοποιήσετε το pip για να πάρετε την πιο πρόσφατη έκδοση του υφάσματος όπως φαίνεται:

# pip install fabric

Πώς να χρησιμοποιήσετε το Fabric για να αυτοματοποιήσετε τις εργασίες διαχείρισης Linux

Ας ξεκινήσουμε λοιπόν πώς μπορείτε να χρησιμοποιήσετε το Fabric. Κατά τη διαδικασία εγκατάστασης, ένα σενάριο Python που ονομάζεται fab προστέθηκε σε έναν κατάλογο στη διαδρομή σας. Το σενάριο fab κάνει όλη τη δουλειά όταν χρησιμοποιείτε ύφασμα.

Εκτέλεση εντολών στην τοπική μηχανή Linux

Κατά σύμβαση, πρέπει να ξεκινήσετε δημιουργώντας ένα αρχείο Python που ονομάζεται fabfile.py χρησιμοποιώντας τον αγαπημένο σας επεξεργαστή. Θυμηθείτε ότι μπορείτε να δώσετε σε αυτό το αρχείο ένα διαφορετικό όνομα όπως θέλετε, αλλά θα πρέπει να καθορίσετε τη διαδρομή του αρχείου ως εξής:

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

Το Fabric χρησιμοποιεί το fabfile.py για την εκτέλεση εργασιών. Το αρχείο fab πρέπει να βρίσκεται στον ίδιο κατάλογο όπου εκτελείτε το εργαλείο Fabric.

Παράδειγμα 1: Ας δημιουργήσουμε πρώτα ένα βασικό Hello World.

# vi fabfile.py

Προσθέστε αυτές τις γραμμές κώδικα στο αρχείο.

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

Αποθηκεύστε το αρχείο και εκτελέστε την παρακάτω εντολή.

# fab hello

Ας δούμε τώρα ένα παράδειγμα ενός fabfile.py για την εκτέλεση της εντολής uptime στον τοπικό υπολογιστή.

Παράδειγμα 2: Ανοίξτε ένα νέο αρχείο fabfile.py ως εξής:

# vi fabfile.py

Και επικολλήστε τις ακόλουθες γραμμές κώδικα στο αρχείο.

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

Στη συνέχεια αποθηκεύστε το αρχείο και εκτελέστε την ακόλουθη εντολή:

# fab uptime

Εκτέλεση εντολών σε απομακρυσμένα μηχανήματα Linux για αυτοματοποίηση εργασιών

Το Fabric API χρησιμοποιεί ένα λεξικό διαμόρφωσης που είναι το ισοδύναμο της Python με έναν συσχετιστικό πίνακα γνωστό ως env, ο οποίος αποθηκεύει τιμές που ελέγχουν τι κάνει το Fabric.

Ο env.hosts είναι μια λίστα διακομιστών στους οποίους θέλετε να εκτελούνται εργασίες Fabric. Εάν το δίκτυό σας είναι 192.168.0.0 και επιθυμείτε να διαχειριστείτε τον κεντρικό υπολογιστή 192.168.0.2 και τον 192.168.0.6 με το fabfile σας , θα μπορούσατε να διαμορφώσετε το env.hosts ως εξής:

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

Η παραπάνω γραμμή κώδικα καθορίζει μόνο τους κεντρικούς υπολογιστές στους οποίους θα εκτελέσετε εργασίες Fabric, αλλά δεν κάνετε τίποτα περισσότερο. Επομένως, μπορείτε να ορίσετε ορισμένες εργασίες, το Fabric παρέχει ένα σύνολο λειτουργιών που μπορείτε να χρησιμοποιήσετε για να αλληλεπιδράσετε με τα απομακρυσμένα μηχανήματα σας.

Αν και υπάρχουν πολλές λειτουργίες, οι πιο συχνά χρησιμοποιούμενες είναι:

  1. run – που εκτελεί μια εντολή φλοιού σε απομακρυσμένο μηχάνημα.
  2. τοπικό – το οποίο εκτελεί εντολή στον τοπικό υπολογιστή.
  3. sudo – το οποίο εκτελεί μια εντολή φλοιού σε απομακρυσμένο μηχάνημα, με δικαιώματα root.
  4. Λήψη – που κατεβάζει ένα ή περισσότερα αρχεία από απομακρυσμένο μηχάνημα.
  5. Put – που ανεβάζει ένα ή περισσότερα αρχεία σε απομακρυσμένο μηχάνημα.

Παράδειγμα 3: Για να επαναλάβετε ένα μήνυμα σε πολλά μηχανήματα, δημιουργήστε ένα fabfile.py όπως το παρακάτω.

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

Για να εκτελέσετε τις εργασίες, εκτελέστε την ακόλουθη εντολή:

# fab echo

Παράδειγμα 4: Μπορείτε να βελτιώσετε το fabfile.py που δημιουργήσατε νωρίτερα για να εκτελέσετε τον χρόνο λειτουργίας εντολή στο τοπικό μηχάνημα, έτσι ώστε να εκτελεί την εντολή uptime και επίσης να ελέγχει τη χρήση του δίσκου χρησιμοποιώντας την εντολή df σε πολλά μηχανήματα ως εξής:

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

Αποθηκεύστε το αρχείο και εκτελέστε την ακόλουθη εντολή:

# fab uptime
# fab disk_space

Αυτόματη ανάπτυξη στοίβας LAMP σε απομακρυσμένο διακομιστή Linux

Παράδειγμα 4: Ας δούμε ένα παράδειγμα για την ανάπτυξη του διακομιστή LAMP (Linux, Apache, MySQL/MariaDB και PHP) σε έναν απομακρυσμένο διακομιστή Linux.

Θα γράψουμε μια συνάρτηση που θα επιτρέπει την απομακρυσμένη εγκατάσταση του LAMP χρησιμοποιώντας δικαιώματα root.

Για RHEL/CentOS και 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")
Για Debian/Ubuntu και 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-php5 php5-mysql")

Αποθηκεύστε το αρχείο και εκτελέστε την ακόλουθη εντολή:

# fab deploy_lamp

Σημείωση: Λόγω της μεγάλης απόδοσης, δεν είναι δυνατό να δημιουργήσουμε ένα screencast (κινούμενο gif) για αυτό το παράδειγμα.

Τώρα μπορείτε να αυτοματοποιήσετε τις εργασίες διαχείρισης διακομιστή Linux χρησιμοποιώντας το Fabric και τις δυνατότητες και τα παραδείγματα που αναφέρονται παραπάνω…

Μερικές χρήσιμες επιλογές για χρήση με ύφασμα

  1. Μπορείτε να εκτελέσετε το fab –help για να δείτε πληροφορίες βοήθειας και μια μακρά λίστα διαθέσιμων επιλογών γραμμής εντολών.
  2. Μια σημαντική επιλογή είναι το –fabfile=PATH που σας βοηθά να καθορίσετε ένα διαφορετικό αρχείο λειτουργικής μονάδας python για εισαγωγή άλλου από το fabfile.py.
  3. Για να καθορίσετε ένα όνομα χρήστη που θα χρησιμοποιείται κατά τη σύνδεση σε απομακρυσμένους κεντρικούς υπολογιστές, χρησιμοποιήστε την επιλογή –user=USER.
  4. Για να χρησιμοποιήσετε κωδικό πρόσβασης για έλεγχο ταυτότητας και/ή sudo, χρησιμοποιήστε την επιλογή –password=PASSWORD.
  5. Για να εκτυπώσετε λεπτομερείς πληροφορίες σχετικά με την εντολή NAME, χρησιμοποιήστε την επιλογή –display=NAME.
  6. Για να δείτε μορφές χρησιμοποιήστε την επιλογή –list, επιλογές: σύντομη, κανονική, ένθετη, χρησιμοποιήστε την επιλογή –list-format=FORMAT.
  7. Για να εκτυπώσετε λίστα πιθανών εντολών και να βγείτε, συμπεριλάβετε την επιλογή –list.
  8. Μπορείτε να καθορίσετε τη θέση του αρχείου διαμόρφωσης που θα χρησιμοποιηθεί χρησιμοποιώντας την επιλογή –config=PATH.
  9. Για να εμφανίσετε μια έξοδο έγχρωμου σφάλματος, χρησιμοποιήστε –colorize-errors.
  10. Για να δείτε τον αριθμό έκδοσης του προγράμματος και να βγείτε, χρησιμοποιήστε την επιλογή –έκδοση.

Περίληψη

Το Fabric είναι ένα ισχυρό εργαλείο και είναι καλά τεκμηριωμένο και παρέχει εύκολη χρήση για αρχάριους. Μπορείτε να διαβάσετε την πλήρη τεκμηρίωση για να την κατανοήσετε περισσότερο. Εάν έχετε οποιαδήποτε πληροφορία να προσθέσετε ή να καλύψετε τυχόν σφάλματα που αντιμετωπίζετε κατά την εγκατάσταση και τη χρήση, μπορείτε να αφήσετε ένα σχόλιο και θα βρούμε τρόπους για να τα διορθώσουμε.

Παραπομπή: Τεκμηρίωση υφάσματος