Αν είστε διαχειριστής συστημάτων, είναι σημαντικό να έχετε έναν συνεπή τρόπο διαχείρισης όλων των διακομιστών και των υπολογιστών που χρησιμοποιείτε. Τα συστήματα διαχείρισης ρυθμίσεων μπορούν να απλοποιήσουν τη διαδικασία σε μεγάλο βαθμό. Διαχειρίζονται όλα τα συστήματα αποτελεσματικά από μια κεντρική τοποθεσία.
Στο Linux, υπάρχουν πολλαπλά διαθέσιμα συστήματα διαχείρισης ρυθμίσεων. Για παράδειγμα, το Puppet, Chef, Ansible, Bcfg2, Juju, CFEngine, κ.λπ. Ενώ εργαλεία όπως το Puppet και το Chef τείνουν να είναι πιο περίπλοκα και προηγμένα, το Ansible προσφέρει απλότητα και ευκολία στη χρήση. Δεν χρειάζεται να εγκαταστήσετε κανένα πρόσθετο λογισμικό πελάτη στους κόμβους για να λειτουργήσει το Ansible. Αντίθετα, το Ansible χρησιμοποιεί το SSH για τη διαχείριση και την αυτοματοποίηση συστημάτων. Το Ansible είναι λογισμικό ανοικτού κώδικα. Είναι επίσης εξαιρετικά επεκτάσιμο, συνεπές και αξιόπιστο.
Αυτός ο οδηγός δείχνει πώς να εγκαταστήσετε και να ρυθμίσετε το Ansible στο Ubuntu 20.04.
Ansible στο Ubuntu
Το Ansible μπορεί να επιτύχει τρεις τύπους αυτοματοποίησης:
-
Προετοιμασία (Provisioning): Μπορεί να δημιουργήσει διάφορους διακομιστές σύμφωνα με τις ανάγκες της υποδομής.
-
Διαχείριση ρυθμίσεων (Configuration management): Μπορεί να εκτελέσει διάφορες αλλαγές ρυθμίσεων σε διακομιστές. Για παράδειγμα, εκκίνηση και διακοπή υπηρεσιών, εγκατάσταση εφαρμογών και ενημερώσεων, εφαρμογή πολιτικών ασφαλείας κ.λπ.
-
Ανάπτυξη εφαρμογών (Application deployment): Διευκολύνει το DevOps με την αυτοματοποιημένη ανάπτυξη εσωτερικά αναπτυγμένων εφαρμογών στο σύστημα παραγωγής.
Το Ansible μπορεί να λειτουργήσει τέλεια σε σχεδόν οποιοδήποτε περιβάλλον πληροφορικής – είτε πρόκειται για φιλοξενούμενους ή παραδοσιακούς διακομιστές, πλατφόρμες εικονικοποίησης είτε στο cloud. Υποστηρίζει επίσης τη διαχείριση διαφόρων συστημάτων όπως βάσεις δεδομένων, δίκτυα, τείχη προστασίας, συσκευές αποθήκευσης και πολλά άλλα. Το CloudSigma υποστηρίζει επίσης το Ansible για την υποδομή cloud μας.
Προαπαιτούμενα
Για αυτόν τον οδηγό, χρειαζόμαστε μερικά μηχανήματα:
-
Κόμβος ελέγχου (Control node): Ο κόμβος ελέγχου είναι ο κεντρικός κόμβος που συνδέεται με όλους τους κόμβους-ξενιστές και αναθέτει εργασίες και διαχειρίζεται διάφορες πτυχές του συστήματος. Ο κόμβος ελέγχου μπορεί να είναι οτιδήποτε – ένα τοπικό μηχάνημα ή ένας απομακρυσμένος διακομιστής.
-
Κόμβος-ξενιστής (Host node): Οι ξενιστές (hosts) του Ansible είναι τα μηχανήματα που μπορεί να αυτοματοποιήσει ο κόμβος ελέγχου του Ansible.
Όπως υποδηλώνει ο τίτλος του οδηγού, όλα αυτά τα μηχανήματα αναμένεται να είναι ρυθμισμένα με Ubuntu 20.04 με τα τελευταία πακέτα. Ακολουθεί ένας γρήγορος οδηγός για τη ρύθμιση ενός διακομιστή Ubuntu. Επειδή το Ansible χρησιμοποιεί SSH για να συνδεθεί στα μηχανήματα, όλοι οι κόμβοι-ξενιστές πρέπει να έχουν ρυθμιστεί σωστά με κλειδιά SSH με τον κόμβο ελέγχου. Βεβαιωθείτε ότι όλοι οι κόμβοι-ξενιστές έχουν το δημόσιο κλειδί SSH του κόμβου ελέγχου προστιθέμενο στο authentication_keys αρχείο. Ακολουθήστε τον οδηγό μας για να μάθετε πώς να δημιουργήσετε και να προσθέσετε κλειδιά SSH σε διακομιστές Linux.
Βήμα 1: Εγκατάσταση του Ansible
Στην περίπτωση του Ubuntu, δεν υπάρχει ανάγκη για πρόσθετη ρύθμιση πακέτων ή αποθετηρίων. Το Ansible είναι άμεσα διαθέσιμο από τους επίσημους διακομιστές πακέτων του Ubuntu. Η εκτέλεση οποιωνδήποτε αλλαγών σε επίπεδο συστήματος απαιτεί πρόσβαση διαχειριστή – τον χρήστη root ή έναν χρήστη που δεν είναι root με δικαιώματα sudo. Το αρχείο sudoers διαχειρίζεται τα δικαιώματα sudo για χρήστες και ομάδες.
Αρχικά, θα εγκαταστήσουμε το Ansible στον υπολογιστή που θα χρησιμεύσει ως κόμβος ελέγχου. Για να εγκαταστήσετε το Ansible στον κόμβο ελέγχου, εκτελέστε τις ακόλουθες εντολές:
|
1 |
sudo apt update |

