Seth-education entièrement centralisé avec importation AAF¶
Context¶
Nous sommes dans un cas où tous les serveurs sont centralisés.
Schéma rapide :
+--------+ +--------+
| DC 1 | <--> | DC 2 |
+--------+ | +--------+
v
+--------+
| file 1 |
+--------+
Ou éventuellement :
+--------+ +--------+
| DC 1 | <--> | DC 2 |
+--------+ | +--------+
,----------------,
v v
+--------+ +--------+
| file 1 | | file 2 |
+--------+ +--------+
répartition des rôles¶
DC1¶
- contrôleur de domaine primaire
- gestion des GPO
- importation des comptes AAF
- salt
DC2¶
- contrôleur de domaine de secours
Files¶
- propose l'ensemble de partages
- stock les documents utilisateurs
- accès EOP
Maquettage¶
Dans le cas 2 DC, 1 filer pour la partie pédagogie et 1 filer pour la partie administratif.
Dans l'environnement EOLE¶
VM¶
- aca.dc1-2.8.1-Daily
- aca.dc2-2.8.1-Daily
- aca.file-2.8.1-Daily
- aca.file1-2.8.1-Daily
DC 1¶
./mount.eole-ci-tests /mnt/eole-ci-tests/scripts/configure-vm.sh -M configeol Maj-Auto -C
apt-eole install eole-seth-aaf
apt-eole install eole-workstation
CreoleSet web_url $(hostname).ac-test.fr CreoleSet gpo_script_special_shares non CreoleSet aaf_first_username_idx non CreoleSet eop_profs_can_change_all_passwords oui CreoleSet ad_importation_type 'par établissement' CreoleSet ad_pedago_adm_split_top oui CreoleSet aaf_domainname_global_domain 'file.domseth.ac-test.fr' CreoleSet aaf_domainname_global_domain_admin 'file1.domseth.ac-test.fr' CreoleSet ead_support_multietab oui echo """# -*- coding: utf-8 -*- from creole.loader import creole_loader, config_save_values c=creole_loader(rw=True) c.creole.importation.aaf_domainname_uai.aaf_domainname_uai = ['00000001', '00000002'] c.creole.importation.aaf_domainname_uai.aaf_domainname_name = ['etb1', 'etb2'] c.creole.importation.aaf_domainname_uai.aaf_domainname_domain = ['file.domseth.ac-test.fr', 'file.domseth.ac-test.fr'] c.creole.importation.aaf_domainname_uai.aaf_domainname_domain_admin = ['file1.domseth.ac-test.fr', 'file1.domseth.ac-test.fr'] config_save_values(c, 'creole') """ > add_domain.py python3 add_domain.py instance
DC 2¶
LORSQUE L'INSTANCE DE DC1 EST FINI
./mount.eole-ci-tests /mnt/eole-ci-tests/scripts/configure-vm.sh -M configeol Maj-Auto -C instance
File¶
LORSQUE L'INSTANCE DE DC2 EST FINI
./mount.eole-ci-tests /mnt/eole-ci-tests/scripts/configure-vm.sh -M configeol Maj-Auto -C
apt-eole install eole-seth-education
CreoleSet web_url $(hostname).ac-test.fr echo """# -*- coding: utf-8 -*- from creole.loader import creole_loader, config_save_values c=creole_loader(rw=True) c.creole.synchronisation_aaf.aaf_synchronize = u'oui' c.creole.synchronisation_aaf.aaf_quota_student = 300 c.creole.synchronisation_aaf.aaf_quota_hard_student = 400 c.creole.synchronisation_aaf.aaf_quota_teacher = 1024 c.creole.synchronisation_aaf.aaf_quota_hard_teacher = 1224 c.creole.synchronisation_aaf.aaf_quota_administrative = 1024 c.creole.synchronisation_aaf.aaf_quota_hard_administrative = 1224 c.creole.synchronisation_aaf.aaf_synchronize_type = 'pédagogie' config_save_values(c, 'creole') """ > synchro.py python3 synchro.py scp root@dc1.ac-test.fr:/etc/eole/private/eole-seth-education*.password /etc/eole/private/ instance
File1¶
LORSQUE L'INSTANCE DE DC2 EST FINI
./mount.eole-ci-tests /mnt/eole-ci-tests/scripts/configure-vm.sh -M configeol Maj-Auto -C
apt-eole install eole-seth-education
CreoleSet web_url $(hostname).ac-test.fr echo """# -*- coding: utf-8 -*- from creole.loader import creole_loader, config_save_values c=creole_loader(rw=True) c.creole.synchronisation_aaf.aaf_synchronize = u'oui' c.creole.synchronisation_aaf.aaf_quota_student = 300 c.creole.synchronisation_aaf.aaf_quota_hard_student = 400 c.creole.synchronisation_aaf.aaf_quota_teacher = 1024 c.creole.synchronisation_aaf.aaf_quota_hard_teacher = 1224 c.creole.synchronisation_aaf.aaf_quota_administrative = 1024 c.creole.synchronisation_aaf.aaf_quota_hard_administrative = 1224 c.creole.synchronisation_aaf.aaf_synchronize_type = 'administratif' config_save_values(c, 'creole') """ > synchro.py python3 synchro.py scp root@dc1.ac-test.fr:/etc/eole/private/eole-seth-education*.password /etc/eole/private/ instance
Dans un environnement extérieur¶
Dans le cas 2 DC, 1 filer pour tout les fichiers.
VM¶
Installer trois SETH identique.
DC1¶
Installer eole-seth-aaf eole-workstation, configurer et instancier.
Exemple de configuration obtenu en faisant :
echo """from json import load
from pprint import pprint
from creole.loader import creole_loader
with open('/etc/eole/config.eol', 'r') as fh:
configeol = load(fh)
creole = creole_loader()
for key in sorted(configeol):
if key == '___version___':
continue
val = configeol[key]['val']
try:
creole.find_first(byname=key)
print(f'- {key} : {val}')
except:
pass
""" > c.py
python3 c.py
- aaf_domainname_domain : {'0': 'file.domseth.ac-test.fr', '1': 'file.domseth.ac-test.fr'}
- aaf_domainname_name : {'0': 'etb1', '1': 'etb2'}
- aaf_domainname_uai : ['00000001', '00000002']
- aaf_first_username_idx : non
- aaf_domainname_global_domain : file.domseth.ac-test.fr
- activer_ad_homes_share : non
- activer_ad_profiles_share : non
- activer_ad_zones : oui
- activer_bareos_dir : non
- ad_additional_dc : non
- ad_additional_dc_ip : ['192.168.0.6']
- ad_backend_store : tdb
- ad_force_domain_sid : non
- ad_homes_share_host : file
- ad_importation_type : par établissement
- ad_plaintext_secrets : non
- ad_profiles_share_host : file
- ad_server_netbios_name : dc1
- ad_server_role : controleur de domaine
- ad_zones : ['1.1.10', '2.1.10']
- ad_zones_defaut : oui
- adresse_ip_dns : ['192.168.0.1']
- adresse_ip_eth0 : 192.168.0.5
- adresse_ip_gw : 192.168.0.1
- bash_tmout : 0
- check_passwd : non
- domaine_messagerie_etab : domseth.ac-test.fr
- eop_profs_can_change_all_passwords : oui
- exim_relay_smtp : gateway.ac-test.fr
- frontend_ead_distant_eth0 : oui
- gpo_script_special_shares : non
- ip_admin_eth0 : ['0.0.0.0']
- ip_frontend_ead_distant_eth0 : ['0.0.0.0']
- ip_ssh_eth0 : ['0.0.0.0']
- libelle_etab : aca
- netmask_admin_eth0 : {'0': '0.0.0.0'}
- netmask_frontend_ead_distant_eth0 : {'0': '0.0.0.0'}
- netmask_ssh_eth0 : {'0': '0.0.0.0'}
- nom_academie : ac-test
- nom_domaine_local : domseth.ac-test.fr
- nom_machine : dc1
- numero_etab : 0000000A
- serveur_maj : ['test-eole.ac-dijon.fr']
- serveur_ntp : ['hestia.eole.lan']
- system_mail_from : None
- vm_swappiness : 0
- web_url : dc1.ac-test.fr
DC2¶
Configuré et instancié.
Exemple de configuration :
- activer_ad_homes_share : non
- activer_ad_profiles_share : non
- activer_ead_web : non
- activer_exim_relay_smtp : non
- ad_additional_dc : oui
- ad_additional_dc_force_site : non
- ad_additional_dc_ip : ['192.168.0.5']
- ad_backend_store : tdb
- ad_dc_sysvol_ref : 192.168.0.5
- ad_homes_share_host : file
- ad_plaintext_secrets : non
- ad_profiles_share_host : file
- ad_ro_dc : non
- ad_server_netbios_name : dc2
- ad_server_role : controleur de domaine
- adresse_ip_dns : ['192.168.0.1']
- adresse_ip_eth0 : 192.168.0.6
- adresse_ip_gw : 192.168.0.1
- bash_tmout : 0
- check_passwd : non
- domaine_messagerie_etab : domseth.ac-test.fr
- ip_admin_eth0 : ['0.0.0.0']
- ip_ssh_eth0 : ['0.0.0.0']
- libelle_etab : aca
- netmask_admin_eth0 : {'0': '0.0.0.0'}
- netmask_ssh_eth0 : {'0': '0.0.0.0'}
- nom_academie : ac-test
- nom_domaine_local : domseth.ac-test.fr
- nom_machine : dc2
- numero_etab : 0000000A
- serveur_maj : ['test-eole.ac-dijon.fr']
- serveur_ntp : ['hestia.eole.lan']
- ssh_eth0 : oui
- ssl_organization_unit_name : ['110 043 015', 'ac-test', 'dc2']
- system_mail_from : fromuser@ac-test.fr
- system_mail_to : touser@ac-test.fr
- vm_swappiness : 0
File¶
Installer eole-seth-education, configurer, copier les mots de passe des users eole-seth-education* avec par eexemple :
scp root@dc1.ac-test.fr:/etc/eole/private/eole-seth-education*.password /etc/eole/private/
Puis instancier.
Exemple de configuration :
- aaf_quota_administrative : 1024
- aaf_quota_hard_administrative : 1224
- aaf_quota_hard_student : 400
- aaf_quota_hard_teacher : 1224
- aaf_quota_student : 300
- aaf_quota_teacher : 1024
- aaf_synchronize : oui
- activer_bareos_dir : non
- activer_ead_web : non
- activer_exim_relay_smtp : non
- ad_server_netbios_name : file
- ad_server_role : membre
- adresse_ip_dns : ['192.168.0.5', '192.168.0.6', '192.168.0.1']
- adresse_ip_eth0 : 192.168.0.7
- adresse_ip_gw : 192.168.0.1
- bash_tmout : 0
- check_passwd : non
- domaine_messagerie_etab : domseth.ac-test.fr
- ead_support_multietab : oui
- frontend_ead_distant_eth0 : oui
- ip_admin_eth0 : ['0.0.0.0']
- ip_frontend_ead_distant_eth0 : ['0.0.0.0']
- ip_ssh_eth0 : ['0.0.0.0']
- libelle_etab : aca
- netmask_admin_eth0 : {'0': '0.0.0.0'}
- netmask_frontend_ead_distant_eth0 : {'0': '0.0.0.0'}
- netmask_ssh_eth0 : {'0': '0.0.0.0'}
- nom_academie : ac-test
- nom_domaine_local : domseth.ac-test.fr
- nom_machine : file
- numero_etab : 0000000A
- serveur_maj : ['test-eole.ac-dijon.fr']
- serveur_ntp : ['192.168.0.5', '192.168.0.6']
- ssh_eth0 : oui
- ssl_organization_unit_name : ['110 043 015', 'ac-test', 'file']
- system_mail_from : fromuser@domseth.ac-test.fr
- system_mail_to : touser@domseth.ac-test.fr
- vm_swappiness : 0
- web_url : file.ac-test.fr
Importation¶
Sur le DC1 :
export TDB_NO_FSYNC=1 /usr/share/eole/sbin/import-aaf.py /mnt/eole-ci-tests/dataset/aaf-mini/complet.zip complète /usr/share/eole/sbin/import-ad.py --enable_transaction
Sur les filers :
synchronize_aaf_directories --debug