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"
- 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.
- 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.
- 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
- 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
- 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
- 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
- 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"
- 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
- 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 dasfirewalld
-Modul verwendet wird:
- Die Rolle
network_interface
wird ausgeführt; ohne dass einefirewalld_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.
This roles enables users to configure various network components on target machines.
ansible-galaxy install avinetworks.network_interface