avinetworks.network_interface

Netzwerk-Schnittstelle

WARNUNG: Diese Rolle kann gefährlich sein. Wenn Sie die Netzwerkverbindung zu Ihrem Zielhost durch eine falsche Netzwerkkonfiguration verlieren, können Sie möglicherweise ohne physischen Zugriff auf die Maschine nicht wiederherstellen.

Diese Rolle ermöglicht es Benutzern, verschiedene Netzwerkteile auf Zielmaschinen zu konfigurieren. Die Rolle kann verwendet werden, um Folgendes zu konfigurieren:

  • Ethernet-Schnittstellen
  • Bridge-Schnittstellen
  • Gebondete Schnittstellen
  • VLAN-getaggte Schnittstellen
  • Netzwerk-Routen

Anforderungen

Diese Rolle erfordert Ansible 1.4 oder höher, und die plattformspezifischen Anforderungen sind in der Metadatendatei aufgeführt.

Rollvariablen

Die Variablen, die an diese Rolle übergeben werden können, und eine kurze Beschreibung sind wie folgt:

Variable Erforderlich Standard Kommentare
network_pkgs Nein [] Typische benötigte Pakete wie selinux, bridge-utils, ifenslave und iproute
network_ether_interfaces Nein [] Die Liste der Ethernet-Schnittstellen, die zum System hinzugefügt werden sollen.
network_bridge_interfaces Nein [] Die Liste der Bridge-Schnittstellen, die zum System hinzugefügt werden sollen.
network_bond_interfaces Nein [] Die Liste der gebondeten Schnittstellen, die zum System hinzugefügt werden sollen.
network_vlan_interfaces Nein [] Die Liste der VLAN-Schnittstellen, die zum System hinzugefügt werden sollen.
network_check_packages Nein true Installiert die in network_pkgs aufgeführten Pakete.
network_allow_service_restart Nein true Ob Schnittstellen/Nettwerke neu konfiguriert und neu gestartet werden sollen.
network_modprobe_persist Nein true Beständige Modul-Ladung.
network_configured_interfaces_only Nein false Entfernt Schnittstellen, die nicht über diese Rolle konfiguriert sind, vollständig, wenn aktiviert.
network_interface_file_prefix Nein ifcfg- Das Präfix für Schnittstellen-Konfigurationsdateien.
network_interface_file_postfix Nein `` Das Postfix für Schnittstellen-Konfigurationsdateien.

Hinweis: Die Werte für die Liste sind in den nachstehenden Beispielen aufgeführt.

Beispiele

Debian (nicht RedHat) Netzwerkkonfigurationen können optional CIDR-Notation für IPv4-Adressen verwenden, anstatt die Adresse und die Subnetzmaske separat anzugeben. Es wird gefordert, CIDR-Notation für IPv6-Adressen auf Debian zu verwenden.

IPv4-Beispiel mit CIDR-Notation:

      cidr: 192.168.10.18/24
      # OPTIONAL: einen Gateway für dieses Netzwerk angeben, oder auto für Netzwerk+1
      gateway: auto

IPv4-Beispiel mit klassischer IPv4:

      address: 192.168.10.18
      netmask: 255.255.255.0
      network: 192.168.10.0
      broadcast: 192.168.10.255
      gateway: 192.168.10.1

Wenn Sie eine andere MAC-Adresse für Ihre Schnittstelle verwenden möchten, können Sie dies einfach hinzufügen.

      hwaddress: aa:bb:cc:dd:ee:ff

In einigen seltenen Fällen könnte es gut sein, welche Option auch immer Sie mögen, festzulegen. Daher ist es möglich, Folgendes zu verwenden

      options:
          - "up /execute/my/command"
          - "down /execute/my/other/command"

und die IPv6-Version

      ipv6_options:
          - "up /execute/my/command"
          - "down /execute/my/other/command"
  1. Konfigurieren Sie eth1 und eth2 auf einem Host mit einer statischen IP und einer DHCP-IP. Definieren Sie auch statische Routen und ein Gateway.
