Πώς να χρησιμοποιήσετε τις μονάδες Ansible για εργασίες διαχείρισης συστήματος - Μέρος 6


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

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

Σε αυτήν την σελίδα:
  1. Διαχείριση πακέτων λογισμικού και αποθετηρίων στο Ansible
  2. Διαχείριση υπηρεσιών με χρήση του Ansible
  3. Διαχείριση τείχους προστασίας με το Ansible
  4. Αρχειοθέτηση αρχείων ή φακέλων με το Ansible
  5. Προγραμματίστε εργασίες με το Ansible
  6. Διαχείριση χρηστών και ομάδων με το Ansible
  7. Δημιουργήστε αρχεία και καταλόγους με το Ansible
  8. Διαχείριση αποθήκευσης με το Ansible
  9. Διαχείριση συστημάτων αρχείων με το Ansible

1. Διαχείριση πακέτων λογισμικού και αποθετηρίων στο Ansible

Κατά την εγκατάσταση πακέτων σε συστήματα Linux, διαφορετικές διανομές συνοδεύονται από διαφορετικούς διαχειριστές πακέτων. Για διανομές RedHat, διαθέτουμε yum & dnf ενώ για γεύσεις Debian υπάρχει κατάλληλη.

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

Εγκαταστήστε πακέτα λογισμικού

Για παράδειγμα, για να εγκαταστήσετε το htop σε μια ομάδα κεντρικών υπολογιστών που περιλαμβάνει και τις δύο διανομές Debian και RedHat χρησιμοποιήστε τη λειτουργική μονάδα package ως εμφανίζεται στο βιβλίο αναπαραγωγής install_htop.yml παρακάτω.

---
- name: Install htop on Ubuntu and CentOS
  hosts: all
  tasks:

- package:
         name: htop
         state: installed

ΣΗΜΕΙΩΣΗ: Τα ονόματα των πακέτων ενδέχεται να διαφέρουν από το ένα λειτουργικό σύστημα στο άλλο. Για παράδειγμα, έχουμε httpd σε διανομές Redhat και Apache2 για συστήματα Debian/Ubuntu που όλα υποδηλώνουν τον Apache διακομιστής ιστού. Επομένως, θα πρέπει να δίνεται ιδιαίτερη προσοχή όταν περνάτε αυτές τις συσκευασίες. Συνήθως, είναι καλύτερο να χρησιμοποιείτε μεταβλητές ή προτάσεις υπό όρους.

2. Διαχείριση υπηρεσιών με χρήση του Ansible

Στη συνέχεια, έχουμε μια ενότητα υπηρεσίας, η οποία χρησιμοποιείται για τη διαχείριση υπηρεσιών σε συστήματα Linux. Χρησιμοποιείται για την εκκίνηση, τη διακοπή ή την επανεκκίνηση μιας υπηρεσίας. Μπορείτε επίσης να το χρησιμοποιήσετε για να ενεργοποιήσετε μια υπηρεσία, έτσι ώστε όταν εκκινείται ένα σύστημα, να ξεκινά αυτόματα την υπηρεσία.

Ξεκινήστε και ενεργοποιήστε μια υπηρεσία

Για παράδειγμα, για να ξεκινήσετε και να ενεργοποιήσετε τον διακομιστή ιστού Apache στο RHEL 8, χρησιμοποιήστε την υπηρεσία όπως φαίνεται.

---
- name: Start and enable httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: started
	    enabled: yes

Διακοπή υπηρεσίας

Για να διακόψετε την υπηρεσία httpd, περάστε το χαρακτηριστικό σταμάτησε.

---
- name: Stop httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: stopped

Επανεκκινήστε μια Υπηρεσία

Για να επανεκκινήσετε την υπηρεσία httpd, μεταβιβάστε το χαρακτηριστικό επανεκκίνηση.

---
- name: Restart httpd service
  hosts: webservers
  tasks:

- service:
         name: httpd
         state: restarted

3. Διαχείριση τείχους προστασίας με το Ansible

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

Ας προχωρήσουμε και ας ρίξουμε μια ματιά σε μερικά παραδείγματα:

Άνοιγμα/μπλοκάρισμα της θύρας 80 στο τείχος προστασίας

---
- name: Allow port 80 
  hosts: webservers
  tasks: 
   
   -firewalld:
	port: 80/tcp
     permanent: yes
     state: enabled

Στο παραπάνω βιβλίο αναπαραγωγής, η θύρα 80 επιτρέπεται σε όλο το τείχος προστασίας.

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

