Dies ist der zweite Artikel in dieser Reihe, in dem Ansible-Systemrollen verwendet werden. Im vorherigen Artikel habe ich Ihnen Ansible und Systemrollen vorgestellt und einige Beispiele gegeben. Systemrollen helfen Ihnen bei der Verwaltung von Aufgaben auf Betriebssystemebene wie SELinux, Verwaltung von Netzwerkeinstellungen, NTP usw. In diesem Artikel haben Sie ein Beispiel gesehen, in dem Sie den SELinux-Modus mit system.role-selinux
geändert haben Rolle. In diesem Artikel schaue ich mir die Netzwerkrolle im Detail an, damit Sie die Netzwerkverbindungen der Remote-Maschine mit einem einzigen Playbook ändern können.
NetworkManager verwaltet Netzwerkeinstellungen wie die Konfiguration der Netzwerkschnittstelle sowie der Verbindung. Im Grunde ist es ein Daemon, der Netzwerkeinstellungen überwacht und verwaltet. Es verwendet eine Datei in /etc/sysconfig/network-scripts
um sie zu speichern. nmcli
ist das Dienstprogramm, das zum Erstellen und Bearbeiten von Verbindungsdateien über eine Shell-Eingabeaufforderung verwendet wird. Um die Verbindungen Ihres lokalen Rechners aufzulisten, verwenden Sie:
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno0 ethernet connected eno0
eno1 ethernet disconnected ---
virbr0 bridge connected virbr0
In der obigen Ausgabe sehen Sie verschiedene Spalten. Die erste Spalte, DEVICE , gibt die Netzwerkschnittstelle an. Der TYP Spalte zeigt an, um welche Art von Verbindung es sich handelt. Der STAAT Spalte gibt den Status der Verbindung an und die letzte Spalte CONNECTION , ist eine Sammlung von Einstellungen, die für ein Gerät konfiguriert werden können. Jede Verbindung hat einen Namen oder eine ID, die sie identifiziert.
Um eine Liste aller Verbindungen anzuzeigen, können Sie verwenden:
$ nmcli con show
Mit nmcli
können Sie Netzwerkverbindungen hinzufügen und IPv4- oder IPv6-Adressen zuweisen, um Netzwerkverbindungen zu erstellen. Wie Sie wissen, möchten Sie jedoch manuelle Aufgaben automatisieren, die Sie normalerweise mit nmcli
erledigen würden . Sie möchten Netzwerkknoten mithilfe eines Ansible-Playbooks verwalten.
In Ansible haben Sie drei wichtige Module, die Ihnen bei der Verwaltung von Knoten helfen:Service, Daemon und Systemeinstellungen. Sie können diese Module auch verwenden, um Netzwerke zu verwalten. Im vorherigen Artikel habe ich Ansible-Systemrollen besprochen. In Systemrollen haben Sie das rhel-system-roles.network
-Rolle, die die einfachste Möglichkeit zum Konfigurieren und Verwalten von Netzwerkeinstellungen auf verwalteten Knoten darstellt.
Beginnen Sie mit der Verwendung dieses Netzwerksystems Rolle zum Konfigurieren von Netzwerkeinstellungen auf einem verwalteten Knoten.
Hier haben Sie den server1.example.com
verwaltete Maschine. Ich habe bereits den Eintrag des verwalteten Knotens in der Bestandsdatei erstellt.
Hinweis :Stellen Sie sicher, dass Ihr verwalteter Knoten über zwei Ethernet-Verbindungen verfügt, da er eine neue Verbindung hinzufügt. Diese zweite Netzwerkschnittstelle muss verfügbar sein.
Vergewissern Sie sich vor dem Ausführen von Vorgängen, dass der NetworkManager-Dienst auf Ihrem verwalteten Knoten gestartet und aktiviert ist. Verwenden Sie dazu ein Playbook. Verwenden Sie für diese Aufgabe das Dienstmodul in service.yml
Datei.
---
- name: playbook for starting and enabling the NetworkManager
hosts: server1.example.com
tasks:
- Name: start the service
service:
name: NetworkManager
state: started
enabled: true
Führen Sie dieses Playbook aus:
$ ansible-playbook service.yml
Wenn das Playbook erfolgreich und fehlerfrei ausgeführt wird, wird der Dienst gestartet und auf dem verwalteten Knotencomputer aktiviert.
Der Name der sekundären Schnittstelle ist eno1 damit Sie die MAC-Adresse dieser Schnittstelle finden können. Da Sie diese MAC-Adresse verwenden, findet Ihr Playbook die sekundäre Schnittstelle heraus. Zeigt die MAC-Adresse von eno1 an mit:
$ ip a
Die MAC-Adresse von server1.example.com
ist 52:54:00:fe:2f:b8 . Verwenden Sie dies im Playbook.
Installieren Sie jetzt nach der Dienstaufgabe system-roles
auf dem Controller:
$ yum install rhel-system-roles
Dieser Befehl installiert alle Systemrollen im Standardverzeichnis der Rolle.
Schreiben Sie jetzt ein Playbook, um eine neue Verbindung auf dem verwalteten Knoten hinzuzufügen:
---
- name: playbook for configuring second interface
hosts: server1.example.com
vars:
target_mac: “52:54:00:fe:2f:b8”
network_connection:
- name: static-network
type: ethernet
mac: “{{ target_mac }}”
state: up
ip :
dhcp: no
address:
- 192.168.0.5/24
roles:
- rhel-system-roles.network
Dies ist ein vollständiges Spielbuch. Ich erkläre Ihnen jeden Parameter Schritt für Schritt:
target_mac - Dies ist die MAC-Adresse der zweiten Ethernet-Schnittstelle. Dies hilft dabei, die richtige Schnittstelle auf einem verwalteten Knoten herauszufinden.
network_connection - Diese Variable enthält Informationen für neue Verbindungen:
- name:Name der neuen Verbindung
- Typ:neuer Verbindungstyp
- mac:die target_mac-Variable
- state:Aktivieren Sie die Verbindung mit
up
Möglichkeit - ip:DHCP-Option deaktivieren und mit diesem Parameter eine IP-Adresse zuweisen
Ich habe Variablen verwendet, die zum Ausführen der Netzwerksystemrolle erforderlich sind. Führen Sie nun dieses Playbook aus:
$ ansible-playbook networkconfiguration.yml
Dieses Playbook konfiguriert eine statische Netzwerkverbindung mit einer statischen IP-Adresse.
Um die Einstellungen zu überprüfen, melden Sie sich bei server1.example.com
an und bestätigen Sie die neu hinzugefügte Verbindung:
$ nmcli connection show
NAME UUID TYPE DEVICE
eno0 adc52c70-… ethernet eno0
static-network 1be30687-… ethernet eno1
virbr0 0a9de672-… bridge virbr0
Versuchen Sie ping
die IP-Adresse des statischen Netzwerks Verbindung, und wenn es erfolgreich ist, haben Sie die neue Netzwerkverbindung erfolgreich hinzugefügt.
Überprüfen Sie, ob eine neue Verbindung erfolgreich hinzugefügt wurde oder nicht, indem Sie die Ad-hoc-Befehle von der Controller-Maschine verwenden:
$ ansible server1.example.com -m shell -a 'nmcli con show'
Dieser Befehl zeigt Ihnen dieselbe Ausgabe wie in den vorherigen Schritten.
Abschluss
Dieser Artikel zeigt, dass Sie Netzwerkverbindungen mit Ansible-Systemrollen konfigurieren können. Dieses kleine Playbook reduziert manuelle Aufgaben und konfiguriert die Netzwerkverbindung vieler Computer auf einmal, indem es einfach eine Gruppe von Hosts erstellt. Diese Systemnetzwerkrollen prüfen während der Ausführung des Playbooks viele Parameter, bestätigen, dass NetworkManager ausgeführt wird, und testen die Konnektivität im Playbook selbst. Dies ist ein großartiges Beispiel dafür, wie Sie Systemrollen verwenden können, um Konfigurationen auf Ihren Systemen zu automatisieren.