- hosts: myhost
  roles:
    - role: network
      network_ether_interfaces:
       - device: eth1
         bootproto: static
         cidr: 192.168.10.18/24
         gateway: auto
         route:
          - network: 192.168.200.0
            netmask: 255.255.255.0
            gateway: 192.168.10.1
          - network: 192.168.100.0
            netmask: 255.255.255.0
            gateway: 192.168.10.1
       - device: eth2
         bootproto: dhcp

Hinweis: Es ist nicht erforderlich, Routen hinzuzufügen, die Standardroute wird automatisch hinzugefügt.

  1. Konfigurieren Sie eine Bridge-Schnittstelle mit mehreren NICs, die der Bridge hinzugefügt sind.
- hosts: myhost
  roles:
    - role: network
      network_bridge_interfaces:
       - device: br1
         type: bridge
         cidr: 192.168.10.10/24
         bridge_ports: [eth1, eth2]

         # Optionale Werte
         bridge_ageing: 300
         bridge_bridgeprio: 32768
         bridge_fd: 15
         bridge_gcint: 4
         bridge_hello: 2
         bridge_maxage: 20
         bridge_maxwait: 0
         bridge_pathcost: "eth1 100"
         bridge_portprio: "eth1 128"
         bridge_stp: "on"
         bridge_waitport: "5 eth1 eth2"

Hinweis: Routen können für diese Schnittstelle auf die gleiche Weise hinzugefügt werden, wie Routen für Ethernet-Schnittstellen hinzugefügt werden.

  1. Konfigurieren Sie eine Bond-Schnittstelle mit einer "active-backup" Slave-Konfiguration.
- hosts: myhost
  roles:
    - role: network
      network_bond_interfaces:
        - device: bond0
          address: 192.168.10.128
          netmask: 255.255.255.0
          bond_mode: active-backup
          bond_slaves: [eth1, eth2]

          # Optionale Werte
          bond_miimon: 100
          bond_lacp_rate: slow
          bond_xmit_hash_policy: layer3+4
  1. Konfigurieren Sie eine gebondete Schnittstelle mit "802.3ad" als Bonding-Modus und IP-Adresse, die über DHCP bezogen wird.
- hosts: myhost
  roles:
    - role: network
      network_bond_interfaces:
        - device: bond0
          bootproto: dhcp
          bond_mode: 802.3ad
          bond_miimon: 100
          bond_slaves: [eth1, eth2]
          bond_ad_select: 2
  1. Konfigurieren Sie eine VLAN-Schnittstelle mit dem VLAN-Tag 2 für eine Ethernet-Schnittstelle.
- hosts: myhost
  roles:
    - role: network
      network_ether_interfaces:
       - device: eth1
         bootproto: static
         cidr: 192.168.10.18/24
         gateway: auto
      network_vlan_interfaces:
       - device: eth1.2
         bootproto: static
         cidr: 192.168.20.18/24
  1. Alle oben genannten Beispiele zeigen, wie man einen einzelnen Host konfiguriert. Das folgende Beispiel zeigt, wie man die Netzwerkkonfigurationen für alle Maschinen definiert.

Angenommen, Ihre Host-Inventarliste ist wie folgt:

/etc/ansible/hosts

[dc1]
host1
host2

Beschreiben Sie Ihre Netzwerkkonfiguration für jeden Host in den Host-Variablen:

host_vars/host1

    network_ether_interfaces:
           - device: eth1
             bootproto: static
             address: 192.168.10.18
             netmask: 255.255.255.0
             gateway: 192.168.10.1
             route:
              - network: 192.168.200.0
                netmask: 255.255.255.0
                gateway: 192.168.10.1
    network_bond_interfaces:
            - device: bond0
              bootproto: dhcp
              bond_mode: 802.3ad
              bond_miimon: 100
              bond_slaves: [eth2, eth3]

