Τρόπος ρύθμισης παραμέτρων Ansible Managed Nodes και εκτέλεσης ad-hoc εντολών - Μέρος 3


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

Ρύθμιση ελέγχου ταυτότητας SSH χωρίς κωδικό πρόσβασης σε διαχειριζόμενους κόμβους Ansible

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

Διαμόρφωση κλιμάκωσης προνομίων σε διαχειριζόμενους κόμβους

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

γίνομαι

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

Σκεφτείτε ένα playbook httpd.yml που εγκαθιστά και εκκινεί τον διακομιστή ιστού Apache όπως φαίνεται:

---
- name: install and start Apache webserver
  hosts: webservers

  tasks:
       - name: install httpd
         yum: name=httpd  state=latest
         become: yes
       - name: check httpd status
         service: name=httpd state=started

Η οδηγία become: yes σάς επιτρέπει να εκτελείτε εντολές ως χρήστης root στον απομακρυσμένο κεντρικό υπολογιστή.

γίνει_χρήστης

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

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

- name: Run a command as the apache user
  command: somecommand
  become: yes
  become_user: tecmint

γίνεται_μέθοδος

Αυτή η οδηγία θα παρακάμψει την προεπιλεγμένη μέθοδο που έχει οριστεί στο αρχείο ansible.cfg που συνήθως ορίζεται σε sudo.

γίνονται_σημαίες

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

Για παράδειγμα,

- name: Run a command as nobody
  command: somecommand
  become: true
  become_method: su
  become_user: nobody
  become_flags: '-s /bin/sh'

Επιλογές γραμμής εντολών στην κλιμάκωση προνομίων

Ας ρίξουμε μια ματιά σε μερικές από τις επιλογές της γραμμής εντολών που μπορείτε να χρησιμοποιήσετε για να αυξήσετε τα προνόμιά σας κατά την εκτέλεση εντολών:

  • --ask-become-pass, -K – Αυτό σας ζητά τον κωδικό πρόσβασης του χρήστη sudo στο απομακρυσμένο σύστημα που προσπαθείτε να συνδέσετε.
ansible-playbook myplaybook.yml --ask-become-pass

  • --become, -b – Αυτό σας επιτρέπει να εκτελέσετε την εργασία ως χρήστης root χωρίς να σας ζητηθεί κωδικός πρόσβασης.
ansible-playbook myplaybook.yml --become 
  • --become-user=BECOME_USER – Σας επιτρέπει να εκτελείτε εργασίες ως άλλος χρήστης.
ansible-playbook myplaybook.yml --become-user=tecmint

Επικυρώστε μια διαμόρφωση εργασίας χρησιμοποιώντας εντολές Ad-Hoc Ansible

Μερικές φορές, μπορεί να θέλετε να εκτελέσετε γρήγορες και απλές εργασίες σε απομακρυσμένους κεντρικούς υπολογιστές ή διακομιστές στο Ansible χωρίς να χρειάζεται απαραίτητα να δημιουργήσετε ένα βιβλίο αναπαραγωγής. Σε αυτήν την περίπτωση, θα χρειαστεί να εκτελέσετε μια εντολή ad-hoc.

Τι είναι μια εντολή Adhoc;

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

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

[webservers]
173.82.115.165

[database_servers]
173.82.202.239

Βασική χρήση των εντολών Adhoc

Η πιο βασική χρήση των εντολών Ansible-Adhoc είναι το ping σε έναν κεντρικό υπολογιστή ή μια ομάδα κεντρικών υπολογιστών.

ansible -m ping all

Στην παραπάνω εντολή, η παράμετρος -m είναι η επιλογή της ενότητας. Το Ping είναι η εντολή adhoc και η δεύτερη παράμετρος αντιπροσωπεύει όλους τους κεντρικούς υπολογιστές στο αρχείο αποθέματος. Η έξοδος της εντολής φαίνεται παρακάτω:

Για να κάνετε ping, μια συγκεκριμένη ομάδα κεντρικών υπολογιστών, αντικαταστήστε την παράμετρο ‘all’ με το όνομα της ομάδας. Στο παρακάτω παράδειγμα, δοκιμάζουμε τη συνδεσιμότητα με κεντρικούς υπολογιστές στην ομάδα διακομιστών ιστού.

ansible -m ping webservers

Επιπλέον, μπορείτε να χρησιμοποιήσετε το χαρακτηριστικό -a για να καθορίσετε κανονικές εντολές Linux σε διπλά εισαγωγικά. Για παράδειγμα, για να ελέγξετε το χρόνο λειτουργίας του συστήματος απομακρυσμένων συστημάτων, εκτελέστε:

