Wéi benotzen ech Ansible Moduler fir Systemadministratiounsaufgaben - Deel 6
An dësem Deel 6 vu e puer Ansible Moduler an de vergaangenen Themen, wäerte mir elo méi déif goen an zousätzlech Moduler entdecken déi hëllefräich sinn fir eng Zuel vu Systemadministratiounsaufgaben auszeféieren.
Dir kritt eng Basis Iddi vun all Modul a kuckt d'Optiounen déi verfügbar sinn fir verschidden Aufgaben z'erreechen.
- Gestioun Software Packagen a Repositories an Ansible
- Gestioun Servicer mat Ansible
- Firewall verwalten mat Ansible
- Archivéiere vun Dateien oder Ordner mat Ansible
- Tasks plangen mat Ansible
- Verwalte Benotzer a Gruppen mat Ansible
- Erstellt Dateien an Verzeichnisser mat Ansible
- Lagerung mat Ansible verwalten
- Dateisystemer mat Ansible verwalten
Wann Dir Packagen op Linux Systemer installéiere wëllt, kommen verschidde Verdeelunge mat verschiddene Packagemanager. Fir RedHat Verdeelungen hu mir apt.
Ansible kënnt mat engem Modul genannt Package, wat de Besoin eliminéiert fir verschidde Packagemanager fir verschidde Systemer ze benotzen. Et benotzt automatesch den entspriechende Package Manager vum Hostsystem, wouduerch d'Aarbecht méi einfach gëtt.
Zum Beispill, fir htop an enger Grupp vu Hosten z'installéieren, déi souwuel Debian & RedHat Distros ausmaachen, benotzt de Package Modul wéi am install_htop.yml Playbook ënnendrënner.
--- - name: Install htop on Ubuntu and CentOS hosts: all tasks: - package: name: htop state: installed
NOTÉIERT: Package Nimm kënne vun engem Betribssystem zu engem aneren ënnerscheeden. Zum Beispill hu mir httpd an Redhat Verdeelungen an Apache2 fir Debian/Ubuntu Systemer déi all den Apache Webserver bezeechnen. Dofir sollt extra Vorsicht geholl ginn wann Dir dës Packagen passéiert. Normalerweis ass et am beschten Variabelen oder bedingte Aussoen ze benotzen.
Als nächst hu mir e Servicemodul, dee benotzt gëtt fir Servicer op Linux Systemer ze managen. Et gëtt benotzt fir e Service unzefänken, ze stoppen oder nei ze starten. Dir kënnt et och benotze fir e Service z'aktivéieren sou datt wann e System boott, de Service automatesch ufänkt.
Zum Beispill, fir Apache Webserver op RHEL 8 ze starten an z'aktivéieren, benotzt de Service wéi gewisen.
--- - name: Start and enable httpd service hosts: webservers tasks: - service: name: httpd state: started enabled: yes
Fir den httpd Service ze stoppen, gitt de gestoppt Attribut.
--- - name: Stop httpd service hosts: webservers tasks: - service: name: httpd state: stopped
Fir den httpd Service nei unzefänken, gitt den nei gestarten Attribut.
--- - name: Restart httpd service hosts: webservers tasks: - service: name: httpd state: restarted
Eng aner wichteg Aufgab System Administrateuren ënnerhuelen ass d'Gestioun vun der Firewall. An Ansible Playbooks ass dëst vill méi einfach gemaach mat Firewalld an ufw Moduler. Dir kënnt d'Firewall konfiguréieren fir e Port oder Service oder souguer eng Quelladress z'erméiglechen oder ze blockéieren.
Loosst eis eran sprangen an e puer Beispiller kucken:
--- - name: Allow port 80 hosts: webservers tasks: -firewalld: port: 80/tcp permanent: yes state: enabled
Am Playbook uewendriwwer ass den Hafen 80 iwwer d'Firewall erlaabt.
D'Optioun permanent: jo
erzwéngt d'Firewall-Regel a mécht se persistent iwwer Neistarten. Dës Regel gëllt awer net direkt. Et trëtt nëmmen a Kraaft no engem Restart. Fir d'Regel direkt ëmzesetzen, benotzt d'Optioun direkt: jo
.
Fir d'Adressen ze spezifizéieren erlaabt, benotzt d'Quell:0.0.0.0/0 Ausso.
- firewalld: source: 192.168.0.0/24 zone: public state: enabled
Fir eng Rei vu Ports ze spezifizéieren déi erlaabt sinn d'Portoptioun ze benotzen wéi follegt:
- firewalld: port: 213-567/udp permanent: yes state: enabled
Fir den Hafen ze blockéieren, ännert d'Staatsoptioun op deaktivéiert wéi gewisen:
-firewalld: port: 80/tcp permanent: yes state: disabled
Niewent derbäisetzen/blockéieren vun engem Hafen, kënnt Dir och déiselwecht Reegele fir e Service uwenden. An et ass ganz einfach. Benotzt einfach de Servicemodul an fügt de Service un fir ze addéieren an ze garantéieren datt d'Staatsoptioun aktivéiert ass.
- firewalld: service: https permanent: true state: enabled
Fir de Service ze blockéieren, setzt d'Staatsoptioun op deaktivéiert.
- firewalld: service: https permanent: true state: disabled
Archivéieren bezitt sech op d'Kompressioun vun enger Datei oder Dossier op e Format dat liicht portabel a méi kleng ass. Ansible Schëffer mat engem Modul genannt Archiv. Eng Datei kompriméieren ass ongeféier sou einfach wéi et gëtt. Alles wat néideg ass, ass de Quellwee vun der Datei an d'Destinatioun vun der kompriméierter Datei ze spezifizéieren.
Betruecht e Spillbuch compress.yml ënnert.
--- - hosts: webservers tasks: • name: Compress a folder archive: path: /opt/data/web dest: /tmp/web.gz
Dat uewe genannte Spillbuch kompriméiert den /opt/data/Web Verzeichnis a späichert et op /tmp/web.gz.
De Standardkompressiounsformat ass .gz
, dëst kann awer mat dem Formatattribut spezifizéiert ginn. Probe déi nächst Playbook.
--- - hosts: webservers Tasks: - name: Create a zip archive archive: path: /opt/data/web dest: /tmp/web format: zip
D'Spillbuch hei uewen kompriméiert /opt/data/Web Verzeechnes op /tmp/web.zip.
Dir kënnt och eng kompriméiert Datei mat dem Unarchiv Attribut unkompriméieren. Betruecht d'Spillbuch hei drënner.
--- - hosts: webservers tasks: - name:Uncompress /tmp/web.gz to/opt directory on Ansible controller unarchive: src: /tmp/web.bz2 dest: /opt/
D'Playbook uewendriwwer dekompriméiert d'Datei /opt/data/web.gz fir /opt op den Ansible Controller.
Fir de Remote Source System ze spezifizéieren, benotzt d'Optioun 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
D'Playbook uewen kompriméiert d'Datei /tmp/web.bz2 um Remote Node an den /opt/ Verzeichnis.
De Cron Modul hëlleft beim Zäitplang vun Aarbechtsplazen an Ansible Playbooks.
Betruecht d'Spillbuch hei drënner.
--- - 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
D'Spillbuch leeft d'Participatioun Skript de 5. Abrëll um 17:00 Auer.
Wann Dir dëse Skript wëllt plangen fir nëmmen ze lafen wann de 5. Abrëll e Méindeg ass, benotzt de Wochendag: 1 Attribut. 0 bedeit Sonndeg a 6 bedeit Samschdeg no Cron Notatioun.
month: 4 day: 5 hour: 17 minute: 00 weekday: 1
Eng Asterisk (*) an engem vun dëse Felder weist all Wäert un.
Fir den Job den 5. Abrëll um 17:00 ze lafen egal wéi de Wochendag ass, benotzt d'Zäitparameter wéi gewisen.
month: 4 day: 5 hour: 17 minute: 00 weekday: *
Fir de Cron Job de 5. Dag vun all Mount um 17:00 auszeféieren, benotzt d'Astellungen hei ënnen.
month: * day: 5 hour: 17 minute: 00 weekday: *
Fir de Cron Job all Dag um 17:00 auszeféieren, setzt d'Zäitastellunge wéi gewisen:
month: * day: * hour: 17 minute: 00 weekday: *
Fir de Cron Job all 5 Stonnen auszeféieren, benotzt de Schrëttwäert */5
wéi gewisen.
month: * day: * hour: */5 minute: * weekday: *
Dir kënnt och Benotzer a Gruppen bannent Ansible Playbooks ganz einfach verwalten.
Fir en neie Benotzer ze kreéieren, benotzt de Benotzermodul wéi gewisen.
--- - hosts: webservers tasks: - name: Create a new user user: name: Jack
Dir kënnt och zousätzlech Optiounen wéi UID, Gruppen addéieren.
- name: Create a new user user: name: Jack comment: Jack Peters uid: 1002 group: administrators shell: /bin/bash
Fir de Benotzer ze läschen, benotzt d' entfernen: jo
Ausso.
- name: Remove the user 'Jack' user: name: Jack state: absent remove: yes
Fir en neie Grupp ze kreéieren, benotzt de Gruppemodul.
- name: Create a group group: name: developers
Fir Dateie vu Verzeichnisser ze kreéieren, benotzt de Dateimodul.
Zum Beispill, fir en neie Verzeechnes ze kreéieren.
--- - hosts: webservers tasks: - name: Create a new directory file: path: /opt/app state: directory
Dir kënnt aner Attributer wéi Besëtzer, Grupp a Fichier Permissiounen derbäi.
- hosts: webservers tasks: - name: Create a new directory file: path: /opt/web state: directory owner: www-data group: www-data mode: 0644
Zousätzlech kënnt Dir Verzeichnisser rekursiv erstellen andeems Dir d'Recurse benotzt: jo Ausso.
--- - hosts: webservers tasks: - name: Create directories recursively file: path: /opt/web/app state: directory owner: www-data group: www-data mode: 0644 recurse: yes
Fir e Fichier ze kreéieren, benotzt d'Optioun Staat: 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
De lvg Modul gëtt benotzt fir LVM Bänn a Gruppen ze konfiguréieren.
Betruecht d'Spillbuch hei ënnen:
--- - hosts: webservers tasks: • name: Create lVM volume group lvg: vg: vg1 pvs: /dev/sda1 pesize: 32
Dëst erstellt eng Volumengrupp uewen op /dev/sda1
Partition mat enger kierperlecher Gréisst vun 32 MB.
Eemol erstallt, benotzt de lvol Modul fir e logesche Volume ze kreéieren wéi gewisen
--- - hosts: webservers tasks: - name: Create lVM volume lvol: vg: vg1 lv: lvol1 pvs: /dev/sda1
Fir e Dateiesystem op engem Blockapparat ze kreéieren, benotzt de Dateisystemmodul.
D'Spillbuch hei drënner erstellt den Dateisystemtyp vun xfs um Blockvolumen.
--- - hosts: webservers tasks: - name: Create a filesystem filesystem: fstype: xfs dev: /dev/vg1/lvol1
Dir kënnt als nächst weidergoën fir de Blockvolumen mam Montéierungsmodul ze montéieren wéi am Playbook hei ënnen gewisen:
--- - hosts: webservers tasks: - name: Mount a filesystem mount: fstype: xfs src: /dev/vg1/lvol1 path: /opt/web state: mounted
Dëst schléisst d'Thema of. Mir hunn verschidde Systemadministratiounsaufgaben ofgedeckt, déi duerch spezifesch agebaute Moduler an Ansible Playbooks erfëllt kënne ginn.