Scribe+eole-ad+samba-ad-dc-conteneur » Historique » Version 18
Version 17 (Joël Cuissinat, 01/03/2018 17:18) → Version 18/26 (Joël Cuissinat, 01/03/2018 17:21)
h1. Scribe+eole-ad+samba-ad-dc-conteneur
{{>toc}}
On part d'un Scribe sur lequel on installe et on configure le service samba-ad-dc 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._
h2. Mise en œuvre de samba-ad-dc dans un conteneur LXC
Pour mettre en place le conteneur, nous sommes repartis de l'étude précédente ("Mise en œuvre du module Seth dans un conteneur LXC":https://dev-eole.ac-dijon.fr/projects/scribe/wiki/Scribe+eole-ad+Seth-conteneur#Mise-en-%C5%93uvre-du-module-Seth-dans-un-conteneur-LXC).
Toutes les étapes ont été intégrées afin d'obtenir une procédure automatisée (script joint).
h3. Détails du script
Comme dans l'étude précédente, le conteneur doit posséder 2 IP :
* une sur le bridge interne, actuellement forcée en 192.0.2.2
* une sur le réseau "pédagogique" qui est à choisir dans la même plage d'adresses que celle du module Scribe (exemple : 192.168.0.27 en "aca")
_NB : Comme cette dernière adresse est en mode bridge, le maître (module Scribe) ne la voit pas._
Le script exécute les étapes suivantes :
* installation des paquets nécessaires sur le maître
* génération d'un conteneur lxc "ubuntu"
* configuration du conteneur (réseau, clés SSH)
* pré-paramétrage des services (/etc/krb5.conf, /etc/nsswitch.conf, /etc/eole/samba4-vars.conf)
* installation des libraires et des scripts (samba4.sh, validSambaPassword, ...), FIXME : cette partie effectue actuellement des copies de fichiers depuis le maître ainsi que des *wget sur gitweb*
* configuration des sources.list EOLE et samba-4.7
* démarrage du conteneur
* installation des paquets samba-4.7
* configuration de samba
* initialisation du DC à l'aide des scripts du module Seth _(samba_instance)_
h3. Résultat
Une fois le script exécuté, le service samba-ad-dc est totalement fonctionnel dans le conteneur.
<pre>
ssh 192.0.2.2
service samba-ad-dc status
</pre>
Il est possible de joindre une station au domaine.
* Le DNS à utiliser est l'adresse qui a été choisie sur le réseau "pédagogique" (192.168.0.27 dans notre exemple, cette IP peut être retrouvée ssh sur le conteneur, IP eth0)
* Le nom du domaine à utiliser correspond au "Nom DNS du réseau local" du module Scribe (ac-test.fr dans notre exemple)
h2. Mise en place d'Eole-AD sur Scribe
Utilisation de la procédure habituelle : installation du paquet + configuration + enregistrement des certificats d'autorité.
h3. Installation
<pre>
apt-eole install eole-ad
</pre>
h3. Configuration
*Tous les paramètres à renseigner peuvent être calculés.*
Le dictionnaire joint pré-remplit tout ce qui doit l'être (FIXME : en l'état, cela écrase les "noms d'hôtes supplémentaires" ajoutés par les utilisateurs).
<pre>
wget https://dev-eole.ac-dijon.fr/attachments/download/2613/27_eolead_container.xml
</pre>
<pre>
mv 27_eolead_container.xml /usr/share/eole/creole/dicos/
</pre>
<pre>
gen_config
</pre>
-Adresse du serveur NTP → 192.0.2.2-
Copie de la clé secrète
<pre>
root@scribe:~# scp 192.0.2.2:/var/lib/samba/private/tls/ca.pem /root/
</pre>
<pre>
root@scribe:~# keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /root/ca.pem
</pre>
En une seule commande en passant par le filesystem du conteneur :
<pre>
keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /var/lib/lxc/addc/rootfs/var/lib/samba/private/tls/ca.pem
</pre>
h3. Instanciation
<pre>
instance
</pre>
h3. Débogage
Sur le maître
<pre>
LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://addc.ac-test.fr:636 -bDC=ac-test,DC=fr -DCN=admin,CN=Users,DC=ac-test,DC=fr -W
</pre>
h2. Problèmes rencontrés et pistes à creuser
h3. Réussite de l'intégration au domaine à l'instance du Scribe
En général, l'intégration au domaine échoue lors de l'instance.
Nous pensons que cela est du à des règles de pare-feu qui empêchent l'accès au bridge interne.
Visiblement, il faut s'inspirer du template /usr/share/eole/bastion/data/90-lxc_rules (projet project:eole-common).
=> adaptation en fichier joint
h3. Fonctionnement des services après redémarrage du serveur
Le démarrage du service lsc nécessite l'accès à l'annuaire Active Directory mais comme celui-ci est dans le conteneur, il démarre certainement trop tard...
h3. NTP signé
Un serveur NTP "signé" est nécessaire pour que les stations d'un domaine AD acceptent de se mettre à l'heure.
La maquette actuelle ne propose pas ce service (contrairement à un module Seth).
{{>toc}}
On part d'un Scribe sur lequel on installe et on configure le service samba-ad-dc 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._
h2. Mise en œuvre de samba-ad-dc dans un conteneur LXC
Pour mettre en place le conteneur, nous sommes repartis de l'étude précédente ("Mise en œuvre du module Seth dans un conteneur LXC":https://dev-eole.ac-dijon.fr/projects/scribe/wiki/Scribe+eole-ad+Seth-conteneur#Mise-en-%C5%93uvre-du-module-Seth-dans-un-conteneur-LXC).
Toutes les étapes ont été intégrées afin d'obtenir une procédure automatisée (script joint).
h3. Détails du script
Comme dans l'étude précédente, le conteneur doit posséder 2 IP :
* une sur le bridge interne, actuellement forcée en 192.0.2.2
* une sur le réseau "pédagogique" qui est à choisir dans la même plage d'adresses que celle du module Scribe (exemple : 192.168.0.27 en "aca")
_NB : Comme cette dernière adresse est en mode bridge, le maître (module Scribe) ne la voit pas._
Le script exécute les étapes suivantes :
* installation des paquets nécessaires sur le maître
* génération d'un conteneur lxc "ubuntu"
* configuration du conteneur (réseau, clés SSH)
* pré-paramétrage des services (/etc/krb5.conf, /etc/nsswitch.conf, /etc/eole/samba4-vars.conf)
* installation des libraires et des scripts (samba4.sh, validSambaPassword, ...), FIXME : cette partie effectue actuellement des copies de fichiers depuis le maître ainsi que des *wget sur gitweb*
* configuration des sources.list EOLE et samba-4.7
* démarrage du conteneur
* installation des paquets samba-4.7
* configuration de samba
* initialisation du DC à l'aide des scripts du module Seth _(samba_instance)_
h3. Résultat
Une fois le script exécuté, le service samba-ad-dc est totalement fonctionnel dans le conteneur.
<pre>
ssh 192.0.2.2
service samba-ad-dc status
</pre>
Il est possible de joindre une station au domaine.
* Le DNS à utiliser est l'adresse qui a été choisie sur le réseau "pédagogique" (192.168.0.27 dans notre exemple, cette IP peut être retrouvée ssh sur le conteneur, IP eth0)
* Le nom du domaine à utiliser correspond au "Nom DNS du réseau local" du module Scribe (ac-test.fr dans notre exemple)
h2. Mise en place d'Eole-AD sur Scribe
Utilisation de la procédure habituelle : installation du paquet + configuration + enregistrement des certificats d'autorité.
h3. Installation
<pre>
apt-eole install eole-ad
</pre>
h3. Configuration
*Tous les paramètres à renseigner peuvent être calculés.*
Le dictionnaire joint pré-remplit tout ce qui doit l'être (FIXME : en l'état, cela écrase les "noms d'hôtes supplémentaires" ajoutés par les utilisateurs).
<pre>
wget https://dev-eole.ac-dijon.fr/attachments/download/2613/27_eolead_container.xml
</pre>
<pre>
mv 27_eolead_container.xml /usr/share/eole/creole/dicos/
</pre>
<pre>
gen_config
</pre>
-Adresse du serveur NTP → 192.0.2.2-
Copie de la clé secrète
<pre>
root@scribe:~# scp 192.0.2.2:/var/lib/samba/private/tls/ca.pem /root/
</pre>
<pre>
root@scribe:~# keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /root/ca.pem
</pre>
En une seule commande en passant par le filesystem du conteneur :
<pre>
keytool -import -trustcacerts -keystore /etc/ssl/certs/java/cacerts -storepass changeit -noprompt -alias eole-ad -file /var/lib/lxc/addc/rootfs/var/lib/samba/private/tls/ca.pem
</pre>
h3. Instanciation
<pre>
instance
</pre>
h3. Débogage
Sur le maître
<pre>
LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://addc.ac-test.fr:636 -bDC=ac-test,DC=fr -DCN=admin,CN=Users,DC=ac-test,DC=fr -W
</pre>
h2. Problèmes rencontrés et pistes à creuser
h3. Réussite de l'intégration au domaine à l'instance du Scribe
En général, l'intégration au domaine échoue lors de l'instance.
Nous pensons que cela est du à des règles de pare-feu qui empêchent l'accès au bridge interne.
Visiblement, il faut s'inspirer du template /usr/share/eole/bastion/data/90-lxc_rules (projet project:eole-common).
=> adaptation en fichier joint
h3. Fonctionnement des services après redémarrage du serveur
Le démarrage du service lsc nécessite l'accès à l'annuaire Active Directory mais comme celui-ci est dans le conteneur, il démarre certainement trop tard...
h3. NTP signé
Un serveur NTP "signé" est nécessaire pour que les stations d'un domaine AD acceptent de se mettre à l'heure.
La maquette actuelle ne propose pas ce service (contrairement à un module Seth).