Dépôts de configurations et scripts pour le logiciel de conteneurisation Systemd-nspawn.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ycharbi 613a060f17
Refonte complète du fichier
4 years ago
README.md Refonte complète du fichier 4 years ago
apache1.nspawn Dépôt initial. 5 years ago
ifdown.sh Modification de commentaires + renommage de variables + simplification du filtre de paramètres. 4 years ago
ifup.sh Nouvelle fonctionnalité d'ajout d'interface tronc IEEE 802.1Q + Changement de noms de variables + ajout et correction de commentaires 4 years ago
systemd-nspawn@.service Suppression du paramètre -U dans le service afin de lancer les conteneurs en mode privilégié par défaut. 4 years ago

README.md

Usage

Les fichiers ifup.sh et ifdown.sh sont les scripts de gestion des VLAN pour les conteneurs Systemd-nspawn écrit par mes soins. Ils se bases sur la technologie de filtrage des VLAN du noyau Linux.

  • ifup.sh permet la création et le placement d'une interface réseau dans un VLAN ou dans un tronc 802.1Q. Il se charge également de l'intégrer à un pont spécifique (l'existence préalable de ce dernier est requise)
  • ifdown se charge de supprimer les interfaces créées par Systemd-nspawn après l'extinction du conteneur

Afin qu'ils s'exécutent au démarrage et à l'arrêt d'un conteneur, il faut modifier le service systemd-nspawn@.service pour y ajouter les directives adéquates (notez l'emplacement des fichiers) :

systemctl edit systemd-nspawn@.service

Collez-y le contenu suivant. Ceci aura pour effet de créer le fichier /etc/systemd/system/systemd-nspawn@.service.d/override.conf qui persistera aux mises à jour du paquet systemd-container.

[Service]
ExecStartPre=/etc/systemd/nspawn/ifup.sh %i
ExecStart=
ExecStart=systemd-nspawn --quiet --keep-unit --boot --link-journal=try-guest --network-veth --settings=override --machine=%i
ExecStopPost=/etc/systemd/nspawn/ifdown.sh %i

Note : j'ai également retiré le -U des paramètres d'initialisation, d'où les deux ExecStart= (le premier, vide, permettant de réinitialiser la valeur par défaut). Ceci correspond à un besoin personnel et est facultatif.

Pour configurer les interfaces réseaux d'un conteneur, il faut ajouter deux lignes de commentaires au dessus de chaque directive Interface= dans le fichier de configuration de celui-ci.

Pour une interface non étiqueté :

PONT=votrepont
VLAN=vid

Pour une interface de tronc 802.1Q :

PONT=votrepont
8021Q=vid1,vi2,vid3

Il est possible de mixer les notions au travers de plusieurs interfaces comme dans l'exemple suivant (fichier /etc/systemd/nspawn/web.nspawn) :

[Network]
#PONT=br0
#VLAN=100
Interface=web_100
#PONT=br0
#VLAN=121
Interface=web_121
#PONT=br0
#8021Q=5,210
Interface=web_T1
#PONT=br0
#8021Q=181,1109
Interface=web_T2

Le script vérifie que ce que vous avez renseigné est valide. S'il rencontre la moindre erreur, il s'interrompt sans modifier le système et vous oriente sur le problème.

⚠️ J'attire votre attention sur le fait que l'ajout, en cours de fonctionnement, de directives Interface= dans le ficher de configuration de votre conteneur a pour effet de neutraliser l'exécution d'ifdown.sh. Ceci est intrinsèque à la façon dont il fonctionne. Les interfaces créées par ifup.sh devront alors êtres supprimées manuellement. ⚠️

Tests sans altérations

Si vous voulez modifier les scripts, il peut être pratique d'afficher les commandes générées au lieu de les appliquer lors de vos tests. Pour ce faire, vous pouvez ajouter la commande echo devant l'action d'exécution comme suit dans la fonction execCmdIntRzo() :

echo ${commandes_a_executer["${id_commande_rzo}"]}