Verwendung von Ansible-Modulen für Systemverwaltungsaufgaben – Teil 6

In diesem Teil 6 In der Ansible-Reihe haben wir in den vergangenen Themen einige Ansible-Module behandelt. Wir werden nun tiefer gehen und zusätzliche Module entdecken, die bei der Ausführung einer Reihe von Systemverwaltungsaufgaben hilfreich sind.

Sie erhalten eine grundlegende Vorstellung von jedem Modul und sehen sich die verfügbaren Optionen zur Ausführung bestimmter Aufgaben an.

Auf dieser Seite:
  1. Verwalten von Softwarepaketen und Repositorys in Ansible
  2. Verwalten von Diensten mit Ansible
  3. Firewall mit Ansible verwalten
  4. Archivieren von Dateien oder Ordnern mit Ansible
  5. Planen Sie Aufgaben mit Ansible
  6. Verwalten Sie Benutzer und Gruppen mit Ansible
  7. Erstellen Sie Dateien und Verzeichnisse mit Ansible
  8. Verwalten des Speichers mit Ansible
  9. 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
Installieren Sie die Software mit dem Ansible Package Module
Installieren Sie die Software mit dem Ansible Package Module


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
Verwalten von Diensten mit Ansible
Verwalten von Diensten mit Ansible

Beenden Sie einen Dienst

Stoppen httpd Service, übergeben Sie die gestoppt Attribut.

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

- service:
         name: httpd
         state: stopped
Beenden Sie den Dienst mit Ansible
Beenden Sie den Dienst mit Ansible

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
Starten Sie den Dienst mit Ansible neu
Starten Sie den Dienst mit Ansible neu

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.

Archiv mit Ansible erstellen
Archiv mit Ansible erstellen

Komprimieren Sie ein Verzeichnis mit Format

Das Standardkomprimierungsformat ist .gzDies 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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *