Projet

Général

Profil

Scribe+eole-ad+Seth-conteneur

On part d'un Scribe sur lequel on installe et on configure un module Seth dans un conteneur LXC puis on met en œuvre Eole-AD comme si on avait deux serveurs distincts.

Pour la maquette, j'ai choisi d'utiliser un serveur aca.scribe-2.6.2-instance-AvecImport afin de minimiser les problèmes liés à l'environnement réseau.

Mise en œuvre du module Seth dans un conteneur LXC

Pour mettre en place le conteneur, nous avons suivi le tutoriel réalisé par Daniel qui permettait d'installer un module Eclair dans un conteneur : https://dev-eole.ac-dijon.fr/issues/21060

Génération du conteneur

Pour la génération du conteneur de base et les étapes suivants, nous avons juste remplacé le nom "eclair" par "seth".
Dans notre cas, comme le mode conteneur d'EOLE n'est pas utilisé sur le maître, il manque des outils et des mécanismes pour que lxc fonctionne directement.

apt install lxc1 lxc-templates debootstrap cgroup-lite 
lxc-create -n seth -t ubuntu -- -r xenial -u ubuntu -S ~root/.ssh/id_rsa.pub --packages 'wget' --mirror http://eole.ac-dijon.fr/ubuntu

Configuration du conteneur

Pour configurer le conteneur, nous nous sommes également inspirés de la configuration proposée pour Eclair en ignorant la problématique du montage NFS.

Nous nous sommes adaptés au paramétrage proposé par défaut :
  • conteneur dans /var/lib/lxc/
  • réseau des conteneurs en 10.0.3.0/24
root@scribe:~# cat /var/lib/lxc/seth/config 
# Template used to create this container: /usr/share/lxc/templates/lxc-ubuntu

# Common configuration
lxc.include = /usr/share/lxc/config/ubuntu.common.conf

# Container specific configuration
lxc.utsname = seth
lxc.arch = amd64
lxc.rootfs.backend = dir
lxc.rootfs = /var/lib/lxc/seth/rootfs

# EOLE look for /dev/lxc to detect container mode and behave differently
lxc.devttydir = LXC

# Automatic start at bootup
lxc.start.auto = 1

# Network configuration
# eth0 on eth0
lxc.network.type = macvlan
lxc.network.link = ens4
lxc.network.flags = up
lxc.network.name = eth0
lxc.network.mtu = 1500
lxc.network.macvlan.mode = bridge

# containers on br0
# Reuse LTSP server IP
# http://eole.ac-dijon.fr/documentations/2.6/partielles/beta/EOLE/co/02-fichiers.html
lxc.network.type=veth
lxc.network.link=lxcbr0
lxc.network.flags=up
lxc.network.name = containers
lxc.network.mtu = 1500
lxc.network.veth.pair = seth_0
lxc.network.ipv4 = 10.0.3.54/24

Nous avons ensuite effectué les opération qui nous semblaient adaptées à notre cas (pas de périphérique, pas de proxy, ...).

  • Installer la clef SSH publique pour se connecter en root
mkdir /var/lib/lxc/seth/rootfs/root/.ssh/
cp ~root/.ssh/id_rsa.pub /var/lib/lxc/seth/rootfs/root/.ssh/authorized_keys
chmod -R 600 /var/lib/lxc/seth/rootfs/root/.ssh/
  • Configurer les sources APT
grep -iv envole /etc/apt/sources.list > /var/lib/lxc/seth/rootfs/etc/apt/sources.list
  • Démarrer le conteneur
lxc-start -n seth -d

Installation du module Seth dans le conteneur

Pour cette opération, nous avons suivi à la lettre les indications de la partie 2 Transformer le conteneur en serveur EOLE du tutoriel.

Configuration du module Seth (fichier joint)

Interfaces

Comme proposé dans le tutoriel :
  • la première carte réseau du module Seth a un accès direct au réseau externe (mode bridge)
  • la seconde carte est configurée pour accéder au bridge interne
