linux-system-roles.network

linux-system-roles/sieć

ansible-lint.yml ansible-test.yml codeql.yml integration.yml markdownlint.yml python-unit-test.yml shellcheck.yml tft.yml tft_citest_bad.yml woke.yml Status pokrycia Styl kodu: czarny Ocena języka: Python

Przegląd

Rola siec umożliwia użytkownikom konfigurowanie sieci na docelowych maszynach. Ta rola może być używana do konfigurowania:

  • interfejsów Ethernet
  • interfejsów mostkowych
  • interfejsów zgrupowanych
  • interfejsów VLAN
  • interfejsów MacVLAN
  • interfejsów InfiniBand
  • interfejsów bezprzewodowych (WiFi)
  • konfiguracji IP
  • uwierzytelnienia 802.1x

Wprowadzenie

Rola siec obsługuje dwóch dostawców: nm oraz initscripts. nm jest używany domyślnie od RHEL7, a initscripts w RHEL6. Dostawca initscripts wymaga pakietu network-scripts, który jest przestarzały w RHEL8 i usunięty w RHEL9. Można skonfigurować tych dostawców na poziomie hosta za pomocą zmiennej network_provider. W przypadku braku explicitnej konfiguracji, dostawca jest automatycznie wykrywany na podstawie dystrybucji. Należy jednak pamiętać, że nm lub initscripts nie są związane z określoną dystrybucją. Rola siec działa wszędzie tam, gdzie dostępne jest wymagane API. Oznacza to, że nm wymaga co najmniej wersji API NetworkManager 1.2 oraz pewnych ustawień wspieranych przez dostawcę nm, które również wymagają wyższej wersji API NetworkManager, od której wprowadzone są te ustawienia.

Rola siec obsługuje dwa moduły: network_connections i network_state.

Dla każdego hosta można konfigurować listę profili sieciowych poprzez zmienną network_connections.

  • Dla initscripts profile odpowiadają plikom ifcfg w katalogu /etc/sysconfig/network-scripts/ i te pliki ifcfg mają linię NM_CONTROLLED=no.

  • Dla nm, profile odpowiadają profilom połączeń obsługiwanym przez NetworkManager, a w RHEL9 obsługiwany jest tylko format plików kluczy NetworkManager w /etc/NetworkManager/system-connections/.

Dla każdego hosta konfiguracja stanu sieci również może być stosowana do interfejsu bezpośrednio za pomocą zmiennej network_state, przy czym tylko dostawca nm obsługuje używanie zmiennej network_state.

Należy pamiętać, że rola siec działa zarówno na profilach połączeń urządzeń (za pomocą zmiennej network_connections), jak i na urządzeniach bezpośrednio (za pomocą zmiennej network_state). Podczas konfigurowania profili połączeń przez rolę, domyślnie używana jest nazwa profilu jako nazwa interfejsu. Możliwe jest także tworzenie ogólnych profili, na przykład przez stworzenie profilu z określoną konfiguracją IP bez aktywacji profilu. Aby zastosować konfigurację do rzeczywistego interfejsu sieciowego, należy użyć poleceń nmcli na systemie docelowym.

Uwaga: Rola siec aktualizuje lub tworzy wszystkie profile połączeń na systemie docelowym zgodnie z wymaganiami opisanymi w zmiennej network_connections. Dlatego rola siec usuwa opcje z określonych profili, jeśli opcje te znajdują się tylko na systemie, ale nie w zmiennej network_connections. Wyjątki są wymienione poniżej. Jednak częściowa konfiguracja sieci może być osiągnięta przez określenie konfiguracji stanu sieci w zmiennej network_state.

Wymagania

Zobacz poniżej

Wymagania dotyczące kolekcji

Rola wymaga zewnętrznych kolekcji tylko do zarządzania węzłami rpm-ostree. Proszę uruchomić następujące polecenie, aby je zainstalować, jeśli potrzebujesz zarządzać węzłami rpm-ostree:

ansible-galaxy collection install -vv -r meta/collection-requirements.yml

Zmienne

Rola siec jest konfigurowana za pomocą zmiennych zaczynających się od network_ jako prefiksu nazwy. Lista zmiennych:

  • network_provider - Zmienna network_provider pozwala ustawić specyficzny dostawcę (nm lub initscripts). Ustawiając ją na {{ network_provider_os_default }}, dostawca jest ustawiony w zależności od systemu operacyjnego. Jest to zazwyczaj nm, z wyjątkiem systemów RHEL 6 lub CentOS 6. Zmiana dostawcy dla istniejącego profilu nie jest wspierana. Aby zmienić dostawców, zaleca się najpierw usunięcie profili z poprzednim dostawcą, a następnie stworzenie nowych profili z nowym dostawcą.
  • network_connections - Profile połączeń są konfigurowane jako network_connections, co jest listą słowników zawierających specyficzne opcje.
  • network_allow_restart - Domyślnie ustawiona na false. Aby załadować wtyczki NetworkManager po instalacji, NetworkManager wymaga ponownego uruchomienia. Na przykład, jeśli skonfigurowane jest połączenie bezprzewodowe i NetworkManager-wifi nie jest zainstalowany, NetworkManager musi być ponownie uruchomiony przed skonfigurowaniem połączenia. Restart może spowodować utratę łączności, dlatego rola nie pozwala na to bez wyraźnej zgody. Użytkownik może wyrazić zgodę, ustawiając network_allow_restart na true. Ustawienie network_allow_restart na false zapobiegnie roli w ponownym uruchomieniu NetworkManager.
  • network_state - Ustawienia stanu sieci mogą być konfigurowane w zarządzanym hoście, a format oraz składnia konfiguracji powinny być zgodne z przykładami stanu nmstate (YAML).

Przykłady zmiennych

Ustawianie zmiennych

network_provider: nm
network_connections:
  - name: eth0
    #...
network_allow_restart: true
network_provider: nm
network_state:
  interfaces:
    - name: eth0
    #...
  routes:
    config:
      #...
  dns-resolver:
    config:
      #...

Opcje network_connections

Zmienna network_connections jest listą słowników, które zawierają następujące opcje. Lista opcji:

name (zazwyczaj wymagana)

