Ansible Tutorial - Μάθετε να γράφετε Ansible Playbooks



Σε αυτό το ιστολόγιο Ansible Tutorial θα μάθετε πώς να γράφετε βιβλία playable, εντολές adhoc και να εκτελείτε πρακτικά για την ανάπτυξη του Nginx στον κεντρικό υπολογιστή σας.

Διδασκαλία

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

Επιτρέψτε μου να σας δώσω μια επισκόπηση αυτού του «Ansible Tutorial»:





Εκμάθηση βιβλίου Playable | Εκπαίδευση DevOps | Έντρεκα

Tutorial Ansible - Γράφοντας Playible βιβλία

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



Για το Ansible, σχεδόν κάθε αρχείο YAML ξεκινά με μια λίστα. Κάθε στοιχείο στη λίστα είναι μια λίστα ζευγών κλειδιών / τιμών, που συνήθως ονομάζεται 'hash' ή 'λεξικό'. Επομένως, πρέπει να ξέρουμε πώς να γράφουμε λίστες και λεξικά στο YAML.

Όλα τα μέλη μιας λίστας είναι γραμμές που ξεκινούν από το ίδιο επίπεδο εσοχής ξεκινώντας από ένα '-' (παύλα και κενό). Πιο περίπλοκες δομές δεδομένων είναι δυνατές, όπως λίστες λεξικών ή μικτών λεξικών των οποίων οι τιμές είναι λίστες ή συνδυασμός και των δύο.

π.χ. Για μια λίστα τμημάτων στο edureka:



τμήματα: - μάρκετινγκ - πωλήσεις - λύσεις - γραφή περιεχομένου - υποστήριξη - προϊόν

Τώρα επιτρέψτε μου να σας δώσω ένα παράδειγμα λεξικού:

- ΗΠΑ - ήπειρος: Βόρεια Αμερική - πρωτεύουσα: Washington DC - πληθυσμός: 319 εκατομμύρια

Κεντρικοί υπολογιστές και χρήστες:

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

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

Μεταβλητές:

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

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

Αλλά υπάρχει κανόνας για την ονομασία μεταβλητών. Τα ονόματα των μεταβλητών πρέπει να είναι γράμματα, αριθμοί και κάτω παύλες. Οι μεταβλητές πρέπει πάντα να ξεκινούν με ένα γράμμα. Π.χ. wamp_21, port5 είναι έγκυρα ονόματα μεταβλητών, ενώ το 01_port, _server δεν είναι έγκυρο.

Καθήκοντα:

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

Π.χ .: Εγκατάσταση, ενημέρωση κ.λπ.

Χειριστές:

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

Επιτρέψτε μου να σας δώσω ένα παράδειγμα ενός playbook που θα ξεκινήσει το πρόγραμμα διακομιστή Apache httpd:

----Οικοδεσπότες: διακομιστές ιστού του οποίου: http_port: 80 max_clients: 200 απομακρυσμένος χρήστης: ρίζα καθήκοντα: - όνομα: βεβαιωθείτε ότι το apache είναι στην τελευταία έκδοση ναι: name = httpd state = τελευταία - όνομα: γράψτε το αρχείο διαμόρφωσης apache πρότυπο: src = / srv / httpd.j2 dest = / etc / httpd.conf κοινοποιώ: - επανεκκινήστε το apache - όνομα: βεβαιωθείτε ότι εκτελείται το apache (και ενεργοποιήστε το κατά την εκκίνηση) υπηρεσία: name = httpd state = start enabled = ναι χειριστές: - όνομα: επανεκκινήστε το apache υπηρεσία: name = httpd state = επανεκκίνηση

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

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

Tutorial Ansible - Ενότητες