|
1 |
sudo apt install ansible -y |

Εάν πρόκειται να χρησιμοποιήσετε κωδικό πρόσβασης ως μηχανισμό ελέγχου ταυτότητας SSH, τότε πρέπει να έχετε το πακέτο sshpass εγκατεστημένο:
|
1 |
sudo apt install sshpass |

Βήμα 2: Ρύθμιση του αρχείου Inventory
Στο Ansible, το αρχείο inventory περιέχει πληροφορίες για όλους τους hosts που θα διαχειρίζεται το ansible. Μπορεί να είναι δεκάδες ή εκατοντάδες διακομιστές εγγεγραμμένοι στο inventory αρχείο. Οι διακομιστές μπορούν επίσης να χωριστούν σε ομάδες και υποομάδες. Γενικά, το inventory αρχείο χρησιμοποιείται για τον καθορισμό μεταβλητών που θα ισχύουν μόνο για τους συγκεκριμένους hosts ή ομάδες. Είναι μια χρήσιμη τεχνική για τη συγγραφή playbooks και προτύπων. Ορισμένες μεταβλητές μπορούν επίσης να επηρεάσουν τον τρόπο εκτέλεσης ενός playbook.
Το Ansible συνοδεύεται από ένα προεπιλεγμένο αρχείο inventory. Αρχικά, ανοίξτε το αρχείο σε έναν επεξεργαστή κειμένου:
|
1 |
sudo vim /etc/ansible/hosts |

Από προεπιλογή, το αρχείο inventory περιέχει διάφορα παραδείγματα για αναφορά. Ορίστε ένα παράδειγμα με μια ομάδα που ονομάζεται servers που περιέχει τρεις διαφορετικούς διακομιστές. Η μεταβλητή ansible_python_interpreter ορίζει τον διερμηνέα Python για όλους τους hosts που περιλαμβάνονται στο inventory. Με την οδηγία ansible_user, μπορούμε να δηλώσουμε τον λογαριασμό χρήστη με τον οποίο θα συνδεθεί το Ansible:
|
1 2 3 4 5 6 7 |
[servers] server_1 ansible_host=<server_1_ip> ansible_user=<server_1_username> server_2 ansible_host=<server_2_ip> ansible_user=<server_2_username> server_3 ansible_host=<server_3_ip> ansible_user=<server_3_username> [all:vars] ansible_python_interpreter=/usr/bin/python3 |

Στη συνέχεια, αποθηκεύστε το αρχείο και κλείστε τον επεξεργαστή κειμένου. Για να ελέγξετε το inventory, εκτελέστε την ακόλουθη εντολή:
|
1 |
ansible-inventory --list -y |
Το αποτέλεσμα θα πρέπει να μοιάζει κάπως έτσι:

