Automatisierung und Konfiguration von Netzwerkkomponenten

Ansible hat sich in der IT-Automatisierung als ein starkes und vielseitiges Werkzeug etabliert. Neben der Verwaltung von Servern und virtuellen Maschinen ist Ansible auch hervorragend geeignet, um Netzwerkkomponenten wie Router, Switches, Firewalls und andere Geräte zu konfigurieren. In diesem Blog-Beitrag zeige ich, wie du mit Ansible die Netzwerkinfrastruktur automatisieren und konfigurieren kannst. Dies spart nicht nur Zeit, sondern reduziert auch menschliche Fehler bei der Verwaltung komplexer Netzwerke.

Warum Ansible für die Netzwerkkonfiguration?

Ansible ist eine agentenlose Lösung, was bedeutet, dass keine zusätzliche Software auf den Netzwerkgeräten installiert werden muss. Stattdessen kommuniziert Ansible über Standardprotokolle wie SSH oder API mit den Geräten. Dies macht es besonders nützlich in heterogenen Netzwerken, in denen Geräte von verschiedenen Anbietern wie Cisco, Juniper, Arista, F5 und anderen verwendet werden.

Einige der Vorteile von Ansible für die Netzwerkkonfiguration:

  • Agentenlos: Keine zusätzliche Software auf den Netzwerkgeräten notwendig.
  • Multi-Vendor-Unterstützung: Unterstützung für eine Vielzahl von Netzwerkherstellern.
  • Idempotenz: Ansible sorgt dafür, dass Konfigurationen nur dann geändert werden, wenn sie nicht mit der Zielkonfiguration übereinstimmen.
  • Einfache Syntax: Die Playbooks sind in YAML geschrieben, was eine klare und verständliche Darstellung der Konfigurationen ermöglicht.

Voraussetzungen

Bevor wir beginnen, benötigen wir einige grundlegende Anforderungen:

  1. Ansible-Steuerknoten: Ansible wird auf einem Linux-Steuerknoten ausgeführt.
  2. Netzwerkgeräte mit SSH oder API: Netzwerkgeräte müssen SSH oder eine API (z. B. REST oder NETCONF) unterstützen, um mit Ansible zu kommunizieren.
  3. Ansible Network Collections: Ansible verwendet spezifische Sammlungen (Collections), um mit Netzwerkgeräten verschiedener Hersteller zu interagieren.

Installation der Ansible Network Collections

Ansible stellt Network Collections bereit, die speziell für die Automatisierung von Netzwerkgeräten entwickelt wurden. Um die notwendigen Sammlungen zu installieren, kannst du den folgenden Befehl verwenden:

ansible-galaxy collection install cisco.ios ansible.netcommon

In diesem Beispiel installieren wir die cisco.ios-Collection, die für die Verwaltung von Cisco IOS-Geräten verwendet wird. Die Collection ansible.netcommon bietet allgemeine Netzwerkmodule, die für verschiedene Geräte verwendet werden können.

Beispiel: Konfiguration eines Cisco-IOS-Routers

In diesem Abschnitt konfigurieren wir einen Cisco-IOS-Router mithilfe von Ansible. Dabei werden wir eine grundlegende Konfiguration vornehmen, um das Gerät zu initialisieren, Netzwerkschnittstellen zu konfigurieren und Routing-Protokolle zu aktivieren.

Inventory-Datei für Netzwerkgeräte

In der inventory-Datei definieren wir die Netzwerkgeräte, die wir konfigurieren möchten. Im Gegensatz zu Servern verwenden wir die Gruppe network:

[network]
router01 ansible_host=192.168.1.1 ansible_network_os=cisco.ios ansible_user=cisco ansible_password=cisco ansible_become=yes

In dieser Datei wird festgelegt:

  • ansible_host: Die IP-Adresse des Routers.
  • ansible_network_os: Das Betriebssystem des Netzwerkgeräts (hier Cisco IOS).
  • ansible_user und ansible_password: Die Anmeldeinformationen für das Gerät.
  • ansible_become=yes: Wechselt in den privilegierten Modus (enable mode).

Einfaches Playbook für Cisco-IOS-Konfiguration

Nun erstellen wir ein Playbook, um grundlegende Konfigurationen auf dem Router vorzunehmen. Erstelle eine Datei namens router_config.yml mit folgendem Inhalt:

---
- name: Konfiguriere Cisco IOS Router
  hosts: network
  gather_facts: no
  tasks:

    - name: Setze den Hostnamen
      cisco.ios.ios_config:
        lines:
          - hostname Router01

    - name: Konfiguriere Loopback-Schnittstelle
      cisco.ios.ios_config:
        lines:
          - interface Loopback0
          - ip address 192.168.10.1 255.255.255.0

    - name: Setze statische Route
      cisco.ios.ios_config:
        lines:
          - ip route 0.0.0.0 0.0.0.0 192.168.1.254