Οι ενότητες στο Ansible είναι αδιάφορες. Από την άποψη της υπηρεσίας RESTful, για να είναι μια λειτουργία (ή μια κλήση υπηρεσίας) αδιάφορη, οι πελάτες μπορούν να κάνουν την ίδια κλήση επανειλημμένα παράγοντας το ίδιο αποτέλεσμα. Με άλλα λόγια, η υποβολή πολλαπλών πανομοιότυπων αιτημάτων έχει το ίδιο αποτέλεσμα με την υποβολή ενός μόνο αιτήματος.

Υπάρχουν διαφορετικοί τύποι ενοτήτων στο Ansible

  • Βασικές ενότητες
  • πρόσθετες ενότητες

Βασικές ενότητες

Αυτές είναι ενότητες που διατηρεί η βασική ομάδα της Ansible και θα αποστέλλεται πάντα με την ίδια την Ansible. Θα λάβουν επίσης ελαφρώς υψηλότερη προτεραιότητα για όλα τα αιτήματα από εκείνα στα repos 'extras'.

Η πηγή αυτών των ενοτήτων φιλοξενείται από το Ansible στο GitHub στον πυρήνα Ansible-modules.

Ενότητες πρόσθετων

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

Οι δημοφιλείς ενότητες «έξτρα» μπορούν να προωθούνται σε βασικές ενότητες με την πάροδο του χρόνου.

Η πηγή για αυτές τις ενότητες φιλοξενείται από το Ansible στο GitHub στο Ansible-modules-extras.

Π.χ .: Το ένα από τα πρόσθετα module του Remote Management Modules είναι το ipmi_power module, το οποίο είναι ένα power manger για τα απομακρυσμένα μηχανήματα. Απαιτεί python 2.6 ή μεταγενέστερη έκδοση και pyghmi για εκτέλεση.

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

ipmi_power: name = 'test.domain.com' user = 'localhost' password = 'xyz' state = 'on'

Tutorial Ansible - Επιστροφές τιμών

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

Μερικά παραδείγματα τιμών επιστροφής είναι:

είδος συστοιχίας c ++

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

Tutorial Ansible - Εντολές AdHoc

Οι εντολές Adhoc είναι απλές εντολές μιας γραμμής για να εκτελέσετε κάποια ενέργεια. Οι λειτουργικές μονάδες με εντολές Ansible είναι εντολές adhoc.

Π.χ:

ansible host -m netscaler -a 'nsc_host = nsc.example.com user = apiuser password = apipass' 

Η παραπάνω εντολή adhoc χρησιμοποιεί τη μονάδα netscaler για να απενεργοποιήσει το διακομιστή. Υπάρχουν εκατοντάδες ενότητες διαθέσιμες στο Ansible από όπου μπορείτε να ανατρέξετε και να γράψετε εντολές adhoc.

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

Εκπαιδευτικό μάθημα - Hands On

Πρόκειται να γράψω ένα playbook για να εγκαταστήσω το Nginx στον υπολογιστή μου κόμβου / κεντρικού υπολογιστή.

Ας ξεκινήσουμε :)

Βήμα 1: Συνδεθείτε με τους κεντρικούς υπολογιστές σας χρησιμοποιώντας SSH. Για αυτό, πρέπει να δημιουργήσετε ένα δημόσιο κλειδί SSH.

Χρησιμοποιήστε την παρακάτω εντολή:

ssh-keygen

Δημιουργία κλειδιού Ssh - Tutorial Ansible - Edureka

Όπως μπορείτε να δείτε στο παραπάνω στιγμιότυπο, η εντολή ssh-keygen δημιούργησε ένα δημόσιο κλειδί SSH.

Βήμα 2: Η επόμενη εργασία σας είναι να αντιγράψετε το δημόσιο κλειδί SSH στους κεντρικούς υπολογιστές σας. Για να το κάνετε αυτό, χρησιμοποιήστε την παρακάτω εντολή:

ssh-copy-id -i root @

Το παραπάνω στιγμιότυπο δείχνει το κλειδί SSH να αντιγράφεται στους κεντρικούς υπολογιστές.

