Κατανοήστε τα βασικά στοιχεία του Ansible - Μέρος 1


Το The Red Hat Certified Specialist in Ansible Automation exam (EX407) είναι ένα νέο πρόγραμμα πιστοποίησης από την Red Hat που δοκιμάζει τις ικανότητές σας να χρησιμοποιείτε το Ansible για αυτοματοποίηση τη διαμόρφωση συστημάτων και εφαρμογών.

Η σειρά θα έχει τίτλο "The Red Hat Certified Specialist in Ansible Automation exam (EX407)" και καλύπτει τους ακόλουθους στόχους εξετάσεων με βάση το Red Hat Enterprise Linux 7.5 και το Ansible 2.7, το οποίο θα καλύψουμε σε αυτήν τη σειρά Ansible:

Για να δείτε τα τέλη και να εγγραφείτε σε εξετάσεις στη χώρα σας, ελέγξτε τη σελίδα εξέτασης Ansible Automation.

Σε αυτό το Μέρος 1 της σειράς Ansible, θα συζητήσουμε κάποια βασική επισκόπηση των βασικών στοιχείων στο Ansible.

Κατανοήστε τα βασικά στοιχεία του Ansible

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

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

Φυσικά, υπάρχουν και άλλες εναλλακτικές λύσεις για το Ansible όπως το Puppet, το Chef και το Salt. Ωστόσο, το Ansible προτιμάται κυρίως επειδή είναι εύκολο στη χρήση και απλό στην εκμάθηση.

Γιατί είναι απλό να το μάθεις μπορεί να ρωτήσεις; Αυτό συμβαίνει επειδή το Ansible χρησιμοποιεί το YAML (Ακόμα μια άλλη γλώσσα σήμανσης) στις εργασίες διαμόρφωσης και αυτοματισμού του, οι οποίες είναι αναγνώσιμες από τον άνθρωπο και είναι αρκετά εύκολο να ακολουθηθούν. Το YAML χρησιμοποιεί το πρωτόκολλο SSH για την επικοινωνία με απομακρυσμένους διακομιστές, σε αντίθεση με άλλες πλατφόρμες αυτοματισμού που απαιτούν να εγκαταστήσετε έναν πράκτορα σε απομακρυσμένους κόμβους για να επικοινωνήσετε μαζί τους.

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

Καταγραφή εμπορευμάτων

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

Ένα αρχείο αποθέματος μπορεί να περιέχει απομακρυσμένα συστήματα που ορίζονται από τις διευθύνσεις IP τους όπως φαίνεται:

10.200.50.50
10.200.50.51
10.200.50.52

Εναλλακτικά, μπορούν να παρατίθενται ανάλογα με τις ομάδες. Στο παρακάτω παράδειγμα, έχουμε διακομιστές που τοποθετούνται σε 2 ομάδες – διακομιστές ιστού και βάσεις δεδομένων. Με αυτόν τον τρόπο μπορούν να αναφέρονται σύμφωνα με τα ονόματα των ομάδων τους και όχι τις διευθύνσεις IP τους. Αυτό απλοποιεί περαιτέρω τις διαδικασίες λειτουργίας.

[webservers]
10.200.50.60
10.200.50.61

[databases]
10.200.50.70
10.200.50.71

Μπορείτε να έχετε πολλές ομάδες με πολλούς διακομιστές εάν βρίσκεστε σε ένα μεγάλο περιβάλλον παραγωγής.

Playbook

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

Για παράδειγμα, μπορείτε να έχετε ένα αρχείο playbook για να εγκαταστήσετε τον διακομιστή ιστού Apache στο CentOS 7 και να τον ονομάσετε httpd.yml.

Για να δημιουργήσετε το playbook εκτελέστε την εντολή.

touch playbook_name.yml

Για παράδειγμα, για να δημιουργήσετε ένα βιβλίο παιχνιδιού που ονομάζεται httpd, εκτελέστε την εντολή.

touch httpd.yml

Ένα αρχείο YAML ξεκινά με 3 παύλες όπως φαίνεται. Μέσα στο αρχείο, προσθέστε τις παρακάτω οδηγίες.

---
- name: This installs and starts Apache webserver
  hosts: webservers

  tasks:
  - name: Install Apache Webserver 
    yum:   name=httpd  state=latest

 - name: check httpd status
    service:   name=httpd  state=started

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

Ενότητες

Οι Modules είναι διακριτές μονάδες κώδικα που χρησιμοποιούνται σε βιβλίους αναπαραγωγής για την εκτέλεση εντολών σε απομακρυσμένους κεντρικούς υπολογιστές ή διακομιστές. Κάθε ενότητα ακολουθείται από ένα όρισμα.

Η βασική μορφή μιας λειτουργικής μονάδας είναι key: value.

- name: Install apache packages 
    yum:   name=httpd  state=present

Στο παραπάνω απόσπασμα κώδικα YAML, το -name και το yum είναι λειτουργικές μονάδες.

Παίζει

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

Μεταβλητές

Εάν έχετε ένα υπόβαθρο στον προγραμματισμό, τότε πιθανότατα έχετε χρησιμοποιήσει μεταβλητές. Βασικά, μια μεταβλητή αντιπροσωπεύει μια τιμή. Μια μεταβλητή μπορεί να περιλαμβάνει γράμματα, αριθμούς και κάτω παύλες, αλλά ΠΡΕΠΕΙ να ξεκινά πάντα με γράμματα.

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

Υπάρχουν 3 κύριοι τύποι μεταβλητών:

  • Μεταβλητές Playbook
  • Μεταβλητές αποθέματος
  • Ειδικές μεταβλητές

Στο Ansible, οι μεταβλητές ορίζονται πρώτα χρησιμοποιώντας το vars k και, στη συνέχεια, ακολουθούν το όνομα της μεταβλητής και η τιμή.

Η σύνταξη είναι όπως φαίνεται:

vars:
Var name1: ‘My first variable’
	Var name2:  ‘My second variable’

Σκεφτείτε τον παρακάτω κώδικα.

- hosts: webservers
  vars: 
    - web_directory:/var/www/html/

Στο παραπάνω παράδειγμα, η μεταβλητή εδώ είναι web_directory και δίνει εντολή στον ansible να δημιουργήσει έναν κατάλογο στη διαδρομή /var/www/html/.

Γεγονότα

Τα Γεγονότα είναι ιδιότητες συστήματος που συγκεντρώνονται από το Ansible όταν εκτελεί ένα βιβλίο αναπαραγωγής σε ένα κεντρικό σύστημα. Οι ιδιότητες περιλαμβάνουν όνομα κεντρικού υπολογιστή, οικογένεια λειτουργικού συστήματος, τύπο CPU και πυρήνες CPU για να αναφέρουμε μερικά.

Για να έχετε μια ματιά στον αριθμό των στοιχείων που είναι διαθέσιμα για χρήση, εκδώστε την εντολή.

ansible localhost -m setup

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

ansible localhost -m setup -a "filter=*ipv4"

Αρχεία Διαμόρφωσης

Στο Ansible, ένα αρχείο διαμόρφωσης είναι ένα αρχείο που περιέχει διαφορετικές ρυθμίσεις παραμέτρων που καθορίζουν τον τρόπο εκτέλεσης του Ansible. Το προεπιλεγμένο αρχείο διαμόρφωσης είναι το αρχείο ansible.cfg που βρίσκεται στον κατάλογο /etc/ansible/.

Μπορείτε να δείτε το αρχείο ρυθμίσεων εκτελώντας:

cat /etc/ansible/ansible.cfg

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

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

Περίληψη

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