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"
  1. 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.

  1. 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.

  1. 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
  1. 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
  1. 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
  1. 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
  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"
  1. 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
  1. 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.

O projekcie

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

Zainstaluj
ansible-galaxy install avinetworks.network_interface
Licencja
Unknown
Pobrania
7.3k
Właściciel