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"
- 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.
- 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.
- 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
- 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
- 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
- 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
- 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"
- 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
- 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 ligneZONE
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.
This roles enables users to configure various network components on target machines.
ansible-galaxy install avinetworks.network_interface