Opcja name identyfikuje profil połączenia, który ma być skonfigurowany. Nie jest to nazwa interfejsu sieciowego, do którego odnosi się profil, chociaż możemy skojarzyć profil z interfejsem i nadać im tę samą nazwę. Należy pamiętać, że można mieć wiele profili dla tego samego urządzenia, ale tylko jeden profil może być aktywny na urządzeniu w danym momencie. Dla NetworkManagera, połączenie może być aktywne tylko na jednym urządzeniu w danym momencie.

  • Dla NetworkManager opcja name odpowiada właściwości connection.id. Chociaż NetworkManager wspiera wiele połączeń z tym samym connection.id, rola siec nie potrafi poradzić sobie z duplikującą się name. Podanie name więcej niż jeden raz odnosi się do tego samego profilu połączenia.

  • Dla initscripts opcja name określa nazwę pliku ifcfg /etc/sysconfig/network-scripts/ifcfg-$NAME. Należy pamiętać, że name nie określa DEVICE, ale nazwę pliku. W rezultacie, '/' nie jest prawidłowym znakiem dla name.

Możesz także używać tego samego profilu połączenia wielokrotnie. Dlatego możliwe jest stworzenie profilu i aktywowanie go osobno.

Uwaga: Rola sieciowa zmieni tylko profile, które są określone w zmiennej network_connections. Dlatego, jeśli tylko porty profilu są wskazane do usunięcia z kontrolera i kontroler nie jest określony, profil kontrolera pozostanie na systemie. Może to się zdarzyć, jeśli na przykład usunięto wszystkie porty z interfejsu zgrupowanego.

Uwaga: Aby usunąć wszystkie profile na systemie, które nie są określone w zmiennej network_connections, dodaj wpis bez nazwy i persistent_state: absent. To spowoduje dopasowanie i usunięcie wszystkich pozostałych profili:

network_connections:
  - name: eth0  # profile do zachowania/konfigurowania w systemie
    [...]

  - persistent_state: absent  # usuń wszystkie inne profile

state

Opcja state identyfikuje, jaka jest stan wykonania każdego profilu połączenia. Opcja state (opcjonalna) może być ustawiona na następujące wartości:

  • up - profil połączenia jest aktywowany
  • down - profil połączenia jest dezaktywowany

state: up

  • Dla NetworkManager, odpowiada to nmcli connection id {{name}} up.

  • Dla initscripts, odpowiada to wywołaniu ifup {{name}}.

Kiedy opcja state jest ustawiona na up, można także określić opcję wait (opcjonalnie):

  • wait: 0 - inicjuje tylko aktywację, ale nie czeka, aż urządzenie będzie całkowicie połączone. Połączenie zakończy się w tle, na przykład po uzyskaniu dzierżawy DHCP.
  • wait: <sekundy> to limit czasowy, który pozwala decydować, jak długo dajesz urządzeniu na aktywację. Domyślnie używany jest odpowiedni limit czasowy. Należy pamiętać, że opcja wait jest wspierana tylko przez NetworkManager.

Należy pamiętać, że state: up zawsze ponownie aktywuje profil i może zmienić konfigurację sieciową, nawet jeśli profil był już aktywny wcześniej. W rezultacie state: up zawsze zmienia system.

state: down

  • Dla NetworkManager, odpowiada to nmcli connection id {{name}} down.

  • Dla initscripts, odpowiada to wywołaniu ifdown {{name}}.

Możesz dezaktywować profil połączenia, nawet jeśli jest obecnie nieaktywny. W rezultacie state: down zawsze zmienia system.

Należy pamiętać, że jeśli opcja state jest nieustawiona, stan wykonania profilu połączenia nie zostanie zmieniony.

persistent_state

Opcja persistent_state identyfikuje, czy profil połączenia jest trwały (zapisany na dysku). Opcja persistent_state może być ustawiona na następujące wartości:

persistent_state: present (domyślnie)

Należy pamiętać, że jeśli persistent_state jest present, a profil połączenia zawiera opcję type, profil zostanie utworzony lub zaktualizowany. Jeśli profil połączenia jest niekompletny (brakuje opcji type), zachowanie jest nieokreślone. Ponadto wartość present nie prowadzi bezpośrednio do zmiany konfiguracji sieciowej. Jeśli opcja state nie jest ustawiona na up, profil jest tylko tworzony lub modyfikowany, nie aktywowany.