Βήμα 3: Δοκιμή Σύνδεσης
Μετά τη διαμόρφωση του αρχείου inventory, πρέπει να δοκιμάσουμε αν το Ansible μπορεί να συνδεθεί σε αυτούς τους διακομιστές μέσω SSH. Μπορούμε να το κάνουμε αυτό κάνοντας απλώς ping σε όλους τους κόμβους host. Από τον control node, κάντε ping σε όλους τους host κόμβους:
|
1 |
ansible all -m ping |
Το ping module ελέγχει τα εξής:
-
Προσβασιμότητα του host
-
Εγκυρότητα των διαπιστευτηρίων SSH
-
Οι hosts μπορούν να εκτελέσουν Ansible modules χρησιμοποιώντας Python
Το αποτέλεσμα θα πρέπει να μοιάζει κάπως έτσι:

Αν η απάντηση από έναν συγκεκριμένο κόμβο είναι pong, σημαίνει ότι ο κόμβος είναι έτοιμος να εκτελέσει εντολές και playbooks του Ansible στον διακομιστή.
Βήμα 4: Εκτέλεση Ad-Hoc Εντολών
Αυτό είναι ένα προαιρετικό βήμα. Ωστόσο, μπορεί να είναι χρήσιμο για την επαλήθευση της πλήρους λειτουργικότητας του Ansible στους απομακρυσμένους διακομιστές. Αυτή η ενότητα μπορεί επίσης να χρησιμεύσει ως μια βασική εισαγωγή στην πρόσθετη χρήση και διαμόρφωση του Ansible. Μόλις επιβεβαιώσουμε τη συνδεσιμότητα με τους κόμβους, μπορούμε να ξεκινήσουμε την εκτέλεση ad-hoc εντολών και playbooks. Οποιαδήποτε εντολή που θα εκτελούσατε κανονικά στους απομακρυσμένους διακομιστές μπορεί να εκτελεστεί με το Ansible σε όλους τους διακομιστές.
Εδώ, εκτελέστε την ακόλουθη εντολή. Θα ελέγξει τη χρήση του δίσκου σε όλους τους κόμβους ταυτόχρονα:
|
1 |
ansible all -a "df -h" |

Μπορούμε επίσης να εκτελέσουμε διάφορα Ansible modules χρησιμοποιώντας τη δυνατότητα ad-hoc εντολών, ακριβώς όπως εκτελέσαμε το ping module για δοκιμή. Για παράδειγμα, το apt module λειτουργεί με τον διαχειριστή πακέτων APT στο Ubuntu. Μπορεί να διαχειριστεί πακέτα σε έναν απομακρυσμένο κόμβο Ubuntu. Σημειώστε ότι απαιτείται άδεια root για την πραγματοποίηση αλλαγών σε επίπεδο συστήματος. Ο απομακρυσμένος κόμβος πρέπει να επιτρέπει τη σύνδεση root ή ο χρήστης πρέπει να έχει άδεια εκτέλεσης διοικητικών εργασιών.
Στο ακόλουθο παράδειγμα, το Ansible εγκαθιστά το Nginx σε όλους τους κόμβους host:
|
1 |
ansible all -m apt -a "name=nginx state=latest" -u root |
Τι γίνεται με την εκτέλεση εντολών σε έναν μόνο διακομιστή; Θα χρησιμοποιήσουμε το ψευδώνυμο του διακομιστή (που έχει εκχωρηθεί μέσα στο αρχείο inventory) για να καθορίσουμε τον διακομιστή:
|
1 |
ansible server_1 -a "df -h" -u cloudsigma |

Μπορούμε επίσης να καθορίσουμε πολλούς διακομιστές. Δηλώστε το ψευδώνυμο κάθε διακομιστή-στόχου με μια άνω-κάτω τελεία ως διαχωριστικό:
|
1 |
ansible server_1:server_2:server_3 -a "df -h" -u cloudsigma |

Τελικές Σκέψεις
Σε αυτόν τον οδηγό, σας δείξαμε μια μέθοδο βήμα προς βήμα για να εγκαταστήσετε το Ansible και να διαμορφώσετε ένα αρχείο inventory για την εκτέλεση ad-hoc εντολών από τον κόμβο ελέγχου (control node) του Ansible. Μόλις διαμορφωθεί, ο κόμβος ελέγχου μπορεί να εκτελέσει οποιαδήποτε εντολή ή playbook επιθυμείτε να τρέξετε στους hosts.
Καλή συνέχεια!
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.