Ce qui donne :
  • Général :
    • Nombre d'interfaces à activer : 2
  • Interface-0 :
    • Adresse IP de la carte : 192.168.0.27
    • Adresse IP de la passerelle par défaut : 192.168.0.1
  • Interface-1
  • Adresse IP de la carte : 10.0.3.54
Dans le cadre de la maquette, les 2 groupes variables suivants ont été configurées en 0/0 pour les 2 interfaces :
  • Adresse IP réseau autorisée pour les connexions SSH
  • Adresse IP réseau autorisée pour administrer le serveur

Autres paramètres

Les paramètres généraux ont été configurés pour être cohérents avec l'aca.scribe.
  • Nom DNS du réseau local : ac-test.fr
  • Nom de domaine académique (ex : ac-dijon) : ac-test
  • Adresse IP du serveur DNS : 192.168.232.2

NB : Pour plus de confort, penser à désactiver la variables Vérifier la complexité des mots de passe :o

Problèmes rencontrés

  • Samba 4.7 : normalement, le module Seth nécessite un Maj-Auto préalable à l'instance pour installer une version de Samba plus récente.
    Un soucis de packaging nous a obligé à revenir à la version 4.3 pour laquelle, il a fallu :
    • hacker le script : /usr/share/eole/postservice/25-manage-samba
    • trouver que la paquet libtevent0 installé via le dépôt supplémentaire faisait planter le samba 4.3 (segfault)
  • hostnamectl : la commande n'est pas fonctionnelle dans le conteneur (https://bugzilla.redhat.com/show_bug.cgi?id=1353831 ?), nous avons commenté son appel dans /usr/lib/eole/samba4.sh

Mise en place d'Eole-AD sur Scribe (fichier joint)

Installation et configuration

Utilisation de la procédure habituelle : installation du paquet + configuration + enregistrement des certificats d'autorité

Au niveau de la configuration, il faut penser que le Scribe ne peut communiquer avec le Seth que via le réseau interne.

  • onglet Active directory
    • Nom du serveur Active Directory : seth
    • Adresse IP du serveur Active Directory : 10.0.3.54 (NB : on peut également le déclarer en tant que serveur NTP dans l'onglet général)
    • Compte administrateur du domaine AD : Administrator
    • Synchroniser l'annuaire en LDAPS : oui

Je ne sais pas si c'est nécessaire mais j'ai déclaré explicitement : 10.0.3.54 -> seth.ac-test.fr en tant qu'hôte supplémentaire dans l'onglet Réseau avancé.

Problèmes rencontrés

  • firewall : la commande /usr/sbin/ferme.firewall appelée dans /usr/share/eole/posttemplate/00-eole-common casse l'accès aux conteneurs
    • La commande CreoleService bastion restart rétablit l'accès, on peut l'exécuter avant l'appel à /usr/share/eole/posttemplate/05-eolead
  • accès au conteneur : les commandes instance et reconfigure modifient des choses dans la configuration réseau (à creuser).
    • Après ces commandes, un redémarrage du service lxc-net semble nécessaire
    • Il faut également redémarrer le service lsc mais cela doit être une conséquence du fait que le conteneur n'est pas accessible lorsqu'il démarre

Tests effectués

Une fois la maquette fonctionnelle :
  • création d'un élève via l'EAD : OK
  • jonction manuelle d'une station au domaine "ac-test.fr" (en ayant paramétré le DNS sur 192.168.0.27) : OK
  • connexion élève : OK (son perso est monté sur U:)
  • installation du client Scribe (cliscribe-setup.exe)

=> Le client Scribe n'est pas fonctionnel (cf. message joint)

seth-conteneur.eol - Configuration du module Seth (1,63 ko) Joël Cuissinat, 13/02/2018 11:54

scribe.eol - Configuration du module Scribe (3,54 ko) Joël Cuissinat, 13/02/2018 12:05

controle.png Voir (64,1 ko) Joël Cuissinat, 13/02/2018 15:52