Dla NetworkManager, nowy profil połączenia jest tworzony z włączoną opcją autoconnect domyślnie. W związku z tym, NetworkManager może aktywować nowy profil na obecnie odłączonym urządzeniu. (rh#1401515).

persistent_state: absent

Wartość absent zapewnia, że profil nie jest obecny na docelowym hoście. Jeśli profil o podanej name istnieje, zostanie usunięty. W takim przypadku:

  • NetworkManager usuwa wszystkie profile połączeń z odpowiadającym connection.id. Usunięcie profilu zwykle nie zmienia obecnej konfiguracji sieciowej, chyba że profil był aktualnie aktywowany na urządzeniu. Usunięcie aktywnego profilu połączenia powoduje odłączenie urządzenia. To sprawia, że urządzenie nadaje się do ponownego połączenia z innym połączeniem (zobacz więcej szczegółów na rh#1401515).

  • initscripts usuwa plik ifcfg w większości przypadków bez wpływu na stan wykonania systemu, chyba że jakiś komponent monitoruje katalog sysconfig.

Uwaga: Dla profili, które tylko zawierają opcję state, rola siec wyłącznie aktywuje lub dezaktywuje połączenie bez zmiany jego konfiguracji.

type

Opcja type może być ustawiona na następujące wartości:

  • ethernet
  • bridge
  • bond
  • team
  • vlan
  • macvlan
  • infiniband
  • wireless
  • dummy

type: ethernet

Jeśli typ to ethernet, to może wystąpić dodatkowy słownik ethernet z następującymi elementami (opcje): autoneg, speed i duplex, które odpowiadają ustawieniom narzędzia ethtool o tej samej nazwie.

  • autoneg: true (domyślnie) lub false [czy auto-negocjacja jest włączona lub wyłączona]
  • speed: prędkość w Mbit/s
  • duplex: half lub full

Należy pamiętać, że ustawienia linków speed i duplex są wymagane gdy auto-negocjacja jest wyłączona (autoneg: false).

type: bridge, type: bond, type: team

Typy urządzeń bridge, bond, team działają podobnie. Należy pamiętać, że team nie jest wspierany w jądrze RHEL6, a jego użycie jest przestarzałe w RHEL 9.

Dla portów muszą być ustawione właściwości port_type i controller. Należy pamiętać, że porty nie powinny mieć ustawień ip, co oznacza, że aktywne porty nie będą miały przypisanych adresów IP.

controller odnosi się do name profilu w Ansible playbook. Nie jest to ani nazwa interfejsu, ani connection-id NetworkManager.

  • Dla NetworkManager, controller zostanie przekształcony na connection.uuid odpowiadającego profilu.

  • Dla initscripts, kontroler jest wyszukiwany jako DEVICE z odpowiadającego pliku ifcfg.

Ponieważ controller odnosi się do innych profili tego samego lub innego play, kolejność listy connections ma znaczenie. Profile, które są odwoływane przez inne profile, muszą być określone jako pierwsze. Również --check ignoruje wartość controller i zakłada, że będzie obecna podczas rzeczywistego uruchamiania. To oznacza, że w obecności nieprawidłowego controller, --check może sygnalizować sukces, ale rzeczywiste uruchomienie gry się nie powiedzie.

Jeśli tylko zmniejszisz profil controller, profile portów zostaną wyłączone automatycznie. Jeżeli zmniejszysz połączenie na niektórych lub wszystkich portach, profil kontrolera pozostanie aktywny.

Typ team używa roundrobin jako konfiguracji runner. Żadne dalsze konfiguracje nie są obecnie wspierane.

type: vlan

Podobnie jak controller, parent odnosi się do profilu połączenia w roli ansible. ID vlan można określić, używając zagnieżdżonego ustawienia vlan, a ważne wartości ID vlan mieszczą się w zakresie od 0 do 4094. Oto jak określić ID vlan:

type: vlan
vlan:
  id: 6

type: macvlan

Podobnie jak controller i vlan, parent odnosi się do profilu połączenia w rolę ansible.

type: infiniband

Dla połączenia infiniband, obecnie wspierane jest tylko przez dostawcę nm, a następujące opcje są wspierane:

  • p_key: P_Key infiniband do użycia dla urządzenia. Kiedy nie jest określony, połączenie tworzona jest na fizycznych tkaninach infiniband. W przeciwnym razie jest to 16-bitowa liczba całkowita a połączenie ipoib (IP przez Infiniband) będzie utworzone, wysoki bit powinien być ustawiony, jeśli jest to "pełne członkostwo" P_Key. Specjalne wartości p_key 0x0000 i 0x8000 są nieprawidłowe, ponieważ jądro ich nie obsługuje.
  • transport_mode: tryb operacyjny połączenia ipoib (IP przez Infiniband). Możliwe tryby to datagram (domyślnie) i connected.

Uwaga: Jeśli p_key jest określony, interface_name musi być nieustawione.

type: wireless

Typ bezprzewodowy wspiera autoryzację WPA-PSK (hasło), autoryzację WPA-EAP (802.1x), autoryzację WPA3-Personal SAE (hasło) oraz Enhanced Open (OWE).

nm (NetworkManager) jest jedynym wspieranym network_provider dla tego typu.

Jeśli używana jest WPA-EAP, ustawienia ieee802_1x muszą być zdefiniowane w opcji ieee802_1x.

Następujące opcje są wspierane:

  • ssid: SSID sieci bezprzewodowej (wymagana)

  • key_mgmt (wymagana)

    Jakikolwiek klucz z następującej listy kluczy:

    • owe
    • sae
    • wpa-eap
    • wpa-psk
  • password: hasło do sieci (wymagane, jeśli używane jest wpa-psk lub sae)

type: dummy

Dummy interfejs sieciowy, nm (NetworkManager) jest jedynym wspieranym network_provider dla tego typu.

autoconnect

Domyślnie profile są tworzone z włączonym autoconnect.

  • Dla NetworkManager, to odpowiada właściwości connection.autoconnect.

  • Dla initscripts, to odpowiada właściwości ONBOOT.

mac

Adres mac jest opcjonalny i ogranicza profil do używania tylko na urządzeniach z danym adresem MAC. mac jest dozwolone tylko dla type ethernet lub infiniband, aby dopasować nie-wirtualne urządzenie do profilu. Wartość adresu mac musi być określona w notacji szesnastkowej używanej z dwukropkami (np.: mac: "00:00:5e:00:53:5d"). Aby uniknąć parsowania YAML adresów mac jako liczb całkowitych w notacji sexagesimalnej (podstawa 60) (zobacz https://yaml.org/spec/1.1/#id858600), zaleca się zawsze cytować wartość podwójnymi cudzysłowami, a czasem jest to konieczne.

  • Dla NetworkManager, mac jest stałym adresem MAC, ethernet.mac-address.

  • Dla initscripts, mac jest obecnie skonfigurowanym adresem MAC urządzenia (HWADDR).

cloned_mac

Adres cloned_mac jest opcjonalny i pozwala określić strategię uzyskiwania domyślnej mac lub ustawić własne mac. Wartość adresu cloned_mac musi być zdefiniowana w notacji szesnastkowej, tak jak opcja mac. Oprócz jawnego podania wartości jako adresu MAC używając notacji szesnastkowej, również wspierane są następujące specjalne wartości:

  • default: honorować domyślne zachowanie w NetworkManager
  • permanent: użyć stałego adresu MAC urządzenia
  • preserve: nie zmieniać adresu MAC urządzenia podczas aktywacji
  • random: generować zrandomizowaną wartość przy każdym połączeniu
  • stable: generować stabilny, haszowany adres MAC

mtu

Opcja mtu oznacza maksymalną jednostkę transmisji dla urządzenia profilu. Maksymalna wartość zależy od urządzenia. Dla urządzeń wirtualnych maksymalna wartość opcji mtu zależy od podległego urządzenia.

interface_name

Dla typów ethernet i infiniband, opcja interface_name ogranicza profil do podanego interfejsu po nazwie. Ten argument jest opcjonalny, a domyślnie używana jest nazwa profilu, chyba że zdefiniowano adres MAC używając klucza mac. Podanie pustego ciągu ("") oznacza, że profil nie jest ograniczony do konkretnego interfejsu sieciowego.

Uwaga: Przy naming konfiguracyjnym persistent, interfejs jest przewidywalny na podstawie konfiguracji sprzętowej. W przeciwnym razie, adres mac może być opcją.

Dla typów interfejsów wirtualnych, takich jak mostki, opcja interface_name to nazwa utworzonego interfejsu. W razie braku interface_name, używana jest nazwa profilu.

Uwaga: name (nazwa profilu) i interface_name (nazwa urządzenia) mogą być różne lub profil może nie być związany z interfejsem wcale.

match

Ustawienia do określenia urządzeń lub systemów dopasowujących do profilu. Obecnie tylko ustawienie path zostało wdrożone.

Ustawienia wspierają listę wzorów, które wspierają następujące modyfikatory oraz dzikie karty:

Specjalne modyfikatory dla ustawień match:

  • |, element jest alternatywą, dopasowanie ocenia się jako prawdziwe, jeśli przynajmniej jeden z alternatyw pasuje (logiczne LUB). Domyślnie element jest alternatywą. Oznacza to, że element foo zachowuje się tak samo jak |foo

  • &, element jest obowiązkowy, dopasowanie ocenia się jako prawdziwe, jeśli wszystkie elementy pasują (logiczne I)

  • !, element można również odwrócić używając znaku wykrzyknika (!) pomiędzy symbolem rury (lub ampersand) i przed wzorem. Należy pamiętać, że !foo to skrót dla obowiązkowego dopasowania &!foo

  • \, ś Backslash można użyć na początku elementu (po opcjonalnych znakach specjalnych) do ucieczki startu wzoru. Na przykład &\!a oznacza obowiązkowe dopasowanie dla dosłownego !a

Wzorce dzikich kart dla ustawień match: W ogóle działają tak jak globy powłoki.

  • *, dopasowuje zero lub więcej dowolnych znaków
  • ?, dopasowuje dowolny pojedynczy znak
  • [fo] - dopasowuje dowolny pojedynczy f lub o - wspiera również zakresy - [0-9] pasuje do dowolnego pojedynczego znaku cyfr

path

Ustawienie path jest listą wzorów, które powinny odpowiadać właściwości ID_PATH udev urządzeń. Właściwość ID_PATH udev reprezentuje trwałą ścieżkę urządzenia. Składa się z ciągu subsystemu (pci, usb, platform, itp.) oraz identyfikatora specyficznego dla subsystemu. Właściwość ID_PATH urządzenia można uzyskać za pomocą polecenia udevadm info /sys/class/net/$dev | grep ID_PATH= lub patrząc na właściwość path wyeksportowaną przez NetworkManager (nmcli -f general.path device show $dev). Ustawienie path jest opcjonalne i ogranicza profil, aby był aktywowany tylko na urządzeniach z dopasowującym ID_PATH. Ustawienie path jest wspierane tylko dla profili Ethernet lub Infiniband. Wspiera modyfikatory i dzikie karty, które zostały opisane dla ustawień dopasowania.

zone

Opcja zone ustawia strefę firewalld dla interfejsu.

Porty do mostków, zgrupowanych lub urządzeń zespołowych nie mogą określać strefy.

ip

Konfiguracja IP wspiera następujące opcje:

  • address Ręczne adresowanie można określić za pomocą listy adresów pod ustawieniem address.

  • auto_gateway

    Jeśli włączone, domyślna trasa zostanie skonfigurowana używając domyślnej bramy. Jeśli wyłączone, domyślna trasa zostanie usunięta.

    Jeśli ta zmienna nie jest określona, rola użyje domyślnego zachowania wybranego network_provider.

    Ustawienie tej opcji na false jest równoważne z:

    • DEFROUTE = no w initscripts, lub
    • ipv4.never-default/ipv6.never-default yes w nmcli
  • dhcp4, auto6, i ipv6_disabled

    Również, ręczne adresowanie można określić poprzez ustawienie albo dhcp4, albo auto6. Klucz dhcp4 jest dla DHCPv4, a auto6 dla Stanu Adresu Bez Stanów (SLAAC). Należy pamiętać, że klucze dhcp4 i auto6 można pominąć, a domyślny klucz zależy od obecności adresów ręcznych. ipv6_disabled można ustawić, aby wyłączyć ipv6 dla połączenia.

  • dhcp4_send_hostname

    Jeśli dhcp4 jest włączone, można skonfigurować, czy prośba DHCPv4 zawiera nazwę hosta przez opcję dhcp4_send_hostname. Należy pamiętać, że dhcp4_send_hostname jest wspierane tylko przez dostawcę nm i odpowiada właściwości ipv4.dhcp-send-hostname.

  • dns

    Ręczna konfiguracja DNS może być określona za pomocą listy adresów podanych w opcji dns.

  • dns_search

    Ręczna konfiguracja DNS może być określona za pomocą listy domen do przeszukania podanych w opcji dns_search.

  • dns_options

    dns_options jest wspierane tylko dla dostawcy NetworkManager. Ręczna konfiguracja DNS poprzez listę opcji DNS może być podana w dns_options. Lista wspieranych opcji DNS dla serwerów nazw IPv4 jest opisana w man 5 resolv.conf. Obecnie lista wspieranych opcji DNS obejmuje:

    • attempts:n
    • debug
    • edns0
    • inet6
    • ip6-bytestring
    • ip6-dotint
    • ndots:n
    • no-aaaa
    • no-check-names
    • no-ip6-dotint
    • no-reload
    • no-tld-query
    • rotate
    • single-request
    • single-request-reopen
    • timeout:n
    • trust-ad
    • use-vc

    Uwaga: Ustawienie "trust-ad" jest honorowane tylko jeśli profil wnosi serwery nazw do resolv.conf, a jeśli wszystkie wnosiące profile mają włączone "trust-ad". Gdy używasz wtyczki DNS do buforowania (dnsmasq lub systemd-resolved w NetworkManager.conf) wtedy "edns0" i "trust-ad" są automatycznie dodawane.

  • dns_priority

    Priorytet serwerów DNS. Relatywny priorytet dla serwerów DNS określonych przez to ustawienie. Domyślną wartością jest 0, niższa wartość liczby ma wyższy priorytet. Ważna wartość dns_priority mieści się w zakresie od -2147483648 do 2147483647. Ujemne wartości mają szczególny efekt wykluczający inne konfiguracje z wyższą wartością priorytetu numerycznego; więc w obecności przynajmniej jednego ujemnego priorytetu będą używane tylko serwery DNS z połączeń z najniższą wartością priorytetu.

  • gateway4 i gateway6

    Domyślna brama dla pakietów IPv4 (gateway4) lub IPv6 (gateway6).

  • ipv4_ignore_auto_dns i ipv6_ignore_auto_dns

    Jeśli włączone, automatycznie skonfigurowane serwery nazw oraz domeny wyszukiwania (poprzez DHCPv4, DHCPv6, modem itp.) dla IPv4 lub IPv6 są ignorowane, używane są tylko serwery nazw oraz domeny wyszukiwania określone w właściwościach dns oraz dns_search. Ustawienia są rozróżniane przez rodziny adresów. Zmienne nie są wspierane przez dostawcę initscripts.

    Jeżeli zmienne nie są określone, rola użyje domyślnego zachowania dostawcy nm.

  • route_metric4 i route_metric6

    Dla NetworkManager, route_metric4 i route_metric6 odpowiadają właściwości ipv4.route-metric oraz ipv6.route-metric, odpowiednio. Jeśli ustawione, określa metrykę trasy dla tras przyznanych przez DHCP i dla domyślnej trasy, a zatem priorytet dla wielu interfejsów. Dla initscripts, route_metric4 ustawia metrykę dla domyślnej trasy, a route_metric6 nie jest wspierany.

  • route

    Konfiguracja statycznej trasy może być określona za pomocą listy tras podanej w opcji route. Domyślną wartością jest pusta lista. Każda trasa jest słownikiem z następującymi wpisami: gateway, metric, network, prefix, src, table oraz type. network i prefix określają docelową sieć. src określa adres źródłowy dla trasy. table wspiera zarówno numeryczną, jak i nazwane tabelę. Aby określić nazwaną tabelę, użytkownicy muszą upewnić się, że ta nazwana tabela jest poprawnie zdefiniowana w /etc/iproute2/rt_tables lub /etc/iproute2/rt_tables.d/*.conf. Opcjonalny klucz type wspiera wartości blackhole, prohibit, oraz unreachable. Zobacz man 8 ip-route dla ich definicji. Trasy z tymi typami nie wspierają bramy. Nie określając typu, trasa uznawana jest za trasę unicast. Należy pamiętać, że notacja CIDR (Classless Inter-Domain Routing) lub notacja maski sieci nie są obsługiwane dla klucza network.

  • routing_rule

    Oparte na polityce reguły trasowania mogą być określone za pomocą listy reguł podanej w opcji routing_rule, które pozwalają na kierowanie pakietów na podstawie innych pól pakietów oprócz adresu docelowego. Domyślną wartością jest pusta lista. Każda reguła jest słownikiem z następującymi wpisami:

    • priority - Priorytet reguły. Ważny priorytet waha się od 0 do 4294967295. Wyższa liczba oznacza niższy priorytet.
    • action - Akcja reguły. Możliwe wartości to to-table (domyślnie), blackhole, prohibit, unreachable.
    • dport- Zakres portu docelowego (np. 1000 - 2000). Ważna wartość dport dla obu zakresów zaczynających się i kończących waha się od 0 do 65534. A początek nie może być większy niż koniec.
    • family - Rodzina IP reguły. Możliwe wartości to ipv4 i ipv6.
    • from - Adres źródłowy pakietu do dopasowania (np. 192.168.100.58/24).
    • fwmark - Wartość fwmark pakietu do dopasowania.
    • fwmask - Wartość fwmask pakietu do dopasowania.
    • iif - Wybierz nazwę interfejsu przychodzącego do dopasowania.
    • invert - Odwróć wybrane dopasowanie reguły. Możliwe wartości to wartości boolowskie true i false (domyślnie). Jeśli wartość to true, to jest to równoważne dla dopasowania każdego pakietu, który nie spełnia wybranego dopasowania reguły.
    • ipproto - Wybierz wartość protokołu IP do dopasowania, ważna wartość waha się od 1 do 255.
    • oif - Wybierz nazwę interfejsu wychodzącego do dopasowania.
    • sport - Zakres portu źródłowego (np. 1000 - 2000). Ważna wartość sport dla obu zakresów zaczynających się i kończących waha się od 0 do 65534. I początek nie może być większy niż koniec.
    • suppress_prefixlength - Odrzuć decyzje trasowania, które mają długość prefiksu określoną lub mniejszą.
    • table - Tabela trasowania, której należy szukać w akcji to-table. table wspiera zarówno numeryczną tabelę, jak i nazwaną tabelę. Aby określić nazwaną tabelę, użytkownicy muszą upewnić się, że nazwana tabela jest odpowiednio zdefiniowana w /etc/iproute2/rt_tables lub /etc/iproute2/rt_tables.d/*.conf.
    • to - Adres docelowy dopasowywanego pakietu (np. 192.168.100.58/24).
    • tos - Wybierz wartość tos do dopasowania.
    • uid - Zakres uid do dopasowania (np. 1000 - 2000). Ważna wartość uid dla obu zakresów zaczynających się i kończących waha się od 0 do 4294967295. I początek nie może być większy niż koniec.
  • route_append_only

    Opcja route_append_only pozwala na dodawanie nowych tras do istniejących tras na systemie.

    Jeśli opcja route_append_only jest ustawiona na true, określone trasy są dodawane do istniejących tras. Jeśli route_append_only jest ustawione na false (domyślnie), obecne trasy są zastępowane. Należy pamiętać, że ustawienie route_append_only na true bez ustawiania route ma efekt zachowania obecnych tras statycznych.

  • rule_append_only

    Opcja boolowska rule_append_only pozwala na zachowanie obecnych reguł trasowania.

Uwaga: Gdy route_append_only lub rule_append_only nie są określone, rola sieciowa usuwa obecne trasy lub reguły trasowania.

Uwaga: Porty do mostków, zgrupowanych lub urządzeń zespołowych nie mogą określać ustawień ip.

ethtool

Ustawienia ethtool pozwalają włączyć lub wyłączyć różne funkcje. Nazwy odpowiadają nazwom używanym przez narzędzie ethtool. W zależności od rzeczywistego jądra i urządzenia, zmiana niektórych opcji może nie być wspierana.

Konfiguracja ethtool wspiera następujące opcje:

  • ring

    Zmienia parametry rx/tx ring dla określonego urządzenia sieciowego. Lista wspieranych parametrów ring jest następująca:

    • rx - Zmienia liczbę wpisów ring dla Rx.
    • rx-jumbo - Zmienia liczbę wpisów ring dla Jumbo Rx.
    • rx-mini - Zmienia liczbę wpisów ring dla Mini Rx.
    • tx - Zmienia liczbę wpisów ring dla Tx.
  ethtool:
    features:
      esp_hw_offload: true|false  # opcjonalnie
      esp_tx_csum_hw_offload: true|false  # opcjonalnie
      fcoe_mtu: true|false  # opcjonalnie
      gro: true|false  # opcjonalnie
      gso: true|false  # opcjonalnie
      highdma: true|false  # opcjonalnie
      hw_tc_offload: true|false  # opcjonalnie
      l2_fwd_offload: true|false  # opcjonalnie
      loopback: true|false  # opcjonalnie
      lro: true|false  # opcjonalnie
      ntuple: true|false  # opcjonalnie
      rx: true|false  # opcjonalnie
      rx_all: true|false  # opcjonalnie
      rx_fcs: true|false  # opcjonalnie
      rx_gro_hw: true|false  # opcjonalnie
      rx_udp_tunnel_port_offload: true|false  # opcjonalnie
      rx_vlan_filter: true|false  # opcjonalnie
      rx_vlan_stag_filter: true|false  # opcjonalnie
      rx_vlan_stag_hw_parse: true|false  # opcjonalnie
      rxhash: true|false  # opcjonalnie
      rxvlan: true|false  # opcjonalnie
      sg: true|false  # opcjonalnie
      tls_hw_record: true|false  # opcjonalnie
      tls_hw_tx_offload: true|false  # opcjonalnie
      tso: true|false  # opcjonalnie
      tx: true|false  # opcjonalnie
      tx_checksum_fcoe_crc: true|false  # opcjonalnie
      tx_checksum_ip_generic: true|false  # opcjonalnie
      tx_checksum_ipv4: true|false  # opcjonalnie
      tx_checksum_ipv6: true|false  # opcjonalnie
      tx_checksum_sctp: true|false  # opcjonalnie
      tx_esp_segmentation: true|false  # opcjonalnie
      tx_fcoe_segmentation: true|false  # opcjonalnie
      tx_gre_csum_segmentation: true|false  # opcjonalnie
      tx_gre_segmentation: true|false  # opcjonalnie
      tx_gso_partial: true|false  # opcjonalnie
      tx_gso_robust: true|false  # opcjonalnie
      tx_ipxip4_segmentation: true|false  # opcjonalnie
      tx_ipxip6_segmentation: true|false  # opcjonalnie
      tx_nocache_copy: true|false  # opcjonalnie
      tx_scatter_gather: true|false  # opcjonalnie
      tx_scatter_gather_fraglist: true|false  # opcjonalnie
      tx_sctp_segmentation: true|false  # opcjonalnie
      tx_tcp_ecn_segmentation: true|false  # opcjonalnie
      tx_tcp_mangleid_segmentation: true|false  # opcjonalnie
      tx_tcp_segmentation: true|false  # opcjonalnie
      tx_tcp6_segmentation: true|false  # opcjonalnie
      tx_udp_segmentation: true|false  # opcjonalnie
      tx_udp_tnl_csum_segmentation: true|false  # opcjonalnie
      tx_udp_tnl_segmentation: true|false  # opcjonalnie
      tx_vlan_stag_hw_insert: true|false  # opcjonalnie
      txvlan: true|false  # opcjonalnie
    coalesce:
      adaptive_rx: true|false  # opcjonalnie
      adaptive_tx: true|false  # opcjonalnie
      pkt_rate_high: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      pkt_rate_low: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_frames: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_frames_high: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_frames_irq: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_frames_low: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_usecs: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_usecs_high: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_usecs_irq: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_usecs_low: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      sample_interval: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      stats_block_usecs: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_frames: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_frames_high: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_frames_irq: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_frames_low: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_usecs: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_usecs_high: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_usecs_irq: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx_usecs_low: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
    ring:
      rx: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_jumbo: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      rx_mini: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff
      tx: 0  # opcjonalnie minimalna=0 maksymalna=0xffffffff

ieee802_1x

Konfiguracja uwierzytelnienia 802.1x dla interfejsu.

Obecnie NetworkManager jest jedynym wspieranym dostawcą i EAP-TLS jest jedyną akceptowaną metodą EAP.

Certyfikaty SSL i klucze muszą być wdrożone na hoście przed uruchomieniem roli.

  • eap

    Dozwolona metoda EAP, która może być używana podczas uwierzytelniania do sieci za pomocą 802.1x.

    Obecnie tls jest domyślną i jedynie akceptowaną wartością.

  • identity (wymagana)

    Ciąg identyfikacyjny dla metod uwierzytelniania EAP.

  • private_key (wymagana)

    Absolutna ścieżka do klucza prywatnego kodowanego PEM lub PKCS#12 klienta używanego do uwierzytelnienia 802.1x.

  • private_key_password

    Hasło do klucza prywatnego określonego w private_key.

  • private_key_password_flags

    Lista flag, które konfigurują sposób zarządzania hasłem klucza prywatnego.

    Można określić wiele flag.

    Ważne flagi to:

    • none
    • agent-owned
    • not-saved
    • not-required

    Zobacz dokumentację NetworkManager o typach "Flag sekretów" dla dodatkowych szczegółów (man 5 nm-settings).

  • client_cert (wymagana)

    Absolutna ścieżka do certyfikatu PEM kodowanego klienta używanego do uwierzytelnienia 802.1x.

  • ca_cert

    Absolutna ścieżka do certyfikatu uwierzytelniającego PEM, który służy do weryfikacji serwera EAP.

  • ca_path

    Absolutna ścieżka do katalogu zawierającego dodatkowe certyfikaty CA kodowane PEM używane do weryfikacji serwera EAP. Może być używane zamiast lub dodatkowo do ca_cert. Nie może być używane, jeśli enabled system_ca_certs.

  • system_ca_certs

    Jeśli ustawione na true, NetworkManager użyje zaufanych certyfikatów CA systemu, aby zweryfikować serwer EAP.

  • domain_suffix_match

    Jeśli ustawione, NetworkManager zapewni, że nazwa domeny certyfikatu serwera EAP pasuje do tego ciągu.

bond

Ustawienie bond konfiguruje opcje zgrupowanych interfejsów (typ bond). Zobacz dokumentację jądra dla bondingu lub dokumentację nmcli twojej dystrybucji dla ważnych wartości. Wspiera następujące opcje:

  • mode

    tryb łączenia. Możliwe wartości to balance-rr (domyślnie), active-backup, balance-xor, broadcast, 802.3ad, balance-tlb, lub balance-alb.

  • ad_actor_sys_prio

    W 802.3ad trybie łączenia, określa to priorytet systemu. Ważny zakres to 1 - 65535.

  • ad_actor_system

    W 802.3ad trybie łączenia, określa to adres MAC systemu dla aktora w wymianach protokołu (LACPDUs).

  • ad_select

    Ta opcja określa logikę wyboru agregacji 802.3ad, która ma być używana. Możliwe wartości to: stable, bandwidth, count.

  • ad_user_port_key

    W 802.3ad trybie łączenia, ta opcja definiuje górne 10 bitów klucza portu. Dozwolony zakres to 0 - 1023.

  • all_ports_active

    all_slaves_active w kernelu i NetworkManagerze. Boolowska wartość false odrzuca duplikowane ramki (odebrane na nieaktywnych portach) a boolowska wartość true przekazuje duplikowane ramki.

  • arp_all_targets

    Ta opcja określa ilość arp_ip_targets, która musi być osiągalna, aby ARP monitor uznał port za aktywny. Możliwe wartości to any lub all.

  • arp_interval

    Ta opcja określa częstotliwość monitorowania ARP w milisekundach. Wartość 0 wyłącza monitorowanie ARP.

  • arp_validate

    W każdym trybie, który wspiera monitorowanie ARP, ta opcja określa, czy pakiety ARP i odpowiedzi powinny być weryfikowane. Lub dla celów monitorowania łącza, czy ruch nie-ARP powinien być filtrowany (ignorowany). Możliwe wartości to: none, active, backup, all, filter, filter_active, filter_backup.

  • arp_ip_target

    Gdy arp_interval jest włączone, opcja ta określa adresy IP do użycia jako monitorowanie ARP.

  • downdelay

    Czas oczekiwania (w milisekundach) przed wyłączeniem portu po wykryciu awarii łącza.

  • fail_over_mac

    Ta opcja określa politykę wyboru adresu MAC dla interfejsu bond w trybie active-backup. Możliwe wartości to: none (domyślnie), active, follow.

  • lacp_rate

    W 802.3ad trybie łączenia, ta opcja definiuje szybkość, według której żądamy od partnera łącza przesyłania pakietów LACPDU. Możliwe wartości to: slow, fast.

  • lp_interval

    Ta opcja określa liczbę sekund między instancjami, podczas których sterownik łączenia wysyła pakiety uczące do każdego portu.

  • miimon

    Ustala interwał monitorowania linków MII (w milisekundach).

  • min_links

    Ta opcja określa minimalną liczbę linków, które muszą być aktywne przed stwierdzeniem nośnika.

  • num_grat_arp

    Ta opcja określa, ile notyfikacji peerowych (gratuitous ARPs) będzie wydawanych po zdarzeniu przełączenia. Dozwolony zakres dla wartości to 0 - 255.

  • packets_per_port

    W balance-rr trybie łączenia, ta opcja określa liczbę pakietów dozwolonych na porcie w transmisji sieciowej przed przejściem do następnego. Dozwolony zakres dla wartości to 0 - 65535.

  • peer_notif_delay

    Ta opcja określa opóźnienie (w milisekundach) między każdą powiadomieniem peerowym, gdy są one wydawane po zdarzeniu przełączenia.

  • primary

    Ta opcja definiuje główne urządzenie.

  • primary_reselect

    Ta opcja określa politykę ponownego wyboru dla głównego portu. Możliwe wartości to: always, better, failure.

  • resend_igmp

    Ta opcja określa liczbę raportów członkostwa IGMP, które będą wydawane po zdarzeniu przełączenia. Dozwolony zakres dla wartości to 0 - 255.

  • tlb_dynamic_lb

    Ta opcja określa, czy dynamiczne przemieszanie przepływów jest włączone w trybie tlb. Boolowska wartość true włącza przemieszanie przepływu, podczas gdy boolowska wartość false je wyłącza.

  • updelay

    Ta opcja określa czas (w milisekundach), aby poczekać przed włączeniem portu po wykryciu odzyskania łącza.

  • use_carrier

    Ta opcja określa, czy miimon powinien używać MII lub ETHTOOL ioctlów w porównaniu do netif_carrier_ok() do określenia statusu łącza. Boolowska wartość true włącza użycie netif_carrier_ok(), podczas gdy boolowska wartość false używa MII lub ETHTOOL ioctlów zamiast tego.

  • xmit_hash_policy

    Ta opcja określa politykę haszowania przesyłu wykorzystywaną do wyboru portu, a możliwe wartości to: layer2, layer3+4, layer2+3, encap2+3, encap3+4, vlan+srcmac.

Przykłady opcji

Ustawienie tego samego profilu połączenia wiele razy:

network_connections:
  - name: Wired0
    type: ethernet
    interface_name: eth0
    ip:
      dhcp4: true

  - name: Wired0
    state: up

Aktywowanie istniejącego profilu połączenia:

network_connections:
  - name: eth0
    state: up

Dezaktywowanie istniejącego profilu połączenia:

network_connections:
  - name: eth0
    state: down

Tworzenie trwałego profilu połączenia:

network_connections:
  - name: eth0
    #persistent_state: present  # domyślnie
    type: ethernet
    autoconnect: true
    mac: "00:00:5e:00:53:5d"
    ip:
      dhcp4: true

Określenie profilu łączącego dla urządzenia ethernet z ID_PATH:

network_connections:
  - name: eth0
    type: ethernet
    # Dla urządzeń PCI, ścieżka ma formę "pci-$domain:$bus:$device.$function"
    # Profil będzie pasował tylko do interfejsu na adresie PCI pci-0000:00:03.0
    match:
      path:
        - pci-0000:00:03.0
    ip:
      address:
        - 192.0.2.3/24
  - name: eth0
    type: ethernet
    # Określenie profilu łączącego dla urządzenia ethernet z identyfikatorem PCI
    # pci-0000:00:01.0 lub pci-0000:00:03.0
    match:
      path:
        - pci-0000:00:0[1-3].0
        - &!pci-0000:00:02.0
    ip:
      address:
        - 192.0.2.3/24

Usunięcie profilu połączenia o nazwie eth0 (jeśli istnieje):

network_connections:
  - name: eth0
    persistent_state: absent

Konfiguracja ustawień linku Ethernet:

network_connections:
  - name: eth0
    type: ethernet

    ethernet:
      autoneg: false
      speed: 1000
      duplex: full

Tworzenie połączenia mostkowego:

network_connections:
  - name: br0
    type: bridge
    #interface_name: br0  # domyślnie nazywa się połączenie

Konfiguracja połączenia mostkowego:

network_connections:
  - name: internal-br0
    interface_name: br0
    type: bridge
    ip:
      dhcp4: false
      auto6: false

Ustawić controller i port_type:

network_connections:
  - name: br0-bond0
    type: bond
    interface_name: bond0
    controller: internal-br0
    port_type: bridge

  - name: br0-bond0-eth1
    type: ethernet
    interface_name: eth1
    controller: br0-bond0
    port_type: bond

Konfiguracja VLAN:

network_connections:
  - name: eth1-profile
    autoconnect: false
    type: ethernet
    interface_name: eth1
    ip:
      dhcp4: false
      auto6: false

  - name: eth1.6
    autoconnect: false
    type: vlan
    parent: eth1-profile
    vlan:
      id: 6
    ip:
      address:
        - 192.0.2.5/24
      auto6: false

Konfiguracja MACVLAN:

network_connections:
  - name: eth0-profile
    type: ethernet
    interface_name: eth0
    ip:
      address:
        - 192.168.0.1/24

  - name: veth0
    type: macvlan
    parent: eth0-profile
    macvlan:
      mode: bridge
      promiscuous: true
      tap: false
    ip:
      address:
        - 192.168.1.1/24

Konfiguracja połączenia bezprzewodowego:

network_connections:
  - name: wlan0
    type: wireless
    wireless:
      ssid: "Moja sieć WPA2-PSK"
      key_mgmt: "wpa-psk"
      # zaleca się szyfrowanie hasła bezprzewodowego
      # zobacz https://docs.ansible.com/ansible/latest/user_guide/vault.html
      password: "p@55w0rD"

Ustawienie konfiguracji IP:

network_connections:
  - name: eth0
    type: ethernet
    ip:
      route_metric4: 100
      dhcp4: false
      #dhcp4_send_hostname: false
      gateway4: 192.0.2.1

      dns:
        - 192.0.2.2
        - 198.51.100.5
      dns_search:
        - example.com
        - subdomain.example.com
      dns_options:
        - rotate
        - timeout:1

      route_metric6: -1
      auto6: false
      gateway6: 2001:db8::1

      address:
        - 192.0.2.3/24
        - 198.51.100.3/26
        - 2001:db8::80/7

      route:
        - network: 198.51.100.128
          prefix: 26
          gateway: 198.51.100.1
          metric: 2
        - network: 198.51.100.64
          prefix: 26
          gateway: 198.51.100.6
          metric: 4
      route_append_only: false
      rule_append_only: true

Konfiguracja 802.1x:

network_connections:
  - name: eth0
    type: ethernet
    ieee802_1x:
      identity: myhost
      eap: tls
      private_key: /etc/pki/tls/client.key
      # zaleca się szyfrowanie hasła klucza prywatnego
      # zobacz https://docs.ansible.com/ansible/latest/user_guide/vault.html
      private_key_password: "p@55w0rD"
      client_cert: /etc/pki/tls/client.pem
      ca_cert: /etc/pki/tls/cacert.pem
      domain_suffix_match: example.com

Konfiguracja Enhanced Open(OWE):

network_connections:
  - name: wlan0
    type: wireless
    wireless:
      ssid: "WIFI_SSID"
      key_mgmt: "owe"

Przykłady stosowania konfiguracji stanu sieci

Konfiguracja adresów IP:

network_state:
  interfaces:
    - name: ethtest0
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
          - ip: 192.168.122.250
            prefix-length: 24
        dhcp: false
      ipv6:
        enabled: true
        address:
          - ip: 2001:db8::1:1
            prefix-length: 64
        autoconf: false
        dhcp: false
    - name: ethtest1
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
          - ip: 192.168.100.192
            prefix-length: 24
        auto-dns: false
        dhcp: false
      ipv6:
        enabled: true
        address:
          - ip: 2001:db8::2:1
            prefix-length: 64
        autoconf: false
        dhcp: false

Konfiguracja trasy:

network_state:
  interfaces:
    - name: eth1
      type: ethernet
      state: up
      ipv4:
        enabled: true
        address:
          - ip: 192.0.2.251
            prefix-length: 24
        dhcp: false

  routes:
    config:
      - destination: 198.51.100.0/24
        metric: 150
        next-hop-address: 192.0.2.251
        next-hop-interface: eth1
        table-id: 254

Konfiguracja wyszukiwania DNS oraz serwera:

network_state:
  dns-resolver:
    config:
      search:
        - example.com
        - example.org
      server:
        - 2001:4860:4860::8888
        - 8.8.8.8

Nieprawidłowa i zła konfiguracja

Rola siec odrzuca nieprawidłowe konfiguracje. Zaleca się, aby najpierw przetestować rolę za pomocą --check. Nie ma ochrony przed złą (ale prawidłową) konfiguracją. Dokładnie sprawdź swoją konfigurację przed jej zastosowaniem.

wewnętrzny moduł network_connections

Wewnętrzny moduł network_connections jest przeznaczony do użytku wewnętrznego lub testowania integracji i nie jest przeznaczony do bezpośredniego zewnętrznego dostępu lub użycia. Kiedy ten wewnętrzny moduł jest wykorzystywany w testach integracyjnych, zadania, które są określone w tasks/main.yaml, są pomijane, co przyspiesza wykonanie testu.

Kompatybilność

Rola siec obsługuje tę samą schemat konfiguracyjny dla obu dostawców (nm i initscripts). Oznacza to, że możesz korzystać z tego samego playbooka z NetworkManagerem i z initscripts. Należy jednak pamiętać, że nie każda opcja jest obsługiwana dokładnie tak samo przez każdego dostawcę. Najpierw przetestuj uruchomienie z --check.

Nie jest wspierane tworzenie konfiguracji dla jednego dostawcy i oczekiwanie, że inny dostawca je obsłuży. Na przykład, tworzenie profili z dostawcą initscripts, a później włączenie NetworkManagera nie gwarantuje, że będzie działać automatycznie. Możliwe, że będziesz musiał dostosować konfigurację, aby mogła być używana przez innego dostawcę.

Na przykład, konfigurowanie hosta RHEL6 z initscripts i aktualizacja do RHEL7 podczas kontynuowania korzystania z initscripts w RHEL7 to akceptowalny scenariusz. To czego nie można zagwarantować, to aktualizacja do RHEL7, wyłączenie initscripts i oczekiwanie, że NetworkManager automatycznie przejmie konfigurację.

W zależności od konfiguracji NetworkManagera, połączenia mogą być przechowywane jako pliki ifcfg także, ale nie ma gwarancji, że zwykłe initscripts będą mogły obsługiwać te pliki ifcfg po wyłączeniu usługi NetworkManager.

Rola siec wspiera także konfigurowanie w pewnych dystrybucjach Ansible, które rola traktuje jak RHEL, takich jak AlmaLinux, CentOS, OracleLinux czy Rocky.

Ograniczenia

Ponieważ Ansible działa zwykle przez sieć, na przykład przez SSH, istnieje kilka ograniczeń, które należy wziąć pod uwagę:

Rola siec nie obsługuje bootstrapowania konfiguracji sieciowej. Jedną z opcji może być ansible-pull. Inną opcją może być wstępna automatyczna konfiguracja hosta podczas instalacji (z bazą ISO, kickstart itp.), aby host był połączony z management LAN lub VLAN. Zależy to głównie od twojego środowiska.

Dla dostawcy initscripts, wdrożenie profilu oznacza jedynie utworzenie plików ifcfg. Nic nie dzieje się automatycznie, aż polecenie ifup lub ifdown zostanie wydane przez rolę przez stany up lub down -- chyba, że są inne komponenty, które polegają na plikach ifcfg i reagują na zmiany.

Dostawca initscripts wymaga, aby różne profile były w odpowiedniej kolejności, gdy opierają się na sobie. Na przykład kontroler urządzenia zgrupowanego musi być określony przed urządzeniami portowymi.

Gdy profil jest usuwany dla NetworkManager, łączenie również spada i może usuwać wirtualne interfejsy. W przypadku dostawcy initscripts

Zainstaluj
ansible-galaxy install linux-system-roles.network
Licencja
bsd-3-clause
Pobrania
263.3k
Właściciel