7 καθημερινές εργασίες Sysadmin για αυτοματοποίηση με το Ansible

Το 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 μπορεί επίσης να σας βοηθήσει να διασφαλίσετε ότι τα συστήματά σας είναι ασφαλισμένα σύμφωνα με τις οδηγίες του οργανισμού σας και συμμορφώνονται με τα βιομηχανικά πρότυπα. Μπορεί να τρέξει σε χιλιάδες διακομιστές, να δημιουργήσει έλεγχο και να διορθώσει αυτές τις οπές ασφαλείας, δίνοντας στον διαχειριστή πλήρη έλεγχο του περιβάλλοντος.

  Πώς να λάβετε οδηγίες οδήγησης στο Apple Watch σας

Ας δούμε τώρα μερικές από τις κοινές εργασίες 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 διαχειρίζονται την πρόσβαση και τα δικαιώματα. Σε έναν μεγάλο οργανισμό, η διαχείριση χρηστών και ομάδων μπορεί να είναι μια μεγάλη πρόκληση παρά την αυτοματοποίηση για την υποστήριξη του περιβάλλοντος.

  Πώς να ελέγξετε πότε ένας τίτλος φεύγει από το Netflix

Με το 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.

  Top 11 Java IDEs και Online Compilers για Παραγωγική Ανάπτυξη

Περίληψη 👨‍💻

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

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