Για να καθορίσετε τις επιτρεπόμενες διευθύνσεις, χρησιμοποιήστε τη δήλωση source:0.0.0.0/0.

- firewalld:
    source: 192.168.0.0/24
    zone: public
    state: enabled

Για να καθορίσετε ένα εύρος θυρών που θα επιτρέπεται η χρήση της επιλογής θύρας ως εξής:

- firewalld:
    port: 213-567/udp
    permanent: yes
    state: enabled

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

-firewalld:
	port: 80/tcp
     permanent: yes
     state: disabled

Προσθήκη/Αποκλεισμός υπηρεσίας στο τείχος προστασίας

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

- firewalld:
    service: https
    permanent: true
    state: enabled

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

- firewalld:
    service: https
    permanent: true
    state: disabled

4. Αρχειοθέτηση αρχείων ή φακέλων με το Ansible

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

Συμπίεση ενός καταλόγου

Σκεφτείτε ένα playbook compress.yml παρακάτω.

---
- hosts: webservers
  tasks:

    • name: Compress a folder
archive:
        path: /opt/data/web
        dest: /tmp/web.gz

Το παραπάνω playbook συμπιέζει τον κατάλογο /opt/data/web και τον αποθηκεύει στο /tmp/web.gz.

Συμπίεση καταλόγου με Μορφοποίηση

Η προεπιλεγμένη μορφή συμπίεσης είναι .gz, ωστόσο, αυτό μπορεί να καθοριστεί χρησιμοποιώντας το χαρακτηριστικό format. Δοκιμάστε το επόμενο Playbook.

---
- hosts: webservers
  Tasks:

  - name: Create a zip archive 
    archive:
     path: /opt/data/web
     dest: /tmp/web
     format: zip

Το παραπάνω playbook συμπιέζει τον κατάλογο /opt/data/web σε /tmp/web.zip.

Αποσυμπίεση ενός αρχείου

Μπορείτε επίσης να αποσυμπιέσετε ένα συμπιεσμένο αρχείο χρησιμοποιώντας το χαρακτηριστικό unarchive. Σκεφτείτε το βιβλίο παιχνιδιού παρακάτω.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.gz to/opt directory  on Ansible controller
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/

Το παραπάνω playbook αποσυμπιέζει το αρχείο /opt/data/web.gz σε /opt στον ελεγκτή Ansible.

Αποσυμπίεση αρχείου σε απομακρυσμένο κόμβο

Για να καθορίσετε το σύστημα απομακρυσμένης πηγής χρησιμοποιήστε την επιλογή remote_src=yes.

---
- hosts: webservers
  tasks:

 - name:Uncompress /tmp/web.bz2 to/opt on remote host
   unarchive:
     src: /tmp/web.bz2
     dest: /opt/
     remote_src=yes 

Το παραπάνω playbook αποσυμπιέζει το αρχείο /tmp/web.bz2 στον απομακρυσμένο κόμβο στον κατάλογο /opt/.

5. Προγραμματίστε εργασίες με το Ansible

Η μονάδα cron βοηθά στον προγραμματισμό εργασιών στα Ansible Playbooks.

Δημιουργήστε μια προγραμματισμένη εργασία

Σκεφτείτε το βιβλίο παιχνιδιού παρακάτω.

---
- hosts: webservers
  tasks:

 - name: Create a scheduled task
   cron:
     name: Run employee attendance
     job: sh /opt/scripts/attendace.sh
      
     month: 4
     day: 5
     hour: 17
     minute: 00

Το playbook εκτελεί το σενάριο προσέλευσης στις 5 Απριλίου στις 5:00 μ.μ.

Προγραμματίστε ένα σενάριο σε συγκεκριμένη ημερομηνία

Εάν θέλετε να προγραμματίσετε αυτό το σενάριο να εκτελείται μόνο εάν η 5η ημέρα του Απριλίου είναι Δευτέρα, χρησιμοποιήστε το χαρακτηριστικό της εβδομάδας: 1. Το 0 δηλώνει την Κυριακή και το 6 το Σάββατο σύμφωνα με το συμβολισμό του cron.

month: 4
day: 5
hour: 17
minute: 00
weekday: 1

Ένας αστερίσκος (*) σε οποιοδήποτε από αυτά τα πεδία υποδεικνύει οποιαδήποτε τιμή.

Εκτελέστε μια εργασία σε μια ημερομηνία

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