Erklärung der Aufgaben:

  1. Setze den Hostnamen: Mit dem Modul ios_config können wir Konfigurationsbefehle auf einem Cisco-IOS-Gerät ausführen. In diesem Fall setzen wir den Hostnamen des Routers auf „Router01“.
  2. Konfiguriere Loopback-Schnittstelle: Die Loopback0-Schnittstelle wird konfiguriert und mit einer IP-Adresse versehen.
  3. Setze statische Route: Wir konfigurieren eine statische Route, um den gesamten Verkehr über das Gateway 192.168.1.254 zu routen.

Playbook ausführen

Um das Playbook auszuführen, verwende folgenden Befehl:

ansible-playbook -i inventory router_config.yml

Wenn alles korrekt eingerichtet ist, wird Ansible die Konfiguration auf dem Cisco-Router vornehmen.

Fortgeschrittenes Netzwerk-Playbook: VLAN-Konfiguration

Nun schauen wir uns ein fortgeschritteneres Szenario an: die Konfiguration von VLANs auf einem Netzwerk-Switch. In diesem Beispiel konfigurieren wir ein VLAN und fügen es zu einer bestimmten Schnittstelle hinzu.

Beispiel-Playbook zur VLAN-Konfiguration auf einem Cisco-Switch

---
- name: Konfiguriere VLAN auf einem Cisco-Switch
  hosts: network
  gather_facts: no
  tasks:

    - name: Erstelle VLAN 10
      cisco.ios.ios_config:
        lines:
          - vlan 10
          - name Management

    - name: Weise VLAN zu einer Schnittstelle zu
      cisco.ios.ios_config:
        lines:
          - interface GigabitEthernet1/0/1
          - switchport mode access
          - switchport access vlan 10

Erklärung:

  • Erstelle VLAN 10: Wir erstellen ein VLAN mit der ID 10 und weisen ihm den Namen „Management“ zu.
  • Weise VLAN zu einer Schnittstelle zu: Wir konfigurieren die Schnittstelle GigabitEthernet1/0/1 als Access-Port und ordnen ihr das VLAN 10 zu.

Dieses Playbook kann verwendet werden, um VLANs auf einem Cisco-Switch zu erstellen und zu konfigurieren.

Weitere Netzwerkmodule in Ansible

Ansible bietet eine Vielzahl von Modulen für verschiedene Netzwerkgeräte und Aufgaben. Hier eine Auswahl nützlicher Module für die Netzwerkkonfiguration:

  • ios_command: Führt beliebige Befehle auf Cisco IOS-Geräten aus.
  • ios_facts: Sammelt Fakten und Statusinformationen von Cisco IOS-Geräten.
  • nxos_config: Konfiguriert Cisco NX-OS-Geräte.
  • juniper_junos_config: Konfiguriert Juniper-JUNOS-Geräte.
  • vyos_config: Konfiguriert VyOS-Router.

Diese Module decken eine Vielzahl von Geräten und Herstellern ab und ermöglichen eine flexible Automatisierung der Netzwerkinfrastruktur.

Tipps zur Netzwerkkonfiguration mit Ansible

  1. Verwende gather_facts: no: Standardmäßig sammelt Ansible Fakten von den Hosts. Bei Netzwerkgeräten ist dies oft nicht notwendig, daher solltest du dies deaktivieren, um die Ausführungszeit zu reduzieren.
  2. Konfigurationsänderungen testen: Verwende die check_mode-Option, um Konfigurationsänderungen zu testen, bevor du sie anwendest. Dies ermöglicht es dir, sicherzustellen, dass die Änderungen wie erwartet funktionieren, ohne die Netzwerkkonfiguration sofort zu ändern.
  3. Backups erstellen: Es ist ratsam, vor der Anwendung von Änderungen ein Backup der aktuellen Konfiguration zu erstellen. Du kannst das Modul ios_command verwenden, um die laufende Konfiguration zu sichern.
- name: Erstelle ein Backup der Konfiguration
  cisco.ios.ios_command:
    commands: show running-config
  register: running_config

- name: Speichere die Konfiguration in einer Datei
  copy:
    content: "{{ running_config.stdout[0] }}"
    dest: "/backups/router01_running_config.txt"

Fazit

Ansible bietet eine flexible und leistungsstarke Möglichkeit zur Automatisierung und Verwaltung von Netzwerkkomponenten. Durch die Verwendung von spezifischen Netzwerkmodulen und der Agentenlosigkeit wird die Verwaltung von Netzwerkgeräten einfacher und effizienter. Egal, ob du Router, Switches oder Firewalls verwalten möchtest – Ansible ermöglicht eine einfache und wiederholbare Netzwerkkonfiguration.

Durch die Kombination von Ansible mit Netzwerk-Playbooks kannst du Aufgaben wie die VLAN-Konfiguration, Routing, Firmware-Upgrades und vieles mehr automatisieren, was zu einer robusteren und effizienteren Netzwerkinfrastruktur führt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert