Verwendung von Ansible-Modulen für Systemverwaltungsaufgaben – Teil 6
Sie erhalten eine grundlegende Vorstellung von jedem Modul und sehen sich die verfügbaren Optionen zur Ausführung bestimmter Aufgaben an.
Auf dieser Seite:
- Verwalten von Softwarepaketen und Repositorys in Ansible
- Verwalten von Diensten mit Ansible
- Firewall mit Ansible verwalten
- Archivieren von Dateien oder Ordnern mit Ansible
- Planen Sie Aufgaben mit Ansible
- Verwalten Sie Benutzer und Gruppen mit Ansible
- Erstellen Sie Dateien und Verzeichnisse mit Ansible
- Verwalten des Speichers mit Ansible
- Dateisysteme mit Ansible verwalten
1. Verwalten von Softwarepaketen und Repositorys in Ansible
Bei der Installation von Paketen auf Linux-Systemen werden unterschiedliche Distributionen mit unterschiedlichen Paketmanagern geliefert. Zum Roter Hut Distributionen haben wir yum & dnf während für Debian Aromen gibt es passend.
Ansible wird mit einem Modul namens geliefert PaketDadurch entfällt die Notwendigkeit, unterschiedliche Paketmanager für unterschiedliche Systeme zu verwenden. Es verwendet automatisch den entsprechenden Paketmanager des Hostsystems, wodurch die Arbeit erleichtert wird.
Installieren Sie Softwarepakete
Zum Beispiel, um htop in einer Gruppe von zu installieren Gastgeber bestehend aus beiden Debian & Roter Hut Distributionen verwenden die Paket Modul wie in der gezeigt install_htop.yml Spielbuch unten.
--- - name: Install htop on Ubuntu and CentOS hosts: all tasks: - package: name: htop state: installed
HINWEIS: Paketnamen können von Betriebssystem zu Betriebssystem unterschiedlich sein. Zum Beispiel haben wir httpd im Roter Hut Verteilungen und Apache2 zum Debian / Ubuntu Systeme, die alle den Apache-Webserver bezeichnen. Daher ist beim Übergeben dieser Pakete besondere Vorsicht geboten. Normalerweise ist es am besten, Variablen oder bedingte Anweisungen zu verwenden.
2. Verwalten von Diensten mit Ansible
Als nächstes haben wir eine Bedienung Modul, das zum Verwalten von Diensten auf Linux-Systemen verwendet wird. Es wird verwendet, um einen Dienst zu starten, zu stoppen oder neu zu starten. Sie können es auch verwenden, um einen Dienst zu aktivieren, sodass beim Starten eines Systems der Dienst automatisch gestartet wird.
Starten und Aktivieren eines Dienstes
Zum Beispiel, um den Apache-Webserver zu starten und zu aktivieren RHEL 8Verwenden Sie den Dienst wie gezeigt.
--- - name: Start and enable httpd service hosts: webservers tasks: - service: name: httpd state: started enabled: yes
Beenden Sie einen Dienst
Stoppen httpd Service, übergeben Sie die gestoppt Attribut.
--- - name: Stop httpd service hosts: webservers tasks: - service: name: httpd state: stopped
Starten Sie einen Dienst neu
Neustarten httpd Service, übergeben Sie die neu gestartet Attribut.
--- - name: Restart httpd service hosts: webservers tasks: - service: name: httpd state: restarted
3. Firewall mit Ansible verwalten
Eine weitere wichtige Aufgabe, die Systemadministratoren übernehmen, ist die Verwaltung der Firewall. In Ansible-Playbooks wurde dies erheblich vereinfacht Firewalld und ufw Module. Sie können die Firewall so konfigurieren, dass ein Port oder Dienst oder sogar eine Quelladresse zugelassen oder blockiert wird.
Lassen Sie uns ein paar Beispiele anschauen:
Öffnen / blockieren Sie Port 80 in der Firewall
--- - name: Allow port 80 hosts: webservers tasks: -firewalld: port: 80/tcp permanent: yes state: enabled
Im obigen Playbook Port 80 ist über die Firewall erlaubt.
Die Option permanent: yes
Erzwingt die Firewall-Regel und macht sie über Neustarts hinweg dauerhaft. Diese Regel gilt jedoch nicht sofort. Es wird erst nach einem Neustart wirksam. Verwenden Sie die Option, um die Regel sofort durchzusetzen immediate: yes
.
Verwenden Sie die, um die zulässigen Adressen anzugeben Quelle: 0.0.0.0/0 Aussage.
- firewalld: source: 192.168.0.0/24 zone: public state: enabled
So geben Sie einen Bereich von Ports an, die die Portoption wie folgt verwenden dürfen:
- firewalld: port: 213-567/udp permanent: yes state: enabled
Um den Port zu blockieren, ändern Sie die Statusoption in behindert wie gezeigt:
-firewalld: port: 80/tcp permanent: yes state: disabled
Hinzufügen / Blockieren eines Dienstes in der Firewall
Neben dem Hinzufügen / Blockieren eines Ports können Sie dieselben Regeln auch auf einen Dienst anwenden. Und es ist ganz einfach. Verwenden Sie einfach die Bedienung Modul und hängen Sie den hinzuzufügenden Dienst an und stellen Sie sicher, dass die Statusoption auf gesetzt ist aktiviert.
- firewalld: service: https permanent: true state: enabled
Um den Dienst zu blockieren, stellen Sie die Zustand Option zu behindert.
- firewalld: service: https permanent: true state: disabled
4. Archivieren von Dateien oder Ordnern mit Ansible
Archivierung bezieht sich auf die Komprimierung einer Datei oder eines Ordners in ein Format, das leicht portierbar und kleiner ist. Ansible wird mit einem Modul namens geliefert Archiv. Das Komprimieren einer Datei ist so einfach wie es nur geht. Sie müssen lediglich den Quellpfad der Datei und das Ziel der komprimierten Datei angeben.
Komprimieren Sie ein Verzeichnis
Betrachten Sie ein Spielbuch compress.yml unten.
--- - hosts: webservers tasks: • name: Compress a folder archive: path: /opt/data/web dest: /tmp/web.gz
Das obige Playbook komprimiert das / opt / data / web Verzeichnis und speichert es in /tmp/web.gz.
Komprimieren Sie ein Verzeichnis mit Format
Das Standardkomprimierungsformat ist .gz
Dies kann jedoch mit dem Formatattribut angegeben werden. Probieren Sie das nächste Playbook.
--- - hosts: webservers Tasks: - name: Create a zip archive archive: path: /opt/data/web dest: /tmp/web format: zip
Das obige Playbook wird komprimiert / opt / data / web Verzeichnis zu /tmp/web.zip.
Dekomprimieren Sie eine Datei
Sie können eine komprimierte Datei auch mit dem dekomprimieren unarchiv Attribut. Betrachten Sie das Spielbuch unten.
--- - hosts: webservers tasks: - name:Uncompress /tmp/web.gz to/opt directory on Ansible controller unarchive: src: /tmp/web.bz2 dest: /opt/
Das obige Playbook dekomprimiert die Datei /opt/data/web.gz zu / opt auf dem Ansible-Controller.
Dekomprimieren Sie eine Datei auf dem Remote-Knoten
Um das Remote-Quellsystem anzugeben, verwenden Sie die remote_src=yes
Möglichkeit.
--- - hosts: webservers tasks: - name:Uncompress /tmp/web.bz2 to/opt on remote host unarchive: src: /tmp/web.bz2 dest: /opt/ remote_src=yes
Das obige Playbook dekomprimiert die Datei /tmp/web.bz2 auf dem Remote-Knoten zum / opt / Verzeichnis.
5. Planen Sie Aufgaben mit Ansible
Der Cron Modul Hilft beim Planen von Jobs in Ansible Playbooks.
Erstellen Sie eine geplante Aufgabe
Betrachten Sie das Spielbuch unten.
--- - 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
Das Spielbuch führt das Anwesenheitsskript am 5. April um 17:00 Uhr aus.
Planen Sie ein Skript an einem bestimmten Datum
Wenn Sie festlegen möchten, dass dieses Skript nur ausgeführt wird, wenn der 5. April ein Montag ist, verwenden Sie das Attribut Wochentag: 1. 0 bedeutet Sonntag und 6 bedeutet Samstag gemäß Cron-Notation.
month: 4 day: 5 hour: 17 minute: 00 weekday: 1
Ein Sternchen
In einem dieser Felder wird ein beliebiger Wert angegeben.
Führen Sie einen Job an einem Datum aus
month: 4 day: 5 hour: 17 minute: 00 weekday: *
Verwenden Sie die angezeigten Zeitparameter, um den Job am 5. April um 17:00 Uhr auszuführen, unabhängig vom Wochentag.
Führen Sie jeden Monat an einem bestimmten Tag einen Job aus
month: * day: 5 hour: 17 minute: 00 weekday: *
Verwenden Sie die folgenden Einstellungen, um den Cron-Job am 5. eines jeden Monats um 17:00 Uhr auszuführen.
Täglich einen Job ausführen
month: * day: * hour: 17 minute: 00 weekday: *
Um den Cron-Job täglich um 17:00 Uhr auszuführen, stellen Sie die Zeiteinstellungen wie folgt ein:
Führen Sie alle 5 Stunden einen Job aus */5
Verwenden Sie den Schrittwert, um den Cron-Job alle 5 Stunden auszuführen
month: * day: * hour: */5 minute: * weekday: *
wie gezeigt.
6. Verwalten Sie Benutzer und Gruppen mit Ansible
Sie können Benutzer und Gruppen auch problemlos in Ansible-Playbooks verwalten.
Erstellen Sie einen neuen Benutzer Verwenden Sie zum Erstellen eines neuen Benutzers die Benutzer
--- - hosts: webservers tasks: - name: Create a new user user: name: Jack
Modul wie gezeigt.
- name: Create a new user user: name: Jack comment: Jack Peters uid: 1002 group: administrators shell: /bin/bash
Sie können auch zusätzliche Optionen wie UID und Gruppen hinzufügen.
Entfernen Sie einen Benutzer remove: yes
Verwenden Sie die, um den Benutzer zu entfernen
- name: Remove the user 'Jack' user: name: Jack state: absent remove: yes
Aussage.
Erstellen Sie eine neue Gruppe Verwenden Sie die, um eine neue Gruppe zu erstellen Gruppe
- name: Create a group group: name: developers
Modul.
7. Erstellen Sie Dateien und Verzeichnisse mit Ansible Verwenden Sie zum Erstellen von Verzeichnisdateien die Datei
Modul.
Erstellen Sie ein neues Verzeichnis
--- - hosts: webservers tasks: - name: Create a new directory file: path: /opt/app state: directory
Zum Beispiel, um ein neues Verzeichnis zu erstellen.
- hosts: webservers tasks: - name: Create a new directory file: path: /opt/web state: directory owner: www-data group: www-data mode: 0644
Sie können andere Attribute wie Eigentümer-, Gruppen- und Dateiberechtigungen hinzufügen. Darüber hinaus können Sie mit dem Verzeichnis rekursiv Verzeichnisse erstellen Rekurs: ja
--- - hosts: webservers tasks: - name: Create directories recursively file: path: /opt/web/app state: directory owner: www-data group: www-data mode: 0644 recurse: yes
Aussage.
Erstellen Sie eine Datei state: touch
Verwenden Sie zum Erstellen einer Datei die
--- - hosts: webservers tasks: - name: Create a new file file: path: /opt/web/index.html state: touch owner: www-data group: www-data mode: 0644
Möglichkeit.
8. Verwalten des Speichers mit Ansible Das lvg
Das Modul wird zum Konfigurieren von LVM-Volumes und -Gruppen verwendet.
Erstellen Sie eine LVM-Volume-Gruppe
--- - hosts: webservers tasks: • name: Create lVM volume group lvg: vg: vg1 pvs: /dev/sda1 pesize: 32
Betrachten Sie das Spielbuch unten: /dev/sda1
Dadurch wird eine Volume-Gruppe erstellt Partition mit einer physischen Ausdehnungsgröße von32 MB
. Verwenden Sie nach dem Erstellen die lvol
Modul zum Erstellen eines logischen Volumes wie gezeigt
--- - hosts: webservers tasks: - name: Create lVM volume lvol: vg: vg1 lv: lvol1 pvs: /dev/sda1
Erstellen Sie ein logisches Volume
9. Verwalten von Dateisystemen mit Ansible Verwenden Sie die Option, um ein Dateisystem auf einem Blockgerät zu erstellen Dateisystem
Modul.
Erstellen Sie ein Dateisystem Das folgende Playbook erstellt den Dateisystemtyp von xfs
--- - hosts: webservers tasks: - name: Create a filesystem filesystem: fstype: xfs dev: /dev/vg1/lvol1
auf dem Blockvolumen.
Mounten Sie ein Dateisystem Als nächstes können Sie das Block-Volume mithilfe von bereitstellen montieren
--- - hosts: webservers tasks: - name: Mount a filesystem mount: fstype: xfs src: /dev/vg1/lvol1 path: /opt/web state: mounted
Modul wie im Playbook unten gezeigt:
Fazit
Damit ist das Thema abgeschlossen. Wir haben verschiedene Systemverwaltungsaufgaben behandelt, die von bestimmten integrierten Modulen in Ansible Playbooks ausgeführt werden können.