month: 4
day: 5
hour: 17
minute: 00
weekday: *

Εκτελέστε μια εργασία σε συγκεκριμένη ημέρα κάθε μήνα

Για να εκτελέσετε την εργασία cron την 5η ημέρα κάθε μήνα στις 5:00 μ.μ. χρησιμοποιήστε τις παρακάτω ρυθμίσεις.

month: *
day: 5
hour: 17
minute: 00
weekday: *

Εκτελέστε μια εργασία καθημερινά

Για να εκτελέσετε την εργασία cron καθημερινά στις 5:00 μ.μ. ορίστε τις ρυθμίσεις ώρας όπως φαίνεται:

month: *
day: *
hour: 17
minute: 00
weekday: *

Εκτελέστε μια εργασία κάθε 5 ώρες

Για να εκτελείτε την εργασία cron κάθε 5 ώρες, χρησιμοποιήστε την τιμή βήματος */5 όπως φαίνεται.

month: *
day: *
hour: */5
minute: *
weekday: *

6. Διαχείριση χρηστών και ομάδων με το Ansible

Μπορείτε επίσης να διαχειρίζεστε χρήστες και ομάδες εντός των βιβλίων Ansible χωρίς κόπο.

Δημιουργία Νέου Χρήστη

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

---
- hosts: webservers
  tasks:

 - name: Create a new user
   user: 
     name: Jack

Μπορείτε επίσης να προσθέσετε πρόσθετες επιλογές όπως UID, ομάδες.

- name: Create a new user
   user: 
      name: Jack
      comment: Jack Peters
          uid:   1002
      group: administrators
      shell:  /bin/bash

Κατάργηση χρήστη

Για να καταργήσετε τον χρήστη, χρησιμοποιήστε τη δήλωση remove: yes.

- name: Remove the user 'Jack'
  user:
    name: Jack
    state: absent
    remove: yes

Δημιουργήστε μια νέα ομάδα

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

- name: Create a group
  group:
    name: developers

7. Δημιουργήστε αρχεία και καταλόγους με το Ansible

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

Δημιουργία νέου καταλόγου

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

---
- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/app
     state: directory

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

- hosts: webservers
  tasks:

  - name: Create a new directory
    file: 
     path: /opt/web
     state: directory
     owner: www-data
     group: www-data
     mode: 0644

Επιπλέον, μπορείτε να δημιουργήσετε καταλόγους αναδρομικά χρησιμοποιώντας τη δήλωση recurse: yes.

---
- hosts: webservers
  tasks:

  - name: Create directories recursively
    file: 
     path: /opt/web/app
     state: directory
     owner: www-data
     group: www-data
     mode: 0644
recurse: yes

Δημιουργήστε ένα Αρχείο

Για να δημιουργήσετε ένα αρχείο, χρησιμοποιήστε την επιλογή state: touch.

---
- hosts: webservers
  tasks:

  - name: Create a new file
    file: 
     path: /opt/web/index.html
     state: touch
owner: www-data
     group: www-data
     mode: 0644

8. Διαχείριση αποθήκευσης με το Ansible

Η λειτουργική μονάδα lvg χρησιμοποιείται για τη διαμόρφωση τόμων και ομάδων LVM.

Δημιουργήστε μια ομάδα τόμου LVM

Σκεφτείτε το βιβλίο παιχνιδιού παρακάτω:

---
- hosts: webservers
  tasks: 
    • name: Create lVM volume group
lvg: 
 vg: vg1
 pvs: /dev/sda1
 pesize: 32

Αυτό δημιουργεί μια ομάδα τόμων πάνω από το διαμέρισμα /dev/sda1 με φυσική έκταση 32 MB.

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

Δημιουργήστε έναν λογικό τόμο

---
    - hosts: webservers
      tasks: 

       - name: Create lVM volume
    lvol: 
    vg: vg1
    lv: lvol1
    pvs: /dev/sda1

9. Διαχείριση συστημάτων αρχείων με το Ansible

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

Δημιουργήστε ένα σύστημα αρχείων

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

---
    - hosts: webservers
      tasks: 

       - name: Create a filesystem
         filesystem:
         
           fstype: xfs
           dev: /dev/vg1/lvol1

Τοποθετήστε ένα σύστημα αρχείων

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

---
    - hosts: webservers
      tasks: 

       - name: Mount a filesystem
         mount:
         
           fstype: xfs
           src: /dev/vg1/lvol1
           path: /opt/web
           state: mounted
συμπέρασμα

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