Πώς να χρησιμοποιήσετε ετικέτες στο Ansible

Pos Na Chresimopoiesete Etiketes Sto Ansible



Τα παιχνίδια, οι ρόλοι και οι εργασίες είναι η ansible δομή και αυτή η δομή ansible περιέχει το σημαντικό χαρακτηριστικό που ονομάζεται tags στο Ansible. Κάθε φορά που εκκινούμε ένα playbook στο Ansible, μπορείτε να χρησιμοποιήσετε τις εντολές -tags και -skip tags ώστε να μπορούμε να εκτελέσουμε μόνο μια συγκεκριμένη σειρά εργασιών, παιχνιδιών και ρόλων. Εάν έχουμε ένα playbook που περιέχει τόσες πολλές εργασίες, αλλά δεν θέλουμε να εκτελέσουμε όλες τις εργασίες του playbook, αντί να εκτελέσουμε ολόκληρο το playbook, θα εκτελέσουμε απλώς μερικές εργασίες χρησιμοποιώντας την εντολή tag στο Ansible playbook.

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







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



Προϋποθέσεις Χρήσης των Ετικετών στο Ansible Playbook

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



Πρέπει να απαιτείται ένας διακομιστής ελέγχου Ansible ώστε να κάνει αλλαγές. Για να χρησιμοποιήσουμε την παράμετρο ετικέτας στο λογισμικό Ansible, χρειαζόμαστε τους τοπικούς κεντρικούς υπολογιστές για να επικοινωνούν μαζί τους. Σε αυτήν την περίπτωση, χρησιμοποιούμε τον τοπικό κεντρικό υπολογιστή σε όλη την εκτέλεση ως απομακρυσμένο διακομιστή προορισμού. Θα δημιουργήσουμε βιβλία αναπαραγωγής, θα εκτελέσουμε εντολές ετικέτας Ansible και θα παρακολουθήσουμε τα αποτελέσματα σε απομακρυσμένους κεντρικούς υπολογιστές από τη συσκευή ansible-controller.





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

Παράδειγμα 01: Πρόσβαση σε μια μεμονωμένη εργασία στο Ansible Playbook

Θα υλοποιήσουμε στο Ansible παρέχοντας πολλαπλές εργασίες στο playbook και, στη συνέχεια, θα έχουμε πρόσβαση μόνο σε μία εργασία χρησιμοποιώντας τις ετικέτες σε αυτήν. Για να το κάνουμε αυτό, θα δημιουργήσουμε πρώτα το playbook γράφοντας την ακόλουθη εντολή:



[root@master ansible]# nano ansible_tags.yml

Μετά τη δημιουργία και την εκκίνηση του βιβλίου playbook ansible_tags.yml. Τώρα θα αρχίσουμε να γράφουμε τις εντολές στο playbook. Αρχικά, θα περάσουμε τους παρεχόμενους κεντρικούς υπολογιστές στην παράμετρο 'host' που θα χρησιμοποιήσουμε 'localhost'. Στη συνέχεια, θα γράψουμε την τιμή 'false' στην παράμετρο 'gather_facts', ώστε να μην μπορούμε να λάβουμε τις επιπλέον πληροφορίες για τον localhost όταν εκτελούμε το playbook.

Μετά από αυτό, θα αρχίσουμε να απαριθμούμε τις δραστηριότητες κάτω από την παράμετρο 'tasks' μία προς μία που θέλουμε να εκτελέσουμε. Θα καθορίσουμε εάν το έγγραφο υπάρχει στον υπολογιστή localhost στην πρώτη διαδικασία. Εάν είναι διαθέσιμο, θα το αποθηκεύσουμε στην παράμετρο “register” και στη συνέχεια θα δώσουμε το μοναδικό όνομα στην ετικέτα, ώστε όταν εκτελέσουμε το playbook, να είναι εύκολη η πρόσβαση στην ετικέτα. Στη δεύτερη εργασία, θα κάνουμε το ίδιο όπως κάναμε στην πρώτη εργασία, αλλά η ετικέτα πρέπει να είναι μοναδική και στη συνέχεια θα χρησιμοποιήσουμε την επιλογή εντοπισμού σφαλμάτων για να εμφανίσουμε την εργασία μαζί με το σχετικό μήνυμα.

