Το Ansible, ένα δωρεάν και ανοιχτού κώδικα που βασίζεται σε Python έργο της Red Hat, είναι μια δημοφιλής πλατφόρμα διαχείρισης ρυθμίσεων και αυτοματισμού πληροφορικής.
Είναι πολλαπλών πλατφορμών και μπορεί να λειτουργήσει με τα περισσότερα σύγχρονα λειτουργικά συστήματα, συμπεριλαμβανομένων των Linux, Windows και Mac. Υποστηρίζει μια δηλωτική γλώσσα γραμμένη σε YAML ή YAML Ain’t Markup Language για να περιγράψει τη διαμόρφωση του συστήματος.
Το Ansible, μαζί με άλλες σύγχρονες πλατφόρμες διαχείρισης διαμόρφωσης, έχει φέρει επανάσταση στον αυτοματισμό πληροφορικής και στα βιομηχανικά πρότυπα. Τα εργαλεία διαχείρισης διαμόρφωσης έχουν γίνει μέρος του συνόλου εργαλείων DevOps και αποτελούν αναπόσπαστο μέρος κάθε σύγχρονου κύκλου ζωής διεργασιών πληροφορικής. Αυτό ισχύει για οποιοδήποτε σύγχρονο περιβάλλον υποδομής, είτε είναι χτισμένο σε περιβάλλον εσωτερικού χώρου, υβριδικό ή cloud. Όχι μόνο για DevOps, αλλά το Ansible μπορεί επίσης να βοηθήσει στην αυτοματοποίηση πολλών καθημερινών εργασιών που εκτελούνται από έναν Διαχειριστή συστήματος.
Ένα από τα πλεονεκτήματα της χρήσης του Ansible είναι ότι είναι χωρίς πράκτορες και δεν χρειάζεται πολλά για να ξεκινήσετε εκτός από την πρόσβαση SSH στο μηχάνημα προορισμού και την υποστηριζόμενη έκδοση της Python, η οποία είναι ήδη εγκατεστημένη από προεπιλογή στα περισσότερα σύγχρονα λειτουργικά συστήματα. Επίσης, δεδομένου ότι είναι ένα ελαφρύ εργαλείο, μπορεί να αναπτυχθεί και να χρησιμοποιηθεί με μια κληρονομιά σε καινοτόμα συστήματα.
Πίνακας περιεχομένων
Χρήσεις του Ansible
Ενορχήστρωση
Το Ansible είναι ένα εργαλείο επιλογής για την ενορχήστρωση διαφόρων εργασιών διαχείρισης και ανάπτυξης συστήματος. Τα Playbook επιτρέπουν τη χρήση των ίδιων ροών εργασίας ενορχήστρωσης σε διαφορετικά έργα και τα δεδομένα διαμόρφωσης βάσει YAML επιτρέπουν την αποθήκευση και την έκδοση της υποδομής σας στο αποθετήριο Git ή σε οποιαδήποτε υποστηριζόμενη πλατφόρμα ελέγχου έκδοσης.
Ανάπτυξη Εφαρμογής
Είτε πρόκειται για απλή εφαρμογή κώδικα λίγων γραμμών είτε για ανάπτυξη μεγάλου βάρους πολλαπλών επιπέδων, το Ansible καθιστά δυνατή την αυτοματοποίηση του κύκλου ζωής ανάπτυξης εφαρμογών από άκρο σε άκρο.
Ασφάλεια και Συμμόρφωση
Το Ansible μπορεί επίσης να σας βοηθήσει να διασφαλίσετε ότι τα συστήματά σας είναι ασφαλισμένα σύμφωνα με τις οδηγίες του οργανισμού σας και συμμορφώνονται με τα βιομηχανικά πρότυπα. Μπορεί να τρέξει σε χιλιάδες διακομιστές, να δημιουργήσει έλεγχο και να διορθώσει αυτές τις οπές ασφαλείας, δίνοντας στον διαχειριστή πλήρη έλεγχο του περιβάλλοντος.
Ας δούμε τώρα μερικές από τις κοινές εργασίες Sysadmin που μπορείτε να αυτοματοποιήσετε με το Ansible.
Αντιγράψτε αρχεία από τοπικό ή απομακρυσμένο σύστημα
Ως διαχειριστής συστήματος, είναι σύνηθες να αντιγράφετε αρχεία από έναν κατάλογο σε έναν άλλο. Τα αρχεία διαμόρφωσης συχνά χρειάζεται να αντιγραφούν σε απομακρυσμένους διακομιστές ή μερικές φορές χρειάζεται να μετακινήσουμε αρχεία από μια απομακρυσμένη τοποθεσία σε άλλη.
Η μονάδα αντιγραφής Ansible μπορεί να σας βοηθήσει να κάνετε αυτές τις εργασίες σε ένα βιβλίο αναπαραγωγής.
Είναι μια εργασία ρουτίνας για έναν sysadmin να γνωρίζει την κατάσταση των διαχειριζόμενων διακομιστών και να εκτελεί προκαθορισμένες ενέργειες σύμφωνα με τις πολιτικές του οργανισμού. Ένα τέτοιο καθήκον είναι να γνωρίζετε το χρόνο λειτουργίας του διακομιστή. Με το Ansible, μπορούμε εύκολα να ανακτήσουμε τιμές χρόνου λειτουργίας και να τις εκτυπώσουμε μαζί. Ένα παράδειγμα για την αντιγραφή της διαμόρφωσης ntp από τοπικό σε απομακρυσμένο διακομιστή χρησιμοποιώντας μονάδα αντιγραφής φαίνεται παρακάτω:
--- - hosts: all gather_facts: no become: yes tasks: - name: Copy a new ntp configuration file and back up the original, if it differs copy: src: ./ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644' backup: yes
Διαμόρφωση πρόσθετων εργασιών cron
Η ρύθμιση προγραμματισμένων εργασιών για την εκτέλεση εργασιών ρουτίνας αποτελεί μέρος της διαχείρισης οποιουδήποτε διακομιστή. Μπορείτε να προγραμματίσετε αυτόματα αντίγραφα ασφαλείας, επιδιορθώσεις, έλεγχο κ.λπ., κατά τη διάρκεια συγκεκριμένων ωρών της ημέρας ή του μήνα αυτόματα και αφήνοντας παραγωγικό χρόνο για τη χρήση σας.
Το cron είναι ένα τέτοιο εργαλείο στο Linux που υποστηρίζει τον προγραμματισμό και το Ansible μπορεί να σας βοηθήσει να προσθέσετε ή να τροποποιήσετε αυτές τις εργασίες. Για παράδειγμα, το παρακάτω playbook δείχνει πώς μπορείτε να ορίσετε μια εργασία rsync ως root σε ορισμένους ή όλους τους διακομιστές σας εύκολα χρησιμοποιώντας το Ansible.
--- - hosts: all gather_facts: no become: yes tasks: - name: Deploy cron job cron: name: "Set rsync job" user: root minute: "5" hour: "4" job: "rsync -avz /path/to/folder1 /path/to/folder1 2>&1"
Διαχείριση δίσκων και συστημάτων αρχείων
Το Ansible μπορεί να χρησιμοποιηθεί για τη διαχείριση δίσκων, διατάξεων διαμερισμάτων, συστημάτων αρχείων και προσαρτήσεων, συμπεριλαμβανομένου του /etc/fstab σε διακομιστές Linux. Διαφορετική μονάδα Ansible το κάνει αυτό δυνατό. Ακολουθεί ένα παράδειγμα που δημιουργεί ένα διαμέρισμα σε έναν δίσκο 100 GB, το μορφοποιεί με σύστημα αρχείων ext4, δημιουργεί έναν νέο κατάλογο για την προσάρτηση του διαμερίσματος και τελικά το προσαρτά σε έναν δεδομένο κατάλογο. Μια καταχώρηση στο /etc/fstab δημιουργείται επίσης μέσω προσωρινής ή μόνιμης προσάρτησης ανάλογα με τις επιλογές της μονάδας.
--- - hosts: all gather_facts: no become: yes tasks: - name: Create a partition parted: device: /dev/sdb number: 1 part_end: "100%" state: present - name: Format new partition filesystem: fstype: ext4 dev: /dev/sdb1 - name: Create mount directory file: path: /data state: directory - name: Mount partition mount: path: /data src: /dev/sdb1 fstype: ext4 state: mounted
Συλλέξτε αρχεία καταγραφής διακομιστή
Η διατήρηση των αρχείων καταγραφής σε ένα βολικό μέρος είναι μερικές φορές απαραίτητη για την ασφάλεια, τον έλεγχο καθώς και την ανάλυση. Το Ansible επιτρέπει τη συλλογή αρχείων καταγραφής από διαφορετικούς διακομιστές στο εταιρικό σας περιβάλλον και τα διατηρεί εύκολα στην καθορισμένη τοποθεσία σας. Εδώ είναι το playbook για να το πετύχετε αυτό:
--- - hosts: all gather_facts: no become: yes tasks: - name: Find logs find: paths: /var/log/ patterns: '*.log' recurse: yes register: _logs - name: Fetch logs fetch: src: "{{ item.path }}" dest: /tmp/logs with_items: "{{ _logs.files }}"
Εγκαταστήστε ή αφαιρέστε πακέτα και λογισμικό
Τα πακέτα συχνά απαιτείται να εγκατασταθούν σε αιτήματα χρηστών ή ως μέρος των αρχικών εκδόσεων διακομιστή. Μπορεί επίσης να χρειαστεί να αφαιρέσουμε ορισμένα πακέτα που δεν χρειάζονται πλέον ή έχουν κάποια κρίσιμα σφάλματα κ.λπ. Το Ansible σάς επιτρέπει να εγκαταστήσετε ή να αφαιρέσετε εύκολα πακέτα χωρίς την ταλαιπωρία να μεταβείτε σε κάθε διακομιστή και να εκτελέσετε μη αυτόματες εντολές. Ακολουθεί ένα παράδειγμα που δείχνει την εγκατάσταση και την αφαίρεση ενός πακέτου το καθένα για διακομιστές Linux που βασίζονται σε Ubuntu και RHEL/CentOS.
--- - hosts: ubuntu gather_facts: no tasks: - name: Install lsof utility apt: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility apt: pkg: arp-scan state: absent sudo: yes --- - hosts: centos gather_facts: no tasks: - name: Install lsof utility yum: pkg: lsof state: latest sudo: yes - name: Remove ARP Scan utility yum: pkg: arp-scan state: absent sudo: yes
Διαχείριση χρηστών
Οι χρήστες και οι ομάδες αποτελούν τη βασική δομή γύρω από την οποία τα συστήματα που βασίζονται σε Unix/Linux διαχειρίζονται την πρόσβαση και τα δικαιώματα. Σε έναν μεγάλο οργανισμό, η διαχείριση χρηστών και ομάδων μπορεί να είναι μια μεγάλη πρόκληση παρά την αυτοματοποίηση για την υποστήριξη του περιβάλλοντος.
Με το Ansible, ο διαχειριστής του συστήματος διαθέτει ένα εξαιρετικό εργαλείο για τη δημιουργία, τροποποίηση και διαγραφή χρηστών και ομάδων με όλες τις διαφορετικές δυνατότητες που υποστηρίζονται στο λειτουργικό σύστημα.
Ακολουθεί ένα απλό παράδειγμα που δείχνει τη δημιουργία και τη διαγραφή χρηστών και ομάδων που χρησιμοποιούν το Ansible. Μετά την εκτέλεση αυτού του βιβλίου αναπαραγωγής, οι διακομιστές-στόχοι θα έχουν την ομάδαΑ και την ομάδα Β που δημιουργούνται με δεδομένα GID ενώ ο χρήστης1 θα αφαιρεθεί, εάν υπάρχει. Ένας νέος χρήστης χωρίς κέλυφος θα δημιουργηθεί ως user2 με δεδομένο UID, εκχωρημένες ομάδες και κλειδωμένο κωδικό πρόσβασης.
--- - hosts: all gather_facts: no become: yes tasks: - group: gid: 12310 name: groupA state: present - group: gid: 12311 name: groupB state: present - user: name: user1 state: absent - user: name: user2 uid: 12427 shell: /bin/false password_lock: yes groups: groupA, groupB
Διαχείριση υπηρεσιών
Οι υπηρεσίες είναι δαίμονες διεργασιών που εκτελούνται στο παρασκήνιο και εξυπηρετούν κάποια υπηρεσία όπως sshd που παρέχει συνδεσιμότητα SSH κ.λπ. Χρησιμοποιώντας το Ansible, μπορείτε να διαχειριστείτε τις υπηρεσίες συστήματος και χρηστών, όπως την εκκίνηση, τη διακοπή και την επανεκκίνηση τους. Ακολουθεί ένα δείγμα βιβλίου παιχνιδιού για να αποδειχθεί ότι:
--- - hosts: all gather_facts: no become: yes tasks: - name: Restart ssh daemon service: name: ssh state: restarted - name: Restart sssd daemon service: name: sssd state: stopped - name: Restart httpd daemon service: name: httpd state: started
Στο παραπάνω παράδειγμα, η υπηρεσία SSH θα επανεκκινηθεί ενώ στη συνέχεια θα σταματήσει η υπηρεσία SSSD. Ο δαίμονας httpd ξεκινά προς το τέλος. Καθώς το Ansible είναι ανίκανο, οποιαδήποτε υπηρεσία που έχει ήδη ξεκινήσει ή διακοπεί δεν θα αλλάξει ενώ η επανεκκίνηση αλλάζει πάντα την κατάσταση υπηρεσίας. Θυμηθείτε να ελέγξετε το όνομα της υπηρεσίας καθώς διαφορετικές διανομές Linux χρησιμοποιούν άλλα ονόματα ακόμη και για την ίδια υπηρεσία όπως ssh και sshd.
Περίληψη 👨💻
Το Ansible κάνει τη ζωή ενός διαχειριστή συστήματος εύκολη, επιτρέποντάς σας να εκτελείτε επαναλαμβανόμενες και χρονοβόρες εργασίες με αυτοματοποιημένο τρόπο και μειώνοντας τα ανθρώπινα λάθη και την προσπάθεια. Επιπλέον, θα επιτρέψει την αποθήκευση δεδομένων διαμόρφωσης σε ένα κεντρικό αποθετήριο κώδικα όπως το Git, επιτρέποντας σε πολλούς χρήστες να συνεργάζονται και να ελέγχουν κάθε δραστηριότητα.
Για να διαβάσετε περισσότερα σχετικά με το Ansible και το εκτενές σύνολο ενοτήτων του, ανατρέξτε σε αυτό τεκμηρίωση.