Βήμα 3: Καταγράψτε τις διευθύνσεις IP των κεντρικών υπολογιστών / κόμβων σας στο απόθεμά σας.

Χρησιμοποιήστε την ακόλουθη εντολή:

vi / etc / ansible / host

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

Βήμα 4: Ας κάνουμε ping για να διασφαλίσουμε ότι έχει δημιουργηθεί μια σύνδεση.

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

Βήμα 5: Ας γράψουμε τώρα ένα βιβλίο για να εγκαταστήσουμε το Nginx στον κεντρικό υπολογιστή. Μπορείτε να γράψετε το βιβλίο αναπαραγωγής σας στον επεξεργαστή vi. Για αυτό, απλώς δημιουργήστε το βιβλίο αναπαραγωγής σας, χρησιμοποιώντας την εντολή:

vi

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

Οι εργασίες ενός playbook ορίζονται στο YAML ως μια λίστα λεξικών και εκτελούνται από πάνω προς τα κάτω. Εάν έχουμε αρκετούς κεντρικούς υπολογιστές, τότε κάθε εργασία δοκιμάζεται για κάθε κεντρικό υπολογιστή πριν προχωρήσουμε στον επόμενο. Κάθε εργασία ορίζεται ως λεξικό που μπορεί να έχει πολλά πλήκτρα, όπως 'όνομα' ή 'sudo' που δηλώνουν το όνομα της εργασίας και εάν απαιτεί δικαιώματα sudo.

Μια μεταβλητή διακομιστής_port έχει ρυθμιστεί που ακούει στη θύρα TCP 8080 για εισερχόμενα αιτήματα.

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

Η επόμενη εργασία είναι να διαμορφώσετε το Nginx.Στο Nginx, τα περιβάλλοντα περιέχουν λεπτομέρειες διαμόρφωσης.

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

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

Τώρα, αποθηκεύστε το αρχείο και βγείτε.

Βήμα 6: Τώρα ας τρέξουμε αυτό το βιβλίο αναπαραγωγής, χρησιμοποιώντας την παρακάτω εντολή:

ansible-playbook .yml

Μπορούμε να δούμε στο παραπάνω στιγμιότυπο οθόνης ότι η εργασία μας εκτελείται, η εγκατάσταση του Nginx.

Βήμα 7: Ας δούμε αν το Nginx είναι εγκατεστημένο στον κεντρικό υπολογιστή μου. Χρησιμοποιήστε την παρακάτω εντολή:

ps waux | grep nginx

Μπορείτε να δείτε στο παραπάνω στιγμιότυπο οθόνης, ότι εκτελούνται διαφορετικά αναγνωριστικά διεργασίας 3555 και 103316, τα οποία διασφαλίζουν ότι το Nginx εκτελείται στους κεντρικούς υπολογιστές σας.

Συγχαρητήρια! Έχετε αναπτύξει επιτυχώς το Nginx στον οικοδεσπότη σας χρησιμοποιώντας βιβλία παιχνιδιού Ansible. Ελπίζω να σας άρεσε να διαβάζετε αυτό το blog Ansible Tutorial. Ενημερώστε με εάν έχετε τυχόν απορίες στην παρακάτω ενότητα σχολίων.

Αν το βρήκατε ' Διδασκαλία ' σχετικό, δείτε το από την Edureka, μια αξιόπιστη διαδικτυακή εταιρεία εκμάθησης με δίκτυο περισσότερων από 250.000 ικανοποιημένων μαθητών σε όλο τον κόσμο. Το μάθημα Εκπαίδευσης Πιστοποίησης Edureka DevOps βοηθά τους μαθητές να αποκτήσουν εμπειρία σε διάφορες διαδικασίες και εργαλεία DevOps, όπως Puppet, Jenkins, Ansible, Nagios και Git για την αυτοματοποίηση πολλαπλών βημάτων στο SDLC.