- Οικοδεσπότες:

- localhost
συλλογή_γεγονότων: ψευδής


καθήκοντα:
- όνομα: Ελέγξτε την ύπαρξη αρχείου x`
stat: path=./host.yml
register: fileExists
ετικέτες: check_file


- εντοπισμός σφαλμάτων:
msgstr '{{ 'Το αρχείο υπάρχει' εάν το fileExists.stat.exists else 'Το αρχείο δεν βρέθηκε' }}'
ετικέτες: check_file


- όνομα: Ελέγξτε εάν το host.yml είναι προσβάσιμο από τον τρέχοντα χρήστη
κέλυφος: stat -c '%a' ./host.yml
εγγραφή: AccessPath
ετικέτες: check_access


- εντοπισμός σφαλμάτων:
msgstr '{{ 'Πρόσβαση στο αρχείο' if (accessPath.stdout|int) < 660 else 'Το αρχείο δεν είναι προσβάσιμο' }}'
ετικέτες: check_access

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

[root@master ansible]# ansible-playbook ansible_tags.yml –tags check_file

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

Παράδειγμα 02: Παράβλεψη συγκεκριμένης ετικέτας στο Ansible Playbook

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

[root@master ansible]# ansible-playbook ansible_tags.yml --skip-tags check_file

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

Παράδειγμα 03: Συνεχίστε πάντα να εκτελείτε την εργασία στο Ansible Playbook

Θα εφαρμόσουμε το τρίτο παράδειγμα με βάση την ετικέτα Ansible. Σε αυτό το παράδειγμα, θα χρησιμοποιήσουμε την ετικέτα 'πάντα' που σημαίνει ότι μια συγκεκριμένη ετικέτα θα εκτελείται πάντα στο Ansible Playbook. Για να ξεκινήσετε το playbook, χρησιμοποιήστε την ακόλουθη εντολή:

[root@master ansible]# nano ansible_tags.yml

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

- οικοδεσπότες: όλοι

συλλογή_γεγονότων: ψευδής


καθήκοντα:
- όνομα: Ελέγξτε την ύπαρξη αρχείου
stat: path=./host.yml
register: fileExists
delegate_to: localhost
ετικέτες: check_file


- εντοπισμός σφαλμάτων:
msgstr '{{ 'Το αρχείο υπάρχει' εάν το fileExists.stat.exists else 'Το αρχείο δεν βρέθηκε' }}'
ετικέτες: check_file


- όνομα: Ελέγξτε εάν το host.yml είναι προσβάσιμο από τον τρέχοντα χρήστη
κέλυφος: stat -c '%a' ./host.yml
εγγραφή: AccessPath
delegate_to: localhost
ετικέτες: check_access


- εντοπισμός σφαλμάτων:
msgstr '{{ 'Πρόσβαση στο αρχείο' if (accessPath.stdout|int) < 660 else 'Το αρχείο δεν είναι προσβάσιμο' }}'
ετικέτες: check_access


- όνομα: Διαγραφή κωδικού πρόσβασης από το απόθεμα
lineinfile:
διαδρομή: '{{inventory_file}}'
regexp: '\b{{item}}.*\b'
κατάσταση: απών
delegate_to: localhost
γίνομαι: ψευδής
Ετικέτες: πάντα
with_items:
- ansible_password

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

[root@master ansible]# nano host.yml

Εδώ είναι το αρχείο αποθέματος που περιέχει τις πληροφορίες που σχετίζονται με το 'Linux_host' στο Ansible.

Ολα:

Οικοδεσπότες:
Linux_Host:
ansible_host: 192.168.3.229
ansible_user: ansible
ansible_password: ******
ansible_connection: ssh
ansible_port: 22

Για να λάβουμε την επιθυμητή έξοδο, θα εκτελέσουμε την ακόλουθη εντολή στο τερματικό Ansible:

[root@master ansible]# ansible-playbook ansible_tags.yml --tags check_file -i host.yml

συμπέρασμα

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