L’objectif de ce groupe de travail était de monter en compétences sur l’utilisation/l’intégration des différents composants de systemd à savoir : systemd-networkd, systemd-resolved, journarld, systemd-nspawn…

En effet, actuellement sur EOLE 2.6, systemd gère uniquement les services, il se contente d’assurer le passage de System V à systemd.

Qu’est ce que systemd ?

systemd est un système d’initialisation et un daemon qui a été spécifiquement conçu pour le noyau Linux comme alternative à System V.
Il a pour but d’offrir un meilleur cadre pour la gestion des dépendances entre services, de permettre le chargement en parallèle des services au démarrage, et de réduire les appels aux scripts shell. Le projet a été lancé par Lennart Poettering en 2010 et publié sous licence GNU LGPL version 2.12. Le nom de ce programme vient de « system daemon » : le daemon du système.

Source Wikipédia : https://fr.wikipedia.org/wiki/Systemd

Composants de systemd – image de Claudelepoisson sous licence CC by-sa 3.0

Le site officiel du projet : https://wiki.freedesktop.org/www/Software/systemd/

Déploiement et gestion de conteneurs avec systemd-container

Installation des dépendances

root@eolebase:~# apt install debootstrap systemd-container

Génération et préparation du chroot

root@eolebase:~# export http_proxy=http://direct.proxy.i2:8080
root@eolebase:~# debootstrap xenial /var/lib/machines/xenial

Entrer dans le chroot et préparer le conteneur :

root@eolebase:~# systemd-nspawn -D /var/lib/machines/xenial/
Spawning container xenial on /var/lib/machines/xenial.
Press ^] three times within 1s to kill container.
Failed to create directory /var/lib/machines/xenial/sys/fs/selinux: Read-only file system
Failed to create directory /var/lib/machines/xenial/sys/fs/selinux: Read-only file system
/etc/localtime is not a symlink, not updating container timezone.
root@xenial:~# rm -f /etc/resolv.conf
root@xenial:~# rm -rf /etc/resolvconf/
root@xenial:~# ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
root@xenial:~# systemctl enable systemd-networkd.service
root@xenial:~# systemctl enable systemd-resolved.service
root@xenial:~# echo "pts/0" >> /etc/securetty
root@xenial:~# passwd 
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
root@xenial:~# export http_proxy=http://direct.proxy.i2:8080
root@xenial:~# apt install dbus

Le conteneur est prêt à être utilisé, pour revenir sur l’hôte il faut exécuter 3 fois ctrl+]

Démarrer le conteneur

root@eolebase:~# systemd-nspawn -D /var/lib/machines/xenial/ -b

Gestion des conteneurs avec machinectl

Lister les images

root@eolebase:~# machinectl list-images 
NAME TYPE RO USAGE CREATED MODIFIED
xenial directory no n/a n/a n/a

1 images listed.

Lister les conteneurs actifs :

root@eolebase:~# machinectl list
MACHINE CLASS SERVICE 
xenial container systemd-nspawn

1 machines listed.

Démarrer le conteneur :

root@eolebase:~# machinectl start xenial

Se connecter au conteneur :

root@eolebase:~# machinectl login xenial
Connected to machine xenial. Press ^] three times within 1s to exit session.

Ubuntu 16.04 LTS eolebase pts/0

eolebase login: root
Password: 
Last login: Wed Nov 22 16:55:23 UTC 2017 on console
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-62-generic x86_64)

* Documentation: https://help.ubuntu.com/

Arrêter le conteneur :

root@eolebase:~# machinectl poweroff xenial

Supprimer le conteneur :

root@eolebase:~# machinectl remove xenial