Ceci est le deuxième article d'une série utilisant les rôles système Ansible. Dans l'article précédent, je vous ai présenté Ansible et les rôles système et fourni quelques exemples. Les rôles système vous aident à gérer les tâches au niveau du système d'exploitation telles que SELinux, la gestion des paramètres réseau, NTP, etc. Dans cet article, vous avez vu un exemple où vous avez modifié le mode SELinux à l'aide de system.role-selinux
rôle. Dans cet article, j'examine en détail le rôle réseau afin que vous puissiez modifier les connexions réseau de la machine distante avec un seul playbook.
NetworkManager gère les paramètres réseau tels que la configuration de l'interface réseau ainsi que la connexion. Fondamentalement, c'est un démon qui surveille et gère les paramètres réseau. Il utilise un fichier dans /etc/sysconfig/network-scripts
pour les stocker. nmcli
est l'utilitaire utilisé pour créer et modifier des fichiers de connexion à partir d'une invite de shell. Pour lister les connexions de votre machine locale utilisez :
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno0 ethernet connected eno0
eno1 ethernet disconnected ---
virbr0 bridge connected virbr0
Dans la sortie ci-dessus, vous pouvez voir différentes colonnes. La première colonne, APPAREIL , indique l'interface réseau. Le TYPE colonne indique de quel type de connexion il s'agit. L'ÉTAT colonne indique l'état de la connexion, et la dernière, CONNEXION , est un ensemble de paramètres pouvant être configurés pour un appareil. Chaque connexion a un nom ou un ID qui l'identifie.
Pour afficher une liste de toutes les connexions, vous pouvez utiliser :
$ nmcli con show
Utilisation de nmcli
, vous pouvez ajouter des connexions réseau et attribuer des adresses IPv4 ou IPv6 pour créer des connexions réseau. Cependant, comme vous le savez, vous souhaitez automatiser les tâches manuelles que vous feriez normalement avec nmcli
. Vous souhaitez gérer les nœuds du réseau à l'aide d'un playbook Ansible.
Dans Ansible, vous disposez de trois modules importants qui vous aident à gérer les nœuds :les paramètres du service, du démon et du système. Vous pouvez également utiliser ces modules pour gérer les réseaux. Dans l'article précédent, j'ai discuté des rôles système Ansible. Dans system-roles, vous avez le rhel-system-roles.network
rôle, qui est le moyen le plus simple de configurer et de gérer les paramètres réseau sur les nœuds gérés.
Commencez par utiliser ce système de réseau rôle pour configurer les paramètres réseau sur un nœud géré.
Ici vous avez le server1.example.com
machine gérée. J'ai déjà créé l'entrée du nœud géré dans le fichier d'inventaire.
Remarque :Assurez-vous que votre nœud géré dispose de deux connexions Ethernet, car il ajoute une nouvelle connexion. Cette seconde interface réseau doit être disponible.
Avant d'effectuer toute opération, confirmez que le service NetworkManager est démarré et activé sur votre nœud géré. Pour ce faire, utilisez un playbook. Pour cette tâche, utilisez le module de service dans service.yml
fichier.
---
- name: playbook for starting and enabling the NetworkManager
hosts: server1.example.com
tasks:
- Name: start the service
service:
name: NetworkManager
state: started
enabled: true
Exécutez ce playbook :
$ ansible-playbook service.yml
Si le playbook s'exécute correctement sans aucune erreur, le service est démarré et activé sur la machine du nœud géré.
Le nom de l'interface secondaire est eno1 afin que vous puissiez trouver l'adresse MAC de cette interface. Parce que vous utilisez cette adresse MAC, votre playbook découvrira l'interface secondaire. Afficher l'adresse MAC de eno1 en utilisant :
$ ip a
L'adresse MAC de server1.example.com
est 52:54:00:fe:2f:b8 . Utilisez ceci dans le playbook.
Maintenant, après la tâche de service, installez system-roles
sur le contrôleur :
$ yum install rhel-system-roles
Cette commande installera tous les rôles système dans le répertoire par défaut du rôle.
Écrivez maintenant un playbook pour ajouter une nouvelle connexion sur le nœud géré :
---
- name: playbook for configuring second interface
hosts: server1.example.com
vars:
target_mac: “52:54:00:fe:2f:b8”
network_connection:
- name: static-network
type: ethernet
mac: “{{ target_mac }}”
state: up
ip :
dhcp: no
address:
- 192.168.0.5/24
roles:
- rhel-system-roles.network
Ceci est un livre de jeu complet. Je vais vous expliquer chaque paramètre étape par étape :
target_mac - Il s'agit de l'adresse MAC de la deuxième interface Ethernet. Cela vous aidera à trouver la bonne interface sur un nœud géré.
connexion_réseau - Cette variable contient des informations pour les nouvelles connexions :
- name :nom de la nouvelle connexion
- type :nouveau type de connexion
- mac :la variable target_mac
- state :activez la connexion en utilisant le
up
options - ip :désactivez l'option DHCP et attribuez une adresse IP à l'aide de ce paramètre
J'ai utilisé des variables requises pour exécuter le rôle de système réseau. Exécutez maintenant ce playbook :
$ ansible-playbook networkconfiguration.yml
Ce playbook configurera une connexion réseau statique avec une adresse IP statique.
Pour vérifier les paramètres, connectez-vous à server1.example.com
et confirmez la connexion nouvellement ajoutée :
$ nmcli connection show
NAME UUID TYPE DEVICE
eno0 adc52c70-… ethernet eno0
static-network 1be30687-… ethernet eno1
virbr0 0a9de672-… bridge virbr0
Essayez de ping
l'adresse IP du réseau statique connexion, et si elle réussit, vous avez ajouté avec succès la nouvelle connexion réseau.
Vérifiez si une nouvelle connexion est ajoutée avec succès ou non à l'aide des commandes ad hoc de la machine contrôleur :
$ ansible server1.example.com -m shell -a 'nmcli con show'
Cette commande affichera le même résultat que celui indiqué dans les étapes précédentes.
Récapitulez
Cet article montre que vous pouvez configurer des connexions réseau à l'aide des rôles système Ansible. Ce petit playbook réduit les tâches manuelles et configure la connexion réseau de plusieurs machines à la fois simplement en créant un groupe d'hôtes. Ces rôles réseau système vérifient de nombreux paramètres lors de l'exécution du playbook, confirment que NetworkManager est en cours d'exécution et testent la connectivité dans le playbook lui-même. Il s'agit d'un excellent exemple de la façon dont vous pouvez utiliser les rôles système pour automatiser les configurations sur vos systèmes.