avinetworks.network_interface

interface_réseau

AVERTISSEMENT : Ce rôle peut être dangereux à utiliser. Si vous perdez la connexion réseau avec votre hôte cible en configurant incorrectement votre réseau, vous pourriez ne pas être en mesure de récupérer l'accès sans accès physique à la machine.

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

  • Interfaces Ethernet
  • Interfaces de pont
  • Interfaces liées
  • Interfaces VLAN taggées
  • Routes réseau

Exigences

Ce rôle nécessite Ansible 1.4 ou supérieur et les exigences de plateforme sont listées dans le fichier de métadonnées.

Variables du Rôle

Les variables qui peuvent être passées à ce rôle et une brève description de celles-ci sont les suivantes :

Variable Requis Par défaut Commentaires
network_pkgs Non [] Packages généralement nécessaires comme selinux, bridge-utils, ifenslave et iproute
network_ether_interfaces Non [] La liste des interfaces Ethernet à ajouter au système.
network_bridge_interfaces Non [] La liste des interfaces de pont à ajouter au système.
network_bond_interfaces Non [] La liste des interfaces liées à ajouter au système.
network_vlan_interfaces Non [] La liste des interfaces VLAN à ajouter au système.
network_check_packages Non true Installer les packages listés dans network_pkgs.
network_allow_service_restart Non true Si les interfaces/réseaux doivent être reconfigurés et redémarrés.
network_modprobe_persist Non true Chargement persistant des modules.
network_configured_interfaces_only Non false Supprime complètement les interfaces non configurées via ce rôle lorsque activé.
network_interface_file_prefix Non ifcfg- Le préfixe pour les fichiers de configuration des interfaces.
network_interface_file_postfix Non `` Le suffixe pour les fichiers de configuration des interfaces.

Note : Les valeurs de la liste sont listées dans les exemples ci-dessous.

Exemples

Les configurations réseau Debian (non RedHat) peuvent utiliser de manière facultative la notation CIDR pour les adresses IPv4 au lieu de spécifier l'adresse et le masque de sous-réseau séparément. Il est obligatoire d'utiliser la notation CIDR pour les adresses IPv6 sur Debian.

Exemple IPv4 avec notation CIDR :

      cidr: 192.168.10.18/24
      # FACULTATIF : spécifiez une passerelle pour ce réseau, ou auto pour réseau+1
      gateway: auto

Exemple IPv4 avec IPv4 classique :

      address: 192.168.10.18
      netmask: 255.255.255.0
      network: 192.168.10.0
      broadcast: 192.168.10.255
      gateway: 192.168.10.1

Si vous souhaitez utiliser une adresse MAC différente pour votre interface, vous pouvez simplement l'ajouter.

      hwaddress: aa:bb:cc:dd:ee:ff

Dans certains cas rares, il peut être utile de définir l'option que vous souhaitez. Il est donc possible d'utiliser

      options:
          - "up /execute/my/command"
          - "down /execute/my/other/command"

et la version IPv6

      ipv6_options:
          - "up /execute/my/command"
          - "down /execute/my/other/command"
  1. Configurez eth1 et eth2 sur un hôte avec une IP statique et une IP DHCP. Définissez également des routes statiques et une passerelle.
- hosts: myhost
  roles:
    - role: network
      network_ether_interfaces:
       - device: eth1
         bootproto: static
         cidr: 192.168.10.18/24
         gateway: auto
         route:
          - network: 192.168.200.0
            netmask: 255.255.255.0
            gateway: 192.168.10.1
          - network: 192.168.100.0
            netmask: 255.255.255.0
            gateway: 192.168.10.1
       - device: eth2
         bootproto: dhcp

Note : il n'est pas nécessaire d'ajouter des routes, la route par défaut sera ajoutée automatiquement.

  1. Configurez une interface de pont avec plusieurs NIC ajoutés au pont.
- hosts: myhost
  roles:
    - role: network
      network_bridge_interfaces:
       - device: br1
         type: bridge
         cidr: 192.168.10.10/24
         bridge_ports: [eth1, eth2]
         
         # Valeurs optionnelles
         bridge_ageing: 300
         bridge_bridgeprio: 32768
         bridge_fd: 15
         bridge_gcint: 4
         bridge_hello: 2
         bridge_maxage: 20
         bridge_maxwait: 0
         bridge_pathcost: "eth1 100"
         bridge_portprio: "eth1 128"
         bridge_stp: "on"
         bridge_waitport: "5 eth1 eth2"

Note : Les routes peuvent également être ajoutées pour cette interface de la même manière que pour les interfaces Ethernet.

  1. Configurez une interface de liaison avec une configuration de "sauvegarde active".
- hosts: myhost
  roles:
    - role: network
      network_bond_interfaces:
        - device: bond0
          address: 192.168.10.128
          netmask: 255.255.255.0
          bond_mode: active-backup
          bond_slaves: [eth1, eth2]

          # Valeurs optionnelles
          bond_miimon: 100
          bond_lacp_rate: slow
          bond_xmit_hash_policy: layer3+4
  1. Configurez une interface liée avec le mode de liaison "802.3ad" et une adresse IP obtenue via DHCP.