host_vars/host2

network_ether_interfaces:
       - device: eth0
         bootproto: static
         address: 192.168.10.18
         netmask: 255.255.255.0
         gateway: 192.168.10.1
  1. Wenn das resolvconf-Paket verwendet werden soll, können einige DNS-Konfigurationen hinzugefügt werden.
dns-nameserver: [ "8.8.8.8", "8.8.4.4" ]
dns-search: "search.mydomain.tdl"
dns-domain: "mydomain.tdl"
  1. Sie können IPv6-statische IP-Konfigurationen für Ethernet-, Bond- oder Bridge-Schnittstellen hinzufügen.
ipv6_address: "aaaa:bbbb:cccc:dddd:dead:beef::1/64"
ipv6_gateway: "aaaa:bbbb:cccc:dddd::1"

Erstellen Sie ein Playbook, das diese Rolle auf alle Hosts anwendet, wie unten gezeigt, und führen Sie das Playbook aus. Alle Server sollten ihre Netzwerkschnittstellen konfiguriert und Routen aktualisiert haben.

- hosts: all
  roles:
    - role: network
  1. Diese Rolle kann auch optional Netzwerkschnittstellen zu Firewalld-Zonen hinzufügen. Das Kern-Modul firewalld (http://docs.ansible.com/ansible/latest/firewalld_module.html) kann die gleiche Funktion ausführen, sodass wenn Sie beide Module verwenden, Ihre Playbooks möglicherweise nicht idempotent sind. Betrachten Sie diesen Fall, in dem nur das firewalld-Modul verwendet wird:
  • Die Rolle network_interface wird ausgeführt; ohne dass eine firewalld_zone-Hostvariable gesetzt ist, wird jede ZONE-Zeile aus ifcfg-* entfernt.
  • Das firewalld-Modul wird ausgeführt; fügt eine ZONE-Zeile zu ifcfg-* hinzu.
  • Bei der nächsten Playbook-Ausführung läuft die Rolle network_interface und entfernt die ZONE-Zeile erneut, und der Zyklus wiederholt sich.

Damit diese Rolle die Firewalld-Zonen verwalten kann, muss das System eine RHEL-basierte Distribution verwenden und NetworkManager zur Verwaltung der Netzwerkschnittstellen nutzen. Wenn diese Kriterien erfüllt sind, zeigt das folgende Beispiel, wie die eth0-Schnittstelle zur öffentlichen Firewalld-Zone hinzugefügt werden kann:

       - device: eth0
         bootproto: static
         address: 192.168.10.18
         netmask: 255.255.255.0
         gateway: 192.168.10.1
         firewalld_zone: public

Hinweis: Ansible benötigt während des gesamten Playbook-Prozesses eine Netzwerkverbindung, Sie müssen möglicherweise eine Kontrollschnittstelle haben, die Sie bei dieser Methode nicht ändern, während Sie IP-Adressen ändern, damit Ansible eine stabile Verbindung hat, um die Zielsysteme zu konfigurieren. Alle Netzwerkänderungen werden innerhalb eines einzelnen generierten Skripts durchgeführt, und die Netzwerkverbindung geht nur für einige Sekunden verloren.

Abhängigkeiten

python-netaddr

Lizenz

BSD

Autoreninformationen

Dieses Projekt wurde ursprünglich von Benno Joy erstellt.

Debian-Updates von:

  • Martin Verges (croit, GmbH)
  • Eric Anderson (Avi Networks, Inc.)

RedHat-Updates von:

  • Eric Anderson (Avi Networks, Inc.)
  • Luke Short (Red Hat, Inc.)
  • Wei Tie (Cisco Systems, Inc.)

Die vollständige Liste der Mitwirkenden finden Sie hier.

Über das Projekt

This roles enables users to configure various network components on target machines.

Installieren
ansible-galaxy install avinetworks.network_interface
Lizenz
Unknown
Downloads
7.3k
Besitzer