linux-system-roles.network

linux-system-roles/réseau

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 Coverage Status Code Style: black Language grade: Python

Présentation

Le rôle réseau permet aux utilisateurs de configurer le réseau sur les machines cibles. Ce rôle peut être utilisé pour configurer :

  • Interfaces Ethernet
  • Interfaces de pont
  • Interfaces agrégées
  • Interfaces VLAN
  • Interfaces MacVLAN
  • Interfaces Infiniband
  • Interfaces sans fil (WiFi)
  • Configuration IP
  • Authentification 802.1x

Introduction

Le rôle réseau prend en charge deux fournisseurs : nm et initscripts. nm est utilisé par défaut depuis RHEL7 et initscripts dans RHEL6. Le fournisseur initscripts nécessite le paquet network-scripts, qui est déprécié dans RHEL8 et supprimé dans RHEL9. Ces fournisseurs peuvent être configurés par hôte via la variable network_provider. En l'absence de configuration explicite, il est détecté automatiquement selon la distribution. Cependant, notez que ni nm ni initscripts ne sont liés à une distribution particulière. Le rôle réseau fonctionne partout où l'API requise est disponible. Cela signifie que nm nécessite au moins la version 1.2 de l'API de NetworkManager, et certains paramètres pris en charge par le fournisseur nm nécessitent une version plus élevée de l'API de NetworkManager.

Le rôle réseau prend en charge deux modules : network_connections et network_state.

Pour chaque hôte, une liste de profils de réseau peut être configurée via la variable network_connections.

  • Pour initscripts, les profils correspondent aux fichiers ifcfg dans le répertoire /etc/sysconfig/network-scripts/ et ces fichiers ifcfg contiennent la ligne NM_CONTROLLED=no.

  • Pour nm, les profils correspondent aux profils de connexion gérés par NetworkManager et seuls les profils au format fichier clé NetworkManager sont pris en charge dans /etc/NetworkManager/system-connections/ depuis RHEL9.

Pour chaque hôte, la configuration de l'état du réseau peut également être appliquée à l'interface directement via la variable network_state, et seul le fournisseur nm prend en charge l'utilisation de la variable network_state.

Notez que le rôle réseau opère à la fois sur les profils de connexion des appareils (via la variable network_connections) et sur les appareils directement (via la variable network_state). Lors de la configuration des profils de connexion via le rôle, il utilise par défaut le nom du profil comme nom d'interface. Il est également possible de créer des profils génériques, par exemple en créant un profil avec une certaine IP sans activer le profil. Pour appliquer la configuration à l'interface réseau réelle, utilisez les commandes nmcli sur le système ciblé.

Avertissement : Le rôle réseau met à jour ou crée tous les profils de connexion sur le système cible tels que spécifiés dans la variable network_connections. Par conséquent, le rôle réseau supprime les options des profils spécifiés si les options ne sont présentes que sur le système mais pas dans la variable network_connections. Les exceptions sont mentionnées ci-dessous. Cependant, une configuration réseau partielle peut être réalisée en spécifiant la configuration de l'état du réseau dans la variable network_state.

Exigences

Voir ci-dessous

Exigences en matière de collections

Le rôle nécessite des collections externes uniquement pour la gestion des nœuds rpm-ostree. Veuillez exécuter la commande suivante pour les installer si vous devez gérer des nœuds rpm-ostree :

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

Variables

Le rôle réseau est configuré via des variables commençant par le préfixe network_. Liste des variables :

  • network_provider - La variable network_provider permet de définir un fournisseur spécifique (nm ou initscripts). En la définissant à {{ network_provider_os_default }}, le fournisseur est défini en fonction du système d'exploitation. Cela est généralement nm sauf pour RHEL 6 ou CentOS 6. Changer le fournisseur pour un profil existant n'est pas pris en charge. Pour changer de fournisseur, il est recommandé de d’abord supprimer les profils avec l’ancien fournisseur, puis de créer de nouveaux profils avec le nouveau fournisseur.
  • network_connections - Les profils de connexion sont configurés en tant que network_connections, qui est une liste de dictionnaires contenant des options spécifiques.
  • network_allow_restart - Il est par défaut false. Pour charger les plugins NetworkManager après installation, NetworkManager doit être redémarré. Par exemple, si une connexion sans fil est configurée et que NetworkManager-wifi n'est pas installé, NetworkManager doit être redémarré avant que la connexion soit configurée. Le redémarrage peut entraîner une perte de connectivité et donc le rôle ne le permet pas sans consentement explicite. L'utilisateur peut y consentir en définissant network_allow_restart à true. Définir network_allow_restart à false empêchera le rôle de redémarrer NetworkManager.
  • network_state - Les paramètres d'état du réseau peuvent être configurés sur l'hôte géré, et le format et la syntaxe de la configuration doivent être conformes aux exemples d'état nmstate (YAML).

Exemples de variables

Définir les variables

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

Options network_connections

La variable network_connections est une liste de dictionnaires qui comprend les options suivantes. Liste des options :

name (habituellement requis)

L'option name identifie le profil de connexion à configurer. Ce n'est pas le nom de l'interface réseau à laquelle le profil s'applique, bien que nous puissions associer le profil à une interface et leur donner le même nom. Notez que vous pouvez avoir plusieurs profils pour le même appareil, mais un seul profil peut être actif sur l'appareil à la fois. Pour NetworkManager, une connexion ne peut être active que sur un appareil chaque fois.

  • Pour NetworkManager, l'option name correspond à l'option de propriété connection.id. Bien que NetworkManager prenne en charge plusieurs connexions avec le même connection.id, le rôle réseau ne peut pas gérer un name en double. Spécifier un name plusieurs fois fait référence au même profil de connexion.

  • Pour initscripts, l'option name détermine le nom du fichier ifcfg /etc/sysconfig/network-scripts/ifcfg-$NAME. Notez que le name ne spécifie pas le DEVICE mais un nom de fichier. En conséquence, '/' n'est pas un caractère valide pour le name.

Vous pouvez également utiliser le même profil de connexion plusieurs fois. Il est donc possible de créer un profil et de l'activer séparément.

Remarque : Le rôle réseau ne modifiera que les profils qui sont spécifiés dans la variable network_connections. Par conséquent, si seuls les ports d'un profil sont spécifiés pour être supprimés du contrôleur et que le contrôleur n'est pas spécifié, alors le profil du contrôleur restera sur le système. Cela peut se produire, par exemple, si tous les ports sont supprimés d'une interface de liaison.

Remarque : Pour supprimer tous les profils sur un système qui ne sont pas spécifiés dans la variable network_connections, ajoutez une entrée sans nom et persistent_state: absent. Cela correspondra et supprimera tous les profils restants :

network_connections:
  - name: eth0  # profils à conserver/configurer sur le système
    [...]

  - persistent_state: absent  # supprimer tous les autres profils

state

L'option state identifie quelle est l'état d'exécution de chaque profil de connexion. L'option state (optionnelle) peut être définie sur les valeurs suivantes :

  • up - le profil de connexion est activé
  • down - le profil de connexion est désactivé

state: up

  • Pour NetworkManager, cela correspond à nmcli connection id {{name}} up.

  • Pour initscripts, cela correspond à ifup {{name}}.

Lorsque l'option state est définie sur up, vous pouvez également spécifier l'option wait (optionnelle) :

  • wait: 0 - initie uniquement l'activation, mais n'attend pas que l'appareil soit complètement connecté. La connexion sera complétée en arrière-plan, par exemple après qu'un bail DHCP a été reçu.
  • wait: <seconds> est un délai qui vous permet de décider combien de temps vous donnez à l'appareil pour s'activer. La valeur par défaut utilise un délai approprié. Notez que l'option wait est uniquement prise en charge par NetworkManager.

Notez que state: up réactive toujours le profil et peut éventuellement modifier la configuration réseau, même si le profil était déjà actif auparavant. En conséquence, state: up change toujours le système.

state: down

  • Pour NetworkManager, cela correspond à nmcli connection id {{name}} down.

  • Pour initscripts, cela correspond à l’appel ifdown {{name}}.

Vous pouvez désactiver un profil de connexion, même s'il n'est actuellement pas actif. En conséquence, state: down change toujours le système.

Notez que si l'option state n'est pas définie, l'état d'exécution du profil de connexion ne sera pas modifié.

persistent_state

L'option persistent_state identifie si un profil de connexion est permanent (sauvegardé sur le disque). L'option persistent_state peut être définie sur les valeurs suivantes :

persistent_state: present (par défaut)

Notez que si persistent_state est present et que le profil de connexion contient l’option type, le profil sera créé ou mis à jour. Si le profil de connexion est incomplet (pas d’option type), le comportement est indéfini. De plus, la valeur present ne donne pas directement lieu à une modification de la configuration réseau. Si l’option state n’est pas définie sur up, le profil est uniquement créé ou modifié, et non pas activé.

Pour NetworkManager, le nouveau profil de connexion est créé avec l’option autoconnect activée par défaut. Par conséquent, NetworkManager peut activer le nouveau profil sur un appareil actuellement déconnecté. (rh#1401515).

persistent_state: absent

La valeur absent garantit que le profil n'est pas présent sur l’hôte cible. Si un profil avec le nom donné existe, il sera supprimé. Dans ce cas :

  • NetworkManager supprime tous les profils de connexion avec le connection.id correspondant. Supprimer un profil ne modifie généralement pas la configuration réseau actuelle, sauf si le profil était actuellement activé sur un appareil. Supprimer le profil de connexion actif à l’heure actuelle déconnecte l’appareil. Cela rend l’appareil eligible pour se reconnecter à une autre connexion (pour plus de détails, voir rh#1401515).

  • initscripts supprime le fichier ifcfg dans la plupart des cas sans impact sur l’état d'exécution du système, sauf si certains composants surveillent le répertoire sysconfig.

Remarque : Pour les profils qui ne contiennent qu'une option state, le rôle réseau active ou désactive uniquement la connexion sans en changer la configuration.

type

L'option type peut être définie sur les valeurs suivantes :

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

type: ethernet

Si le type est ethernet, alors un dictionnaire supplémentaire ethernet peut être présent avec les éléments (options) suivants : autoneg, speed et duplex, qui correspondent aux paramètres de l’utilitaire ethtool du même nom.

  • autoneg: true (par défaut) ou false [si l'auto-négociation est activée ou désactivée]
  • speed: vitesse en Mbit/s
  • duplex: half ou full

Notez que les paramètres de liaison speed et duplex sont requis lorsque l'auto-négociation est désactivée (autoneg: false).

type: bridge, type: bond, type: team

Les types d'appareils bridge, bond et team fonctionnent de manière similaire. Notez que team n'est pas pris en charge dans les noyaux RHEL6 et a été déprécié dans RHEL 9.

Pour les ports, les propriétés port_type et controller doivent être définies. Notez que les ports ne doivent pas avoir de paramètres ip, ce qui signifie que les ports actifs n’auront pas d’adresses IP assignées.

Le controller fait référence au name d'un profil dans le playbook Ansible. Ce n'est ni un nom d'interface ni un connection-id de NetworkManager.

  • Pour NetworkManager, controller sera converti en connection.uuid du profil correspondant.

  • Pour initscripts, le contrôleur est recherché comme l’DEVICE dans le fichier ifcfg correspondant.

Comme le controller fait référence à d'autres profils du même ou d'un autre play, l'ordre de la liste connections est important. Les profils référencés par d'autres profils doivent être spécifiés en premier. De plus, --check ignore la valeur du controller et suppose qu’il sera présent lors d'une vraie exécution. Cela signifie que, en cas de présence d'un controller invalide, --check peut indiquer un succès mais l'exécution réelle échoue.

Si vous ne ramenez que le profil controller, alors les profils de port seront automatiquement désactivés. Si vous désactivez la connexion sur certains ou tous les ports, alors le profil du contrôleur reste actif.

Le type team utilise roundrobin comme configuration de runner. Aucune autre configuration n'est prise en charge pour le moment.

type: vlan

Similaire à controller, le parent fait référence au profil de connexion dans le rôle ansible. L’identifiant vlan peut être spécifié en utilisant un paramètre vlan imbriqué, la valeur valide de l’identifiant vlan varie de 0 à 4094. Voici comment spécifier l’identifiant vlan :

type: vlan
vlan:
  id: 6

type: macvlan

Similaire à controller et vlan, le parent fait référence au profil de connexion dans le rôle ansible.

type: infiniband

Pour la connexion infiniband, elle n'est actuellement prise en charge que pour le fournisseur nm, et les options suivantes sont prises en charge :

  • p_key : La P_Key infiniband à utiliser pour le périphérique. Lorsqu'elle n'est pas spécifiée, la connexion est créée sur les fabric physiques infiniband. Sinon, c'est un entier non signé de 16 bits et la connexion ipoib (IP sur Infiniband) sera créée, le bit de poids fort doit être défini s'il s'agit d'un P_Key de "pleine adhésion". Les valeurs spéciales p_key 0x0000 et 0x8000 sont invalides car le noyau ne les prend pas en charge.
  • transport_mode : Le mode opérationnel de la connexion ipoib (IP sur Infiniband). Les modes possibles sont datagram (par défaut) et connected.

Remarque : Si le p_key est spécifié, alors interface_name doit être non défini.

type: wireless

Le type wireless prend en charge l'authentification WPA-PSK (mot de passe), l'authentification WPA-EAP (802.1x), l'authentification WPA3-Personal SAE (mot de passe) et Enhanced Open (OWE).

nm (NetworkManager) est le seul fournisseur network_provider pris en charge pour ce type.

Si WPA-EAP est utilisé, les paramètres ieee802_1x doivent être définis dans l’option ieee802_1x.

Les options suivantes sont prises en charge :

  • ssid : le SSID du réseau sans fil (requis)

  • key_mgmt (requis)

    Toute clé de la liste suivante :

    • owe
    • sae
    • wpa-eap
    • wpa-psk
  • password : le mot de passe pour le réseau (requis si wpa-psk ou sae est utilisé)

type: dummy

Interface réseau fictive, nm (NetworkManager) est le seul fournisseur network_provider pris en charge pour ce type.

autoconnect

Par défaut, les profils sont créés avec autoconnect activé.

  • Pour NetworkManager, cela correspond à la propriété connection.autoconnect.

  • Pour initscripts, cela correspond à la propriété ONBOOT.

mac

L'adresse mac est optionnelle et restreint le profil à être utilisable uniquement sur des appareils avec l'adresse MAC donnée. mac n'est autorisé que pour le type ethernet ou infiniband afin de correspondre à un appareil non virtuel avec le profil. La valeur de l'adresse mac doit être spécifiée en notation hexadécimale avec des deux-points (par exemple : mac: "00:00:5e:00:53:5d"). Pour éviter que l'analyse YAML ne considère les adresses mac comme des entiers en notation sexagécimale (base 60) (voir https://yaml.org/spec/1.1/#id858600), il est recommandé de toujours mettre la valeur entre guillemets et parfois c'est nécessaire.

  • Pour NetworkManager, mac est l'adresse MAC permanente, ethernet.mac-address.

  • Pour initscripts, mac est l'adresse MAC actuellement configurée de l'appareil (HWADDR).

cloned_mac

L'adresse cloned_mac est optionnelle et permet de spécifier la stratégie pour obtenir une adresse mac par défaut ou définir votre propre mac. La valeur de l'adresse cloned_mac doit être spécifiée en notation hexadécimale comme la propriété mac. En plus de spécifier explicitement la valeur en tant qu'adresse MAC avec notation hexadécimale, les valeurs spéciales suivantes sont également prises en charge :

  • default : honorer le comportement par défaut dans NetworkManager
  • permanent : utiliser l'adresse MAC permanente de l'appareil
  • preserve : ne pas changer l'adresse MAC de l'appareil lors de l'activation
  • random : générer une valeur aléatoire à chaque connexion
  • stable : générer une adresse MAC stable et hachée

mtu

L'option mtu désigne l'unité maximale de transmission pour le périphérique du profil. La valeur maximale dépend du périphérique. Pour les périphériques virtuels, la valeur maximale de l'option mtu dépend du périphérique sous-jacent.

interface_name

Pour les types ethernet et infiniband, l'option interface_name limite le profil à l'interface donnée par son nom. Cet argument est optionnel et par défaut, le nom du profil est utilisé, sauf si une adresse mac est spécifiée en utilisant la clé mac. Spécifier une chaîne vide ("") signifie que le profil n'est pas restreint à une interface réseau.

Remarque : Avec le naming d'interface persistant, l'interface est prévisible selon la configuration matérielle. Sinon, l'adresse mac pourrait être une option.

Pour les types d'interfaces virtuelles comme les ponts, le interface_name est le nom de l'interface créée. En cas d'absence de interface_name, le nom du profil est utilisé.

Remarque : Le name (le nom du profil) et le interface_name (le nom de l'appareil) peuvent être différents ou le profil peut ne pas être lié à une interface du tout.

match

Paramètres pour spécifier les appareils ou les systèmes qui correspondent à un profil. Actuellement, seul le paramètre path est implémenté.

Les paramètres prennent en charge une liste de modèles qui soutiennent les modificateurs et caractères génériques suivants :

Modificateurs spéciaux pour les paramètres match :

  • |, l'élément est une alternative, la correspondance est vraie si au moins une des alternatives correspond (OU logique). Par défaut, un élément est une alternative. Cela signifie qu’un élément foo se comporte de la même manière que |foo

  • &, l'élément est obligatoire, la correspondance est vraie si tous les éléments correspondent (ET logique)

  • !, un élément peut également être inversé avec un point d'exclamation (!) entre le symbole de barre verticale (ou le &) et devant le modèle. Notez que !foo est un raccourci pour la correspondance obligatoire &!foo

  • \, un antislash peut être utilisé au début de l’élément (après les caractères spéciaux optionnels) pour échapper au début du modèle. Par exemple, &\!a est une correspondance obligatoire pour littéralement !a

Modèles génériques pour les paramètres match : En général, ceux-ci fonctionnent comme les modèles de shell.

  • *, correspond à zéro ou plusieurs caractères
  • ?, correspond à n'importe quel caractère unique
  • [fo] - correspond à n'importe quel caractère unique f ou o - prend également en charge les plages - [0-9] correspondra à n'importe quel chiffre unique

path

Le paramètre path est une liste de modèles à faire correspondre avec la propriété ID_PATH udev des appareils. La propriété ID_PATH udev représente le chemin persistent d'un appareil. Elle se compose d'une chaîne de sous-système (pci, usb, platform, etc.) et d'un identifiant spécifique au sous-système. La ID_PATH d'un appareil peut être obtenue avec la commande udevadm info /sys/class/net/$dev | grep ID_PATH= ou en regardant la propriété path exportée par NetworkManager (nmcli -f general.path device show $dev). Le paramètre path est optionnel et limite le profil à être activé uniquement sur des appareils avec un ID_PATH correspondant. Le paramètre path est uniquement pris en charge pour les profils ethernet ou infiniband. Il prend en charge les modificateurs et les caractères génériques tels que décrits pour les paramètres match.

zone

L'option zone définit la zone firewalld pour l'interface.

Les ports vers les dispositifs de pont, de liaison ou d'équipe ne peuvent pas spécifier une zone.

ip

La configuration IP prend en charge les options suivantes :

  • address L'adressage manuel peut être spécifié via une liste d'adresses sous l'option address.

  • auto_gateway

    S'il est activé, une route par défaut sera configurée en utilisant la passerelle par défaut. Si désactivé, la route par défaut sera supprimée.

    Si cette variable n'est pas spécifiée, le rôle utilisera le comportement par défaut du network_provider sélectionné.

    Définir cette option sur false est équivalent à :

    • DEFROUTE = no dans initscripts, ou
    • ipv4.never-default/ipv6.never-default yes dans nmcli
  • dhcp4, auto6, et ipv6_disabled

    De plus, un adressage manuel peut être spécifié en définissant soit dhcp4 soit auto6. La clé dhcp4 est pour DHCPv4 et auto6 pour la configuration automatique d'adresse sans état (SLAAC). Notez que les clés dhcp4 et auto6 peuvent être omises et la clé par défaut dépend de la présence d'adresses manuelles. ipv6_disabled peut être défini pour désactiver ipv6 pour la connexion.

  • dhcp4_send_hostname

    Si dhcp4 est activé, il peut être configuré si la requête DHCPv4 inclut le nom d'hôte via l'option dhcp4_send_hostname. Notez que dhcp4_send_hostname n'est pris en charge que par le fournisseur nm et correspond à la propriété ipv4.dhcp-send-hostname.

  • dns

    La configuration DNS manuelle peut être spécifiée via une liste d'adresses données dans l'option dns.

  • dns_search

    La configuration DNS manuelle peut être spécifiée via une liste de domaines à rechercher donnée dans l'option dns_search.

  • dns_options

    dns_options n'est pris en charge que pour le fournisseur NetworkManager. La configuration DNS manuelle via une liste d'options DNS peut être donnée dans dns_options. La liste des options DNS prises en charge pour les serveurs de noms IPv4 est décrite dans man 5 resolv.conf. Actuellement, la liste des options DNS prises en charge est :

    • 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

    Remarque : Le paramètre "trust-ad" n'est honoré que si le profil contribue des serveurs noms à resolv.conf, et si tous les profils contribuant ont "trust-ad" activé. Lors de l'utilisation d'un plugin DNS de mise en cache (dnsmasq ou systemd-resolved dans NetworkManager.conf), "edns0" et "trust-ad" sont automatiquement ajoutés.

  • dns_priority

    Priorité des serveurs DNS. La priorité relative pour les serveurs DNS spécifiés par ce paramètre. La valeur par défaut est 0, une valeur numérique inférieure a une priorité plus élevée. La valeur valide de dns_priority va de -2147483648 à 2147483647. Les valeurs négatives ont l'effet spécial d'exclure d'autres configurations avec une valeur de priorité numérique plus grande ; ainsi, en présence d'au moins une priorité négative, seuls les serveurs DNS des connexions avec la valeur de priorité la plus basse seront utilisés.

  • gateway4 et gateway6

    La passerelle par défaut pour les paquets IPv4 (gateway4) ou IPv6 (gateway6).

  • ipv4_ignore_auto_dns et ipv6_ignore_auto_dns

    Si activé, les serveurs de noms et domaines de recherche configurés automatiquement (via DHCPv4, DHCPv6, modem, etc.) pour IPv4 ou IPv6 sont ignorés, seuls les serveurs de noms et les domaines de recherche spécifiés dans les propriétés dns et dns_search sont utilisés. Les paramètres sont distingués par les familles d'adresses. Les variables ne sont pas prises en charge par le fournisseur initscripts.

    Si les variables ne sont pas spécifiées, le rôle utilisera le comportement par défaut du fournisseur nm.

  • route_metric4 et route_metric6

    Pour NetworkManager, route_metric4 et route_metric6 correspondent aux propriétés ipv4.route-metric et ipv6.route-metric, respectivement. Si spécifié, cela détermine la métrique de route pour les routes attribuées par DHCP et la route par défaut, et par conséquent la priorité pour plusieurs interfaces. Pour initscripts, route_metric4 définit la métrique pour la route par défaut et route_metric6 n'est pas pris en charge.

  • route

    Une configuration de route statique peut être spécifiée via une liste de routes données dans l'option route. La valeur par défaut est une liste vide. Chaque route est un dictionnaire contenant les entrées suivantes : gateway, metric, network, prefix, src, table et type. network et prefix spécifient le réseau de destination. src spécifie l'adresse IP source pour une route. table prend en charge à la fois la table numérique et la table nommée. Afin de spécifier la table nommée, les utilisateurs doivent s'assurer que la table nommée est définie correctement dans /etc/iproute2/rt_tables ou /etc/iproute2/rt_tables.d/*.conf. La clé type en option prend en charge les valeurs blackhole, prohibit, et unreachable. Voir man 8 ip-route pour leur définition. Les routes avec ces types ne prennent pas en charge un gateway. Si le type n'est pas spécifié, la route est considérée comme une route unicast. Notez que la notation CIDR (Classless Inter-Domain Routing) ou la notation de masque de réseau ne sont pas prises en charge pour la clé network.

  • routing_rule

    Les règles de routage par politique peuvent être spécifiées via une liste de règles données dans l'option routing_rule, qui permettent de router les paquets sur d'autres champs de paquet, excepté pour l'adresse de destination. La valeur par défaut est une liste vide. Chaque règle est un dictionnaire avec les entrées suivantes :

    • priority - La priorité de la règle. Une priorité valide varie de 0 à 4294967295. Un plus grand nombre signifie une priorité plus basse.
    • action - L'action de la règle. Les valeurs possibles sont to-table (par défaut), blackhole, prohibit, unreachable.
    • dport- La plage du port de destination (par exemple 1000 - 2000). Une valeur valide pour dport commence et finit entre 0 et 65534. Le début ne peut pas être plus grand que la fin.
    • family - La famille IP de la règle. Les valeurs possibles sont ipv4 et ipv6.
    • from - L'adresse source du paquet à faire correspondre (par exemple 192.168.100.58/24).
    • fwmark - La valeur fwmark du paquet à faire correspondre.
    • fwmask - La valeur de fwmask du paquet à faire correspondre.
    • iif - Sélectionnez le nom de l'interface entrante à faire correspondre.
    • invert - Inverser la correspondance sélectionnée de la règle. Les valeurs possibles sont des valeurs booléennes true et false (par défaut). Si la valeur est true, cela correspond à tout paquet qui ne satisfait pas la correspondance sélectionnée de la règle.
    • ipproto - Sélectionnez la valeur de protocole IP à faire correspondre, la valeur valide varie de 1 à 255.
    • oif - Sélectionnez le nom de l'interface sortante à faire correspondre.
    • sport - La plage du port source (par exemple 1000 - 2000). Une valeur valide pour sport commence et finit entre 0 et 65534. Le début ne peut pas être plus grand que la fin.
    • suppress_prefixlength - Rejet des décisions de routage ayant un préfixe de longueur spécifiée ou moins.
    • table - La table de routage dans laquelle rechercher pour l'action to-table. table prend en charge à la fois la table numérique et la table nommée. Pour spécifier la table nommée, les utilisateurs doivent s'assurer que la table nommée est bien définie dans /etc/iproute2/rt_tables ou /etc/iproute2/rt_tables.d/*.conf.
    • to - L'adresse de destination du paquet à faire correspondre (par exemple 192.168.100.58/24).
    • tos - Sélectionnez la valeur tos pour faire correspondre.
    • uid - La plage du uid à faire correspondre (par exemple 1000 - 2000). Une valeur valide pour uid commence et finit entre 0 et 4294967295. Le début ne peut pas être plus grand que la fin.
  • route_append_only

    L'option route_append_only permet uniquement d'ajouter de nouvelles routes aux routes existantes sur le système.

    Si l'option booléenne route_append_only est définie sur true, les routes spécifiées sont ajoutées aux routes existantes. Si route_append_only est définie sur false (par défaut), les routes actuelles sont remplacées. Notez que définir route_append_only sur true sans définir route a pour effet de préserver les routes statiques actuelles.

  • rule_append_only

    L'option booléenne rule_append_only permet de préserver les règles de routage existantes.

Remarque : Lorsque route_append_only ou rule_append_only n'est pas spécifié, le rôle réseau supprime les routes actuelles ou les règles de routage.

Remarque : Les ports vers les dispositifs de pont, de liaison ou d'équipe ne peuvent pas spécifier de paramètres ip.

ethtool

Les paramètres ethtool permettent d'activer ou de désactiver diverses fonctionnalités. Les noms correspondent aux noms utilisés par l'utilitaire ethtool. Selon le noyau et le dispositif réel, la modification de certaines options peut ne pas être prise en charge.

La configuration ethtool prend en charge les options suivantes :

  • ring

    Modifie les paramètres de rx/tx ring du périphérique réseau spécifié. La liste des paramètres ring pris en charge est :

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

ieee802_1x

Configure l'authentification 802.1x pour une interface.

Actuellement, NetworkManager est le seul fournisseur pris en charge et EAP-TLS est la seule méthode EAP prise en charge.

Les certificats et clés SSL doivent être déployés sur l'hôte avant d'exécuter le rôle.

  • eap

    La méthode EAP autorisée à utiliser lors de l'authentification au réseau avec 802.1x.

    Actuellement, tls est la valeur par défaut et la seule valeur acceptée.

  • identity (requis)

    Chaîne d'identité pour les méthodes d'authentification EAP.

  • private_key (requis)

    Chemin absolu vers la clé privée codée PEM ou PKCS#12 du client utilisée pour l'authentification 802.1x.

  • private_key_password

    Mot de passe de la clé privée spécifiée dans private_key.

  • private_key_password_flags

    Liste des drapeaux pour configurer la manière dont le mot de passe de la clé privée est géré.

    Plusieurs drapeaux peuvent être spécifiés.

    Les drapeaux valides sont :

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

    Voir la documentation de NetworkManager sur les "types de drapeaux secrets" pour plus de détails (man 5 nm-settings).

  • client_cert (requis)

    Chemin absolu vers le certificat encodé PEM du client utilisé pour l'authentification 802.1x.

  • ca_cert

    Chemin absolu vers le certificat d'autorité de certification encodé PEM utilisé pour vérifier le serveur EAP.

  • ca_path

    Chemin absolu vers le répertoire contenant des certificats d'autorité de certification additionnels encodés pem utilisés pour vérifier le serveur EAP. Peut être utilisé à la place ou en plus de ca_cert. Ne peut pas être utilisé si system_ca_certs est activé.

  • system_ca_certs

    Si défini sur true, NetworkManager utilisera les certificats CA de confiance du système pour vérifier le serveur EAP.

  • domain_suffix_match

    Si défini, NetworkManager s'assure que le nom de domaine du certificat du serveur EAP correspond à cette chaîne.

bond

Le paramètre bond configure les options des interfaces agrégées (type bond). Voir la documentation du noyau pour le bonding ou la documentation nmcli de votre distribution pour les valeurs valides. Il prend en charge les options suivantes :

  • mode

    Mode de bonding. Les valeurs possibles sont balance-rr (par défaut), active-backup, balance-xor, broadcast, 802.3ad, balance-tlb, ou balance-alb.

  • ad_actor_sys_prio

    En mode de bonding 802.3ad, cela spécifie la priorité système. La plage valide est de 1 à 65535.

  • ad_actor_system

    En mode de bonding 802.3ad, cela spécifie l'adresse mac du système pour l'acteur dans les échanges de paquets de protocole (LACPDUs).

  • ad_select

    Cette option spécifie la logique de sélection d'agrégation 802.3ad à utiliser. Les valeurs possibles sont : stable, bandwidth, count.

  • ad_user_port_key

    En mode de bonding 802.3ad, cela définit les 10 bits supérieurs de la clé de port. La plage autorisée pour la valeur est 0-1023.

  • all_ports_active

    all_slaves_active dans le noyau et NetworkManager. La valeur booléenne false supprime les trames en double (reçues sur des ports inactifs) et la valeur booléenne true livre les trames en double.

  • arp_all_targets

    Cette option spécifie la quantité d'arp_ip_targets qui doivent être accessibles pour que le moniteur ARP considère qu'un port est en ligne. Les valeurs possibles sont any ou all.

  • arp_interval

    Cette option spécifie la fréquence de surveillance du lien ARP en millisecondes. Une valeur de 0 désactive la surveillance ARP.

  • arp_validate

    Dans n'importe quel mode qui prend en charge la surveillance ARP, cette option spécifie si les probes et réponses ARP doivent être validées. Sinon, pour des raisons de surveillance de lien, il convient de préciser si le trafic non ARP doit être filtré (ignoré). Les valeurs possibles sont : none, active, backup, all, filter, filter_active, filter_backup.

  • arp_ip_target

    Lorsque arp_interval est activé, cette option spécifie les adresses IP à utiliser comme pairs de surveillance ARP.

  • downdelay

    Le temps à attendre (en millisecondes) avant de désactiver un port après qu'une panne de lien a été détectée.

  • fail_over_mac

    Cette option spécifie la politique pour sélectionner l'adresse MAC pour l'interface de liaison en mode actif-backup. Les valeurs possibles sont : none (par défaut), active, follow.

  • lacp_rate

    En mode de bonding 802.3ad, cette option définit la fréquence à laquelle nous demandons au partenaire de lien de transmettre des paquets LACPDU. Les valeurs possibles sont : slow, fast.

  • lp_interval

    Cette option spécifie le nombre de secondes entre les instances où le pilote de liaison envoie des paquets d'apprentissage à chaque commutateur pair des ports.

  • miimon

    Définit l'intervalle de surveillance de lien MII (en millisecondes).

  • min_links

    Cette option spécifie le nombre minimum de liens qui doivent être actifs avant d'affirmer le transport.

  • num_grat_arp

    Cette option spécifie le nombre de notifications de pairs (ARP gratuits) à émettre après un événement de basculement. La plage autorisée pour la valeur est 0-255.

  • packets_per_port

    En mode de bonding balance-rr, cette option spécifie le nombre de paquets autorisés pour un port dans la transmission réseau avant de passer au suivant. La plage autorisée pour la valeur est 0-65535.

  • peer_notif_delay

    Cette option spécifie le délai (en millisecondes) entre chaque notification de pair lorsqu'elles sont émises après un événement de basculement.

  • primary

    Cette option définit le périphérique principal.

  • primary_reselect

    Cette option spécifie la politique de reselection pour le port principal. Les valeurs possibles sont : always, better, failure.

  • resend_igmp

    Cette option spécifie le nombre de rapports d'appartenance IGMP à émettre après un événement de basculement. La plage autorisée pour la valeur est 0-255.

  • tlb_dynamic_lb

    Cette option spécifie si le mélangé dynamique des flux est activé en mode tlb. La valeur booléenne true active le mélange de flux tandis que la valeur booléenne false le désactive.

  • updelay

    Cette option spécifie le temps (en millisecondes) à attendre avant d'activer un port après qu'une récupération de lien a été détectée.

  • use_carrier

    Cette option spécifie si l'intervalle miimon doit utiliser des ioctls MII ou ETHTOOL par rapport à netif_carrier_ok() pour déterminer l'état du lien. La valeur booléenne true active l'utilisation de netif_carrier_ok() tandis que la valeur booléenne false utilise plutôt des ioctls MII ou ETHTOOL.

  • xmit_hash_policy

    Cette option spécifie la politique de hachage de transmission à utiliser pour la sélection du port, les valeurs possibles sont : layer2, layer3+4, layer2+3, encap2+3, encap3+4, vlan+srcmac.

Exemples d'options

Définir le même profil de connexion plusieurs fois :

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

  - name: Wired0
    state: up

Activer un profil de connexion préexistant :

network_connections:
  - name: eth0
    state: up

Désactiver un profil de connexion préexistant :

network_connections:
  - name: eth0
    state: down

Créer un profil de connexion permanent :

network_connections:
  - name: eth0
    #persistent_state: present  # par défaut
    type: ethernet
    autoconnect: true
    mac: "00:00:5e:00:53:5d"
    ip:
      dhcp4: true

Spécifier un profil de connexion pour un dispositif ethernet avec le ID_PATH :

network_connections:
  - name: eth0
    type: ethernet
    # Pour les dispositifs PCI, le chemin a la forme "pci-$domain:$bus:$device.$function"
    # Le profil ne correspondra qu'à l'interface à l'adresse PCI pci-0000:00:03.0
    match:
      path:
        - pci-0000:00:03.0
    ip:
      address:
        - 192.0.2.3/24
  - name: eth0
    type: ethernet
    # Spécifier un profil de connexion pour un dispositif ethernet uniquement avec l'adresse PCI
    # pci-0000:00:01.0 ou 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

Supprimer un profil de connexion nommé eth0 (s'il existe) :

network_connections:
  - name: eth0
    persistent_state: absent

Configurer les paramètres de liaison Ethernet :

network_connections:
  - name: eth0
    type: ethernet

    ethernet:
      autoneg: false
      speed: 1000
      duplex: full

Créer une connexion de pont :

network_connections:
  - name: br0
    type: bridge
    #interface_name: br0  # se par defaut au nom de connexion

Configurer une connexion de pont :

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

Définir controller et 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

Configurer les VLANs :

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

Configurer 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

Configurer une connexion sans fil :

network_connections:
  - name: wlan0
    type: wireless
    wireless:
      ssid: "Mon Réseau WPA2-PSK"
      key_mgmt: "wpa-psk"
      # recommande le cryptage du mot de passe sans fil avec vault
      # voir https://docs.ansible.com/ansible/latest/user_guide/vault.html
      password: "p@55w0rD"

Définir la configuration 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

Configurer 802.1x :

network_connections:
  - name: eth0
    type: ethernet
    ieee802_1x:
      identity: myhost
      eap: tls
      private_key: /etc/pki/tls/client.key
      # recommande le cryptage du mot de passe de la clé privée avec vault
      # voir 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

Configurer Enhanced Open (OWE) :

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

Exemples d'application de la configuration d'état réseau

Configurer les adresses 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

Configurer la route :

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

Configurer les options de recherche et serveur DNS :

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

Configuration invalide et incorrecte

Le rôle réseau rejette les configurations invalides. Il est recommandé de tester le rôle d'abord avec --check. Il n'y a pas de protection contre une configuration incorrecte (mais valide). Vérifiez soigneusement votre configuration avant de l'appliquer.

Module interne network_connections

Le module interne network_connections est destiné à un usage interne ou à des tests d'intégration et n'est pas destiné à un accès ou à une utilisation directe externe. Lorsque ce module interne est utilisé dans des tests d'intégration, les tâches spécifiées dans tasks/main.yaml sont ignorées, ce qui accélère l'exécution du test.

Compatibilité

Le rôle réseau prend en charge le même schéma de configuration pour les deux fournisseurs (nm et initscripts). Cela signifie que vous pouvez utiliser le même playbook avec NetworkManager et initscripts. Cependant, notez que toutes les options ne sont pas exactement gérées de la même manière par chaque fournisseur. Faites d'abord une exécution de test avec --check.

Il n'est pas pris en charge de créer une configuration pour un fournisseur et d'attendre qu'un autre fournisseur les gère. Par exemple, créer des profils avec le fournisseur initscripts, et plus tard activer NetworkManager ne garantit pas que cela fonctionnera automatiquement. Il est possible que vous deviez ajuster la configuration afin qu'elle puisse être utilisée par un autre fournisseur.

Par exemple, configurer un hôte RHEL6 avec initscripts et mettre à niveau vers RHEL7 tout en continuant à utiliser initscripts en RHEL7 est un scénario acceptable. Ce qui n'est pas garanti est de passer à RHEL7, de désactiver initscripts et d'attendre que NetworkManager prenne automatiquement en charge la configuration.

En fonction de la configuration de NetworkManager, les connexions peuvent également être stockées sous forme de fichiers ifcfg, mais il n'est pas garanti que des initscripts pure puissent gérer ces fichiers ifcfg après la désactivation du service NetworkManager.

Le rôle réseau prend également en charge la configuration dans certaines distributions Ansible que le rôle traite comme RHEL, telles qu'AlmaLinux, CentOS, OracleLinux, Rocky.

Limitations

Comme Ansible fonctionne généralement via le réseau, par exemple via SSH, il y a certaines limitations à prendre en compte :

Le rôle réseau ne prend pas en charge le bootstrap de la configuration réseau. Une option peut être ansible-pull. Une autre option peut être de configurer initialement le système lors de l'installation (basé sur ISO, kickstart, etc.), de sorte que l'hôte soit connecté à un réseau ou VLAN de gestion. Cela dépend fortement de votre environnement.

Pour le fournisseur initscripts, déployer un profil signifie simplement créer les fichiers ifcfg. Rien ne se passe automatiquement tant que le play n’émets pas ifup ou ifdown via les états up ou down state -- à moins qu'il n'y ait d'autres composants qui dépendent des fichiers ifcfg et réagissent aux modifications.

Le fournisseur initscripts exige que les différents profils soient dans le bon ordre lorsqu’ils dépendent les uns des autres. Par exemple, le périphérique de contrôleur de liaison doit être spécifié avant les dispositifs de port.

Lors de la suppression d'un profil pour NetworkManager, cela prend également la connexion hors ligne et éventuellement supprime les interfaces virtuelles. Avec le fournisseur initscripts, supprimer un profil ne modifie pas l'état d'exécution actuel (c'est une fonction future pour NetworkManager également).

Pour NetworkManager, modifier une connexion avec autoconnect d'activé peut donner lieu à l'activation d'un nouveau profil sur une interface précédemment déconnectée. De plus, supprimer une connexion NetworkManager qui est actuellement active entraîne la suppression de l'interface. Par conséquent, l'ordre des étapes doit être suivi, et il peut être nécessaire de gérer avec soin la propriété autoconnect. Cela devrait être amélioré dans NetworkManager RFE rh#1401515.

Il semble difficile de changer le réseau de l'hôte cible de manière à rompre la connexion SSH actuelle d'ansible. Si vous souhaitez faire cela, ansible-pull pourrait être une solution. Alternativement, une combinaison d’async/poll en changeant le ansible_host au milieu du play.

TODO Le rôle actuel ne prend pas encore en charge le fractionnement facile du play en étapes de préconfiguration et en une seconde étape pour activer la nouvelle configuration.

En général, pour exécuter le play avec succès, déterminez quelle configuration est active en premier lieu, puis configurez soigneusement une séquence d'étapes pour passer à la nouvelle configuration. La solution réelle dépend fortement de votre environnement.

Gestion des problèmes potentiels

Lorsque quelque chose tourne mal lors de la configuration du réseau à distance, vous pourriez avoir besoin d'un accès physique à la machine pour vous rétablir.

TODO NetworkManager prend en charge une fonctionnalité de checkpoint/rollback. Au début du play, nous pourrions créer un point de contrôle et si nous perdons la connectivité en raison d'une erreur, NetworkManager reviendrait automatiquement en arrière après un délai d'attente. Les limitations sont que cela ne fonctionnerait qu'avec NetworkManager, et il n'est pas clair que le rollback aboutisse à une configuration fonctionnelle.

Vous voulez contribuer ? Jetez un œil à nos directives de contribution !

rpm-ostree

Voir README-ostree.md

Installer
ansible-galaxy install linux-system-roles.network
Licence
bsd-3-clause
Téléchargements
263.3k
Propriétaire