Πώς να χρησιμοποιήσετε τις μονάδες Ansible για εργασίες διαχείρισης συστήματος - Μέρος 6
Σε αυτό το Μέρος 6 της σειράς Ansible, έχουμε καλύψει μερικές ενότητες Ansible στα προηγούμενα θέματα, τώρα θα εμβαθύνουμε και θα ανακαλύψουμε πρόσθετες ενότητες που είναι χρήσιμες για την εκτέλεση ορισμένων εργασιών διαχείρισης συστήματος.
Θα πάρετε μια βασική ιδέα για κάθε ενότητα και θα εξετάσετε τις διαθέσιμες επιλογές για την εκτέλεση ορισμένων εργασιών.
Σε αυτήν την σελίδα:
- Διαχείριση πακέτων λογισμικού και αποθετηρίων στο Ansible
- Διαχείριση υπηρεσιών με χρήση του Ansible
- Διαχείριση τείχους προστασίας με το Ansible
- Αρχειοθέτηση αρχείων ή φακέλων με το Ansible
- Προγραμματίστε εργασίες με το Ansible
- Διαχείριση χρηστών και ομάδων με το Ansible
- Δημιουργήστε αρχεία και καταλόγους με το Ansible
- Διαχείριση αποθήκευσης με το Ansible
- Διαχείριση συστημάτων αρχείων με το 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.