avinetworks.network_interface
interfejs_sieciowy
UWAGA: Ta rola może być niebezpieczna w użyciu. Jeśli stracisz łączność sieciową z docelowym hostem w wyniku niewłaściwej konfiguracji, może okazać się niemożliwe przywrócenie dostępu bez fizycznego dostępu do maszyny.
Ta rola umożliwia użytkownikom konfigurowanie różnych komponentów sieciowych na docelowych maszynach. Można jej użyć do konfiguracji:
- Interfejsów Ethernet
- Interfejsów mostkowych
- Interfejsów zgrupowanych
- Interfejsów z tagami VLAN
- Tras sieciowych
Wymagania
Ta rola wymaga Ansible w wersji 1.4 lub wyższej, a wymagania platformowe są wymienione w pliku metadanych.
Zmienne roli
Zmienne, które można przekazać do tej roli oraz ich krótki opis przedstawione są poniżej:
Zmienna | Wymagana | Domyślna | Uwagi |
---|---|---|---|
network_pkgs |
Nie | [] |
Typowe potrzebne pakiety jak selinux, bridge-utils, ifenslave i iproute |
network_ether_interfaces |
Nie | [] |
Lista interfejsów ethernetowych do dodania do systemu. |
network_bridge_interfaces |
Nie | [] |
Lista interfejsów mostkowych do dodania do systemu. |
network_bond_interfaces |
Nie | [] |
Lista interfejsów zgrupowanych do dodania do systemu. |
network_vlan_interfaces |
Nie | [] |
Lista interfejsów VLAN do dodania do systemu. |
network_check_packages |
Nie | true |
Instaluj pakiety wymienione w network_pkgs . |
network_allow_service_restart |
Nie | true |
Czy interfejsy/sieć powinny być rekonfigurowane i restartowane. |
network_modprobe_persist |
Nie | true |
Trwałe ładowanie modułów. |
network_configured_interfaces_only |
Nie | false |
Całkowicie usuwa interfejsy nie skonfigurowane przez tę rolę, jeśli włączone. |
network_interface_file_prefix |
Nie | ifcfg- |
Prefiks dla plików konfiguracji interfejsów. |
network_interface_file_postfix |
Nie | `` | Postfiks dla plików konfiguracji interfejsów. |
Uwaga: Wartości dla list są wymienione w poniższych przykładach.
Przykłady
Konfiguracje sieci na Debianie (nie RedHat) mogą opcjonalnie używać notacji CIDR dla adresów IPv4 zamiast podawania adresu i maski podsieci oddzielnie. Użycie notacji CIDR dla adresów IPv6 na Debianie jest wymagane.
Przykład IPv4 z notacją CIDR:
cidr: 192.168.10.18/24
# OPCJONALNIE: określ bramę dla tej sieci, lub auto dla sieci+1
gateway: auto
Przykład IPv4 z klasycznym 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
Jeśli chcesz użyć innego adresu MAC dla swojego interfejsu, możesz go po prostu dodać.
hwaddress: aa:bb:cc:dd:ee:ff
W niektórych rzadkich przypadkach może być dobrze ustawić dowolną opcję. Dlatego można użyć
options:
- "up /execute/my/command"
- "down /execute/my/other/command"
i wersja IPv6
ipv6_options:
- "up /execute/my/command"
- "down /execute/my/other/command"
- Skonfiguruj eth1 i eth2 na hoście z adresem IP statycznym i adresem IP DHCP. Zdefiniuj również trasy statyczne i bramę.
- 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
Uwaga: Nie jest wymagane dodawanie tras, domyślna trasa zostanie dodana automatycznie.
- Skonfiguruj interfejs mostkowy z wieloma kartami sieciowymi dodanymi do mostka.
- hosts: myhost
roles:
- role: network
network_bridge_interfaces:
- device: br1
type: bridge
cidr: 192.168.10.10/24
bridge_ports: [eth1, eth2]
# Opcjonalne wartości
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"
Uwaga: Trasy mogą być również dodane dla tego interfejsu w taki sam sposób, jak dodawane są trasy dla interfejsów ethernetowych.
- Skonfiguruj interfejs zgrupowany z konfiguracją "active-backup" dla slave.
- 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]
# Opcjonalne wartości
bond_miimon: 100
bond_lacp_rate: slow
bond_xmit_hash_policy: layer3+4
- Skonfiguruj interfejs zgrupowany z właściwym trybem zgrupowania "802.3ad" i adresem IP uzyskanym przez DHCP.
- 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
- Skonfiguruj interfejs VLAN z tagiem vlan 2 dla interfejsu ethernetowego.
- 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
- Wszystkie powyższe przykłady pokazują, jak skonfigurować jeden host. Poniższy przykład pokazuje, jak zdefiniować konfiguracje sieciowe dla wszystkich swoich maszyn.
Załóżmy, że Twoja inwentarz hostów wygląda następująco:
/etc/ansible/hosts
[dc1]
host1
host2
Opisz swoją konfigurację sieci dla każdego hosta w host vars:
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
- Jeśli pakiet resolvconf ma być użyty, można dodać pewne konfiguracje DNS.
dns-nameserver: [ "8.8.8.8", "8.8.4.4" ]
dns-search: "search.mydomain.tdl"
dns-domain: "mydomain.tdl"
- Możesz dodać konfigurację statycznego adresu IPv6 na interfejsach Ethernet, Bond lub Bridge.
ipv6_address: "aaaa:bbbb:cccc:dddd:dead:beef::1/64"
ipv6_gateway: "aaaa:bbbb:cccc:dddd::1"
Stwórz playbook, który zastosuje tę rolę do wszystkich hostów, jak pokazano poniżej, i uruchom playbook. Wszystkie serwery powinny mieć skonfigurowane interfejsy sieciowe, a trasy zaktualizowane.
- hosts: all
roles:
- role: network
- Ta rola może również opcjonalnie dodawać interfejsy sieciowe do stref firewalld. Podstawowy moduł firewalld (http://docs.ansible.com/ansible/latest/firewalld_module.html) może wykonać tę samą funkcję, więc jeśli używasz obu modułów, twoje playbooki mogą nie być idempotentne. Uważaj na przypadek, w którym użyty jest tylko moduł firewalld:
- rola interfejs_sieciowy jest uruchamiana; bez zmiennej host
firewalld_zone
ustawionej, wtedy wszystkie linie ZONE zostaną usunięte z ifcfg-* - moduł
firewalld
jest uruchamiany; dodaje linięZONE
do ifcfg-* - Przy następnym uruchomieniu playbooka, rola interfejs_sieciowy uruchamia się i ponownie usuwa linię ZONE, więc cykl się powtarza.
Aby ta rola mogła zarządzać strefami firewalld, system musi być oparty na dystrybucji RHEL i używać NetworkManager do zarządzania interfejsami sieciowymi. Jeśli te kryteria są spełnione, poniższy przykład pokazuje, jak dodać interfejs eth0 do publicznej strefy firewalld:
- device: eth0
bootproto: static
address: 192.168.10.18
netmask: 255.255.255.0
gateway: 192.168.10.1
firewalld_zone: public
Uwaga: Ansible potrzebuje łączności sieciowej przez cały proces playbooka, może być konieczne posiadanie interfejsu kontrolnego, którego nie będziesz modyfikować w ten sposób, zmieniając adresy IP, aby Ansible miał stabilne połączenie do konfigurowania wybranych systemów. Wszystkie zmiany w sieci są dokonywane w ramach jednego wygenerowanego skryptu, a łączność sieciowa jest tracona tylko na kilka sekund.
Zależności
python-netaddr
Licencja
BSD
Informacje o autorze
Ten projekt został pierwotnie stworzony przez Benno Joy.
Ulepszenia dla Debiana przez:
- Martin Verges (croit, GmbH)
- Eric Anderson (Avi Networks, Inc.)
Ulepszenia dla RedHat przez:
- Eric Anderson (Avi Networks, Inc.)
- Luke Short (Red Hat, Inc.)
- Wei Tie (Cisco Systems, Inc.)
Pełna lista współtwórców znajduje się tutaj.
This roles enables users to configure various network components on target machines.
ansible-galaxy install avinetworks.network_interface