ansible -a "uptime" all

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

ansible -a "df -Th" all

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

ansible-doc -l

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

ansible-doc module_name

Για παράδειγμα, για να αναζητήσετε περισσότερες λεπτομέρειες σχετικά με την εκτέλεση μονάδας yum:

ansible-doc yum

Διαχείριση πακέτων/υπηρεσιών με το Ansible

Οι εντολές Ansible adhoc μπορούν να χρησιμοποιηθούν για την εγκατάσταση και την αφαίρεση πακέτων χρησιμοποιώντας διαχειριστές πακέτων yum και apt.

Για να εγκαταστήσετε τον διακομιστή ιστού Apache στον κεντρικό υπολογιστή CentOS 7 στην ομάδα διακομιστών ιστού στο αρχείο αποθέματος, εκτελέστε την εντολή:

ansible webservers -m yum -a "name=httpd  state=present"

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

rpm -qa | grep httpd

Για να απεγκαταστήσετε το Apache, απλώς αλλάξτε την κατάσταση από παρούσα σε απούσα.

ansible webservers -m yum -a "name=httpd  state=absent"

Και πάλι, για να επιβεβαιώσετε την κατάργηση της εκτέλεσης httpd.

rpm -qa | grep httpd

Όπως παρατηρήθηκε, τα πακέτα διακομιστή ιστού Apache έχουν εκκαθαριστεί.

Δημιουργία χρηστών και ομάδων με χρήση του Ansible

Κατά τη δημιουργία χρηστών, η ενότητα «χρήστης» είναι χρήσιμη. Για να δημιουργήσετε έναν νέο χρήστη james με κωδικό πρόσβασης redhat στον διακομιστή βάσης δεδομένων_διακομιστή συστήματος πελάτη, εκδώστε την εντολή.

ansible database_server -m user -a "name=james password=redhat"

Για να επιβεβαιώσετε τη δημιουργία του νέου χρήστη, εκτελέστε την εντολή:

ansible database_servers -a "id james"

Για να αφαιρέσετε τον χρήστη, εκτελέστε την εντολή:

ansible database_servers -m user -a "name=james state=absent"

Κλιμάκωση προνομίων

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

Για παράδειγμα, για να εκτελέσετε την εντολή Ansible adhoc 'netstat -pnltu' με την προνομιακή επιλογή –-become και την επιλογή -K για να ζητήσετε το κωδικό πρόσβασης χρήστη root για να εκτελέσετε την εντολή.

ansible webservers -m shell -a 'netstat -pnltu' --become -K

Για να γίνετε άλλος χρήστης εκτός του root, χρησιμοποιήστε το χαρακτηριστικό --become-user.

Για παράδειγμα, για να εκτελέσετε το ‘df -Th’ ως χρήστης tecmint στους απομακρυσμένους κεντρικούς υπολογιστές και να ζητήσετε την εκτέλεση του κωδικού πρόσβασης:

ansible all -m shell -a 'df -Th' --become-user tecmint -K

Συλλογή στοιχείων σχετικά με τα συστήματα υποδοχής

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

Για να ανακτήσετε πληροφορίες σχετικά με απομακρυσμένους κεντρικούς υπολογιστές, εκτελέστε την εντολή:

ansible all -m setup 

Μεταφορά αρχείων/Αντιγραφή αρχείων

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

Παρακάτω είναι ένα παράδειγμα λειτουργίας αντιγραφής:

ansible webservers -m copy -a "src=/var/log/secure dest=/tmp/"

Η εντολή αντιγράφει το αρχείο /var/log/secure στον κόμβο Ansible Control σε απομακρυσμένους κεντρικούς υπολογιστές στην ομάδα διακομιστών ιστού στον προορισμό /tmp.

Μπορείτε να χρησιμοποιήσετε τη μονάδα αρχείου για να αλλάξετε τα δικαιώματα και την ιδιοκτησία του αρχείου.

ansible webservers -m file -a "dest=/tmp/secure mode=600"

Επιπλέον, μπορείτε να προσαρτήσετε τα ορίσματα κατόχου και ομάδας όπως φαίνεται:

ansible webservers -m file -a "dest=/tmp/secure mode=600 owner=tecmint group=tecmint"

Μπορείτε επίσης να δημιουργήσετε καταλόγους, με παρόμοιο τρόπο με τον mkdir -p όπως φαίνεται.

ansible webservers -m file -a "dest=/path/to/directory mode=755 owner=tecmint group=tecmint state=directory"

Για παράδειγμα,

ansible webservers -m file -a "dest=/home/tecmint/data mode=755 owner=tecmint group=tecmint state=directory"

συμπέρασμα

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