- hosts: myhost
  roles:
    - role: network
      network_bond_interfaces:
        - device: bond0
          bootproto: dhcp
          bond_mode: 802.3ad
          bond_miimon: 100
          bond_slaves: [eth1, eth2]
          bond_ad_select: 2
  1. Configurez une interface VLAN avec le tag VLAN 2 pour une interface Ethernet.
- hosts: myhost
  roles:
    - role: network
      network_ether_interfaces:
       - device: eth1
         bootproto: static
         cidr: 192.168.10.18/24
         gateway: auto
      network_vlan_interfaces:
       - device: eth1.2
         bootproto: static
         cidr: 192.168.20.18/24
  1. Tous les exemples ci-dessus montrent comment configurer un seul hôte. L'exemple ci-dessous montre comment définir vos configurations réseau pour toutes vos machines.

Supposons que votre inventaire d'hôtes soit le suivant :

/etc/ansible/hosts

[dc1]
host1
host2

Décrivez votre configuration réseau pour chaque hôte dans les variables d'hôtes :

host_vars/host1

    network_ether_interfaces:
           - device: eth1
             bootproto: static
             address: 192.168.10.18
             netmask: 255.255.255.0
             gateway: 192.168.10.1
             route:
              - network: 192.168.200.0
                netmask: 255.255.255.0
                gateway: 192.168.10.1
    network_bond_interfaces:
            - device: bond0
              bootproto: dhcp
              bond_mode: 802.3ad
              bond_miimon: 100
              bond_slaves: [eth2, eth3]

host_vars/host2

network_ether_interfaces:
       - device: eth0
         bootproto: static
         address: 192.168.10.18
         netmask: 255.255.255.0
         gateway: 192.168.10.1
  1. Si le package resolvconf doit être utilisé, il est possible d'ajouter certaines configurations DNS.
dns-nameserver: [ "8.8.8.8", "8.8.4.4" ]
dns-search: "search.mydomain.tdl"
dns-domain: "mydomain.tdl"
  1. Vous pouvez ajouter une configuration d'IP statique IPv6 sur les interfaces Ethernet, de liaison ou de pont.
ipv6_address: "aaaa:bbbb:cccc:dddd:dead:beef::1/64"
ipv6_gateway: "aaaa:bbbb:cccc:dddd::1"

Créez un playbook qui applique ce rôle à tous les hôtes comme montré ci-dessous, et exécutez le playbook. Tous les serveurs devraient avoir leurs interfaces réseau configurées et les routes mises à jour.

- hosts: all
  roles:
    - role: network
  1. Ce rôle peut également, de manière facultative, ajouter des interfaces réseau aux zones de firewalld. Le module firewalld principal (http://docs.ansible.com/ansible/latest/firewalld_module.html) peut effectuer la même fonction, donc si vous utilisez les deux modules, vos playbooks peuvent ne pas être idempotents. Considérez ce cas, où seul le module firewalld est utilisé :
  • Le rôle network_interface s'exécute ; sans la variable d'hôte firewalld_zone définie, toute ligne ZONE sera supprimée des ifcfg-*
  • Le module firewalld s'exécute ; ajoute une ligne ZONE aux ifcfg-*
  • Lors de l'exécution suivante du playbook, le rôle network_interface s'exécute et retire à nouveau la ligne ZONE, et donc le cycle se répète.

Pour que ce rôle gère les zones firewalld, le système doit fonctionner sur une distribution basée sur RHEL et utiliser NetworkManager pour gérer les interfaces réseau. Si ces critères sont remplis, l'exemple suivant montre comment ajouter l'interface eth0 à la zone firewalld publique :

       - device: eth0
         bootproto: static
         address: 192.168.10.18
         netmask: 255.255.255.0
         gateway: 192.168.10.1
         firewalld_zone: public

Note : Ansible a besoin de connectivité réseau tout au long du processus du playbook, vous pourriez avoir besoin d'une interface de contrôle que vous ne modifiez PAS en utilisant cette méthode tout en changeant les adresses IP afin qu'Ansible ait une connexion stable pour configurer les systèmes cibles. Tous les changements réseau sont effectués dans un script généré unique et la connectivité réseau n'est perdue que pendant quelques secondes.

Dépendances

python-netaddr

Licence

BSD

Informations sur l'auteur

Ce projet a été créé à l'origine par Benno Joy.

Mises à jour de Debian par :

  • Martin Verges (croit, GmbH)
  • Eric Anderson (Avi Networks, Inc.)

Mises à jour de RedHat par :

  • Eric Anderson (Avi Networks, Inc.)
  • Luke Short (Red Hat, Inc.)
  • Wei Tie, (Cisco Systems, Inc.)

La liste complète des contributeurs peut être trouvée ici.

À propos du projet

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

Installer
ansible-galaxy install avinetworks.network_interface
Licence
Unknown
Téléchargements
7.3k
Propriétaire