diff --git a/architecture.md b/architecture.md index a30dbb2..e9ee073 100644 --- a/architecture.md +++ b/architecture.md @@ -37,6 +37,20 @@ Liste des briques disponibles : Un système Publik installé ne comporte pas obligatoirement toutes les briques. + +Structure d’une brique +---------------------- + +Une brique Entrouvert est un paquet Debian standard issu d’un module +Python standard. C’est un logiciel libres dont vous pouvez obtenir et +modifier les sources selon vos besoins. Les fichiers d’installation sont +posés dans /var/lib/mabrique, et les fichiers de configuration sont +placés dans /etc/mabrique. Les services et les journaux des briques sont +pilotés par systemd. + +Pour certaines briques nous créons un lien symbolique depuis +/var/lib/mabrique/documents vers un montage NFS. + Infrastructure de base requise ------------------------------ @@ -64,6 +78,35 @@ dont la puissance et les volumes disques peuvent être modifiés *à chaud*. La technologie de containers apporte cette souplesse avec un minimum de perte de puissance. +Chemin d'une requête +-------------------- + +Une requête Publik chemine par les services suivants : + +proxy : + + - reçoit la requête et la transmet vers un serveur d’application, + - est en charge de la terminaison SSL (et dispose de certificat qui + couvre l'ensemble des systèmes), + - est en charge de la répartition de la charge et la la tolérance + aux pannes. + +web1 et web2 : + +- ont des installations identiques au niveau logiciel, +- disposent des composants Publik, +- interrogent la base de donnée et transfèrent les fichiers en + fonction des niveaux d’accès des utilisateurs. + +Postgres : + +- enregistre et restitue les données des applications, +- il est courant d’utiliser une installation à deux machines + identiques avec une réplication de type master/slave. + +NFS : + +- fournit l’interface de stockage pour les fichiers partagés. ### Machine PostgreSQL Chaque brique utilise une ou plusieurs bases de données PostgreSQL, il diff --git a/installation.md b/installation.md index 3baa682..c64c23f 100644 --- a/installation.md +++ b/installation.md @@ -7,11 +7,6 @@ particuliers. Rappel de l’architecture ------------------------ - -Vous trouverez une documentation complète et spécifique à l’architecture -de Publik dans le document intitulé : *Publik – Architecture technique*. -Les notes qui suivent en donnent un aperçu. - Une infrastructure type de Publik est composée de plusieurs machines (une installation sur machine unique reste possible): @@ -20,32 +15,6 @@ installation sur machine unique reste possible): - un serveur de base de données *sql* (Postgres) - un serveur de fichier (partage NFS) -Une requête Publik chemine par les services suivants : - -proxy : - -- reçoit la requête et la transmet vers un serveur d’application, -- est en charge de la terminaison SSL (et dispose de certificat qui - couvre l'ensemble des systèmes), -- est en charge de la répartition de la charge et la la tolérance - aux pannes. - -web1 et web2 : - -- ont des installations identiques au niveau logiciel, -- disposent des composants Publik, -- interrogent la base de donnée et transfèrent les fichiers en - fonction des niveaux d’accès des utilisateurs. - -Postgres : - -- enregistre et restitue les données des applications, -- il est courant d’utiliser une installation à deux machines - identiques avec une réplication de type master/slave. - -NFS : - -- fournit l’interface de stockage pour les fichiers partagés. Liste des modules applicatifs potentiels de Publik : @@ -74,25 +43,43 @@ composants. Typiquement : - portail usager (composant combo) : - moncompte.macollectivitemacollectivite.fr, + moncompte.macollectivite.fr, - portail agents (composant combo) : - agents-moncompte.macollectivitemacollectivite.fr, + agents-moncompte.macollectivite.fr, - démarches (composant wcs/wcs-au-quotidien) : - demarches-moncompte.macollectivitemacollectivite.fr, + demarches-moncompte.macollectivite.fr, - fournisseur d'identités (composant authentic) : - connexion-moncompte.macollectivitemacollectivite.fr, + connexion-moncompte.macollectivite.fr, - hub de webservice (composant passerelle) : - passerelle-moncompte.macollectivitemacollectivite.fr, + passerelle-moncompte.macollectivite.fr, - porte document (composant fargo) : - portedoc-moncompte.macollectivitemacollectivite.fr, + portedoc-moncompte.macollectivite.fr, -Toutes ces entrées DNS doivent pointer vers le proxy de répartition de charge. -(dans le cas d'une installation avec répartition de charge) +Par exemple voici à quoi pourraient ressembler les entrées d'un serveur Bind: + + publik A a.b.c.d ; addresse IP de «publik» + portail CNAME publik ; portail usage (brique: combo) + backoffice CNAME publik ; portail agent (brique: combo) + connexion CNAME publik ; fournisseur d'identités (brique: authentic) + demarches CNAME publik ; téléservices (brique: wcs) + passerelle CNAME publik ; hub de webservices (brique: passerelle) + hobo CNAME publik ; système de déploiement (brique: hobo) + +Toutes ces entrées DNS doivent pointer vers le proxy de répartition de charge +(dans le cas d'une installation avec répartition de charge). Par ailleurs, les serveurs applicatifs doivent impérativement avoir un fichier */etc/hosts* consistant. -### Certificats SSL valides +### Certificat X509 + +Publik ne fonctionne qu'en mode HTTPS. + +Un ou plusieurs certificats x509 valides et reconnus doivent être disponibles qui couvrent tous les noms des briques qui seront installées. +Dans la suite de la documentation, un certificat est disponible : + + * clé publique certifiée : /etc/ssl/certs/cert-example.pem + * clé privée : /etc/ssl/private/cert-example.key HAProxy doit disposer du ou des certificats X509 valides pour chacun de ces domaines ; les certificats doivent être reconnus par des autorités @@ -106,31 +93,18 @@ heure. Les systèmes récent utilisent *systemd-timesyncd *par défaut. ### Envois des emails -*web1* et *web2* doivent disposer d'un MTA local avec le port SMTP -ouvert et capable d'expédier des mails vers tout Internet, en passant -éventuellement par un relais. Les mails seront envoyés avec le domaine « -@macollectivitemacollectivite.fr ». Nous recommandons vivement de les -relayer via un smarthost officiel de votre réseau. +Les serveurs applicatifs doivent disposer d'un MTA local (par exemple +*exim4-daemon-light*) avec le port SMTP ouvert et capable d'expédier des mails +vers tout Internet, en passant éventuellement par un relais. Les mails seront +envoyés avec le domaine « @macollectivite.fr ». Nous recommandons +vivement de les relayer via un smarthost officiel de votre réseau. ### Configuration de la localisation Sur toutes les machines il est nécessaire de reconfigurer *locales* pour *fr\_FR.UTF-8* : -\# dpkg-reconfigure locales - -Structure d’une brique ----------------------- - -Une brique Entrouvert est un paquet Debian standard issu d’un module -Python standard. C’est un logiciel libres dont vous pouvez obtenir et -modifier les sources selon vos besoins. Les fichiers d’installation sont -posés dans /var/lib/mabrique, et les fichiers de configuration sont -placés dans /etc/mabrique. Les services et les journaux des briques sont -pilotés par systemd. - -Pour certaines briques nous créons un lien symbolique depuis -/var/lib/mabrique/documents vers un montage NFS. + dpkg-reconfigure locales Configuration des dépôts logiciels ---------------------------------- @@ -155,118 +129,83 @@ Les machines doivent disposer des dépôts **jessie** et Ajoutons aussi les dépôts Entr'ouvert et RabbitMQ par la création de */etc/apt/sources.list.d/eo-prod.list :* -deb http://deb.entrouvert.org/ jessie main - -deb http://www.rabbitmq.com/debian/ testing main + deb http://deb.entrouvert.org/ jessie main + deb http://www.rabbitmq.com/debian/ testing main Ajoutons les clés correspondantes : -\# wget -O- https://deb.entrouvert.org/entrouvert.gpg | apt-key add - - -\# wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | + wget -O- https://deb.entrouvert.org/entrouvert.gpg | apt-key add - + wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc | apt-key add - - -\# apt update + apt update Pricisons les paquets qu'on veut tirer de jessie-backports en éditant */etc/apt/preferences.d/backports :* -Package: python-django + Package: python-django + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin: release a=jessie-backports + Package: python-django-common + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin-Priority: 900 + Package: gunicorn + Pin: release a=jessie-backports + Pin-Priority: 900 -Package: python-django-common + Package: python-pyasn1 + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin: release a=jessie-backports + Package: python-requests + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin-Priority: 900 + Package: python-urllib3 + Pin: release a=jessie-backports + Pin-Priority: 900 -Package: gunicorn + Package: python-cryptography + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin: release a=jessie-backports + Package: python-ndg-httpsclient + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin-Priority: 900 + Package: python-openssl + Pin: release a=jessie-backports + Pin-Priority: 900 -Package: python-pyasn1 + Package: python-jwcrypto + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin: release a=jessie-backports + Package: python-setuptools + Pin: release a=jessie-backports + Pin-Priority: 900 -Pin-Priority: 900 - -Package: python-requests - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-urllib3 - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-cryptography - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-ndg-httpsclient - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-openssl - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-jwcrypto - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-setuptools - -Pin: release a=jessie-backports - -Pin-Priority: 900 - -Package: python-pkg-resources - -Pin: release a=jessie-backports - -Pin-Priority: 900 + Package: python-pkg-resources + Pin: release a=jessie-backports + Pin-Priority: 900 ### Installation des paquets de base Outillage utile pour l'installation et plus tard pour le support et la maintenance : -\# apt install postgresql-client \# pour création utilisateurs et bases -de données dans postgresql - -\# apt install bsd-mailx \# pour test de l'envoi de mails - -\# apt install zip \# pour la création du squelette de site w.c.s. - -\# apt install curl wget \# pour les tests/debug locaux - -\# apt install ipython ltrace strace psmisc tcpdump tshark locate \# -pour des debug applicatifs - -\# apt install ca-certificates-entrouvert \# connexion au LDAP EO + apt install postgresql-client \# pour création utilisateurs et bases de données dans postgresql + apt install bsd-mailx \# pour test de l'envoi de mails + apt install zip \# pour la création du squelette de site w.c.s. + apt install curl wget \# pour les tests/debug locaux + apt install ipython ltrace strace psmisc tcpdump tshark locate \# pour des debug applicatifs + apt install ca-certificates-entrouvert \# connexion au LDAP EO Composants additionnels nécessaires pour les applications : -\# apt install libreoffice \# pour génération de documents dans wcs - -\# apt install publik-base-theme \# système de thème + apt install libreoffice \# pour génération de documents dans wcs + apt install publik-base-theme \# système de thème Création des bases de données ----------------------------- @@ -282,7 +221,7 @@ cas échéant. Publik nécessite PostgreSQL en version 9 (>9.4 recommandée). Vérifier que les extensions PostgreSQL sont bien activées : -\# apt install postgresql-contrib + apt install postgresql-contrib ### Création des bases @@ -294,10 +233,9 @@ Chaque composant Publik doit disposer : Principe pour le composant *combo :* -CREATE USER combo PASSWORD 'indiquer-ici-le-mot-de-passe-pour-combo'; + CREATE USER combo PASSWORD 'indiquer-ici-le-mot-de-passe-pour-combo'; -CREATE DATABASE combo WITH OWNER = combo TEMPLATE = template0 -LC\_COLLATE = 'fr\_FR.UTF\_8' LC\_CTYPE = 'fr\_FR.UTF-8'; + CREATE DATABASE combo WITH OWNER = combo TEMPLATE = template0 LC\_COLLATE = 'fr\_FR.UTF\_8' LC\_CTYPE = 'fr\_FR.UTF-8'; Remarque : template0 et LC\_COLLATE et LC\_CTYPE nécessaires parce que template1 est en en\_US.UTF-8. @@ -333,58 +271,35 @@ et web2. Voici un script pour faire cela sur web1 et web2 : -\#!/bin/sh + \#!/bin/sh -uid=2100 + uid=2100 -for user in hobo authentic-multitenant wcs wcs-au-quotidien passerelle -combo fargo welco chrono corbo bijoe mandayejs - -do - - echo "create group \$user (\$uid)" - - addgroup --system --gid \$uid \$user - - echo "create user \$user (\$uid)" - - adduser --disabled-password --system --uid \$uid --gecos "\$user -daemon" --ingroup \$user --no-create-home --home /var/lib/\$user \$user - - uid=\$((\$uid+1)) - -done + for user in hobo authentic-multitenant wcs wcs-au-quotidien passerelle combo fargo welco chrono corbo bijoe mandayejs + do + echo "create group \$user (\$uid)" + addgroup --system --gid \$uid \$user + echo "create user \$user (\$uid)" + adduser --disabled-password --system --uid \$uid --gecos "\$user daemon" --ingroup \$user --no-create-home --home /var/lib/\$user \$user uid=\$((\$uid+1)) + done Résultat dans /etc/passwd: -... - -hobo:x:2101:2101:hobo daemon,,,:/var/lib/hobo:/bin/false - -authentic-multitenant:x:2102:2102:authentic2-multitenant -daemon,,,:/var/lib/authentic2-multitenant:/bin/false - -wcs:x:2103:2103:wcs daemon,,,:/var/lib/wcs:/bin/false - -wcs-au-quotidien:x:2104:2104:wcs-au-quotidien -daemon,,,:/var/lib/wcs-au-quotidien:/bin/false - -passerelle:x:2105:2105:passerelle -daemon,,,:/var/lib/passerelle:/bin/false - -combo:x:2106:2106:combo daemon,,,:/var/lib/combo:/bin/false - -fargo:x:2107:2107:fargo daemon,,,:/var/lib/fargo:/bin/false - -welco:x:2108:2108:welco daemon,,,:/var/lib/welco:/bin/false - -chrono:x:2109:2109:chrono daemon,,,:/var/lib/chrono:/bin/false - -corbo:x:2110:2110:corbo daemon,,,:/var/lib/corbo:/bin/false - -bijoe:x:2111:2111:bijoe daemon,,,:/var/lib/bijoe:/bin/false - -mandayejs:x:2112:2112:mandayejs daemon,,,:/var/lib/mandayejs:/bin/false + hobo:x:2101:2101:hobo daemon,,,:/var/lib/hobo:/bin/false + authentic-multitenant:x:2102:2102:authentic2-multitenant + daemon,,,:/var/lib/authentic2-multitenant:/bin/false + wcs:x:2103:2103:wcs daemon,,,:/var/lib/wcs:/bin/false + wcs-au-quotidien:x:2104:2104:wcs-au-quotidien + daemon,,,:/var/lib/wcs-au-quotidien:/bin/false + passerelle:x:2105:2105:passerelle + daemon,,,:/var/lib/passerelle:/bin/false + combo:x:2106:2106:combo daemon,,,:/var/lib/combo:/bin/false + fargo:x:2107:2107:fargo daemon,,,:/var/lib/fargo:/bin/false + welco:x:2108:2108:welco daemon,,,:/var/lib/welco:/bin/false + chrono:x:2109:2109:chrono daemon,,,:/var/lib/chrono:/bin/false + corbo:x:2110:2110:corbo daemon,,,:/var/lib/corbo:/bin/false + bijoe:x:2111:2111:bijoe daemon,,,:/var/lib/bijoe:/bin/false + mandayejs:x:2112:2112:mandayejs daemon,,,:/var/lib/mandayejs:/bin/false Paramétrage du partage de fichiers ---------------------------------- @@ -396,11 +311,11 @@ Ajouter pour les services liés à Publik un supplément Exemple pour Combo : -\# cat /etc/systemd/system/combo.service.d/wait-for-mnt-data.conf + cat /etc/systemd/system/combo.service.d/wait-for-mnt-data.conf -\[Unit\] + \[Unit\] -RequiresMountsFor=/srv/nfs + RequiresMountsFor=/srv/nfs Faire de même avec : @@ -538,17 +453,17 @@ DATABASES\['default'\]\['HOST'\] = 'sql-prod' DATABASES\['default'\]\['PORT'\] = '5432' -Toujours dans */etc/combo/settings.d/macollectivitemacollectivite.py*, +Toujours dans */etc/combo/settings.d/macollectivite.py*, nous configurons l'envoi des traces d'erreur par l'ajout de ces lignes en fin de fichier : ADMINS = (('Admin EO', -'admin+prod.macollectivitemacollectivite.combo@entrouvert.com'),) +'admin+prod.macollectivite.combo@entrouvert.com'),) -EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivitemacollectivite combo\] ' +EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivite combo\] ' SERVER\_EMAIL = -['admin+prod.](mailto:'admin+prod.maville.combo@entrouvert.com)macollectivitemacollectivite[.combo@entrouvert.com](mailto:'admin+prod.maville.combo@entrouvert.com)' +['admin+prod.](mailto:'admin+prod.maville.combo@entrouvert.com)macollectivite[.combo@entrouvert.com](mailto:'admin+prod.maville.combo@entrouvert.com)' On installe ensuite le logiciel *combo* en (indiquant qu'il ne faut pas suivre la recommandation d'installer PostgreSQL) : @@ -604,7 +519,7 @@ La procédure est la même que pour Combo L'accès à la base de données de Passerelle se décrit dans */etc/passerelle/settings.d/\*.py* : -\# extrait de /etc/passerelle/settings.d/macollectivitemacollectivite.py +\# extrait de /etc/passerelle/settings.d/macollectivite.py DATABASES\['default'\]\['NAME'\] = 'passerelle' @@ -618,18 +533,18 @@ DATABASES\['default'\]\['HOST'\] = 'sql-prod' DATABASES\['default'\]\['PORT'\] = '5432' Toujours dans -*/etc/passerelle/settings.d/macollectivitemacollectivite.py*, +*/etc/passerelle/settings.d/macollectivite.py*, configuration pour l'envoi des traces d'erreur par l'ajout de ces lignes en fin de fichier : ADMINS = (('Admin EO', -'admin+prod.macollectivitemacollectivite.passerelle@entrouvert.com'),) +'admin+prod.macollectivite.passerelle@entrouvert.com'),) -EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivitemacollectivite +EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivite passerelle\] ' SERVER\_EMAIL = -'admin+prod.macollectivitemacollectivite.passerelle@entrouvert.com' +'admin+prod.macollectivite.passerelle@entrouvert.com' Nous pouvons ensuite installer le composant : @@ -644,7 +559,7 @@ Reprendre la même procédure que pour les autres composants, en adaptant le nom de la brique, c'est-à-dire : 1. Configuration de l'accès SQL et du mail dans - */etc/fargo/settings.d/macollectivitemacollectivite.py* + */etc/fargo/settings.d/macollectivite.py* 2. Installation du composant : \# apt install fargo postgresql- @@ -658,7 +573,7 @@ Reprendre la même procédure que pour les autres composants, en adaptant le nom de la brique, c'est-à-dire : 1. Configuration de l'accès SQL et du mail dans - */etc/hobo/settings.d/macollectivitemacollectivite.py* + */etc/hobo/settings.d/macollectivite.py* 2. Installation du composant : \# apt install hobo postgresql- @@ -736,13 +651,13 @@ DATABASES\['default'\]\['PORT'\] = '5432' \# ... ADMINS = (('Admin EO', -'admin+prod.macollectivitemacollectivite.authentic@entrouvert.com'),) +'admin+prod.macollectivite.authentic@entrouvert.com'),) -EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivitemacollectivite +EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivite authentic\] ' SERVER\_EMAIL = -'admin+prod.macollectivitemacollectivite.authentic@entrouvert.com' +'admin+prod.macollectivite.authentic@entrouvert.com' Une fois ces configurations effectués, il faut remettre le service en place et lui demander de construire la base (update) : @@ -799,7 +714,7 @@ Reprendre la même procédure que pour les autres composants, en adaptant le nom de la brique, c'est-à-dire : 1. Configuration de l'accès SQL et du mail dans - */etc/wcs/settings.d/macollectivitemacollectivite.py* + */etc/wcs/settings.d/macollectivite.py* 2. Installation du composant : \# apt install wcs postgresql- @@ -812,7 +727,7 @@ Frontal nginx ### Installation de Nginx -*apt install nginx* + apt install nginx ... rien de plus. Nous installons la version de Debian 8, mais la version jessie-backports est possible aussi si nécessaire. @@ -822,39 +737,38 @@ version jessie-backports est possible aussi si nécessaire. Mise en place d'un format de log avancé (qui affiche le tenant) dans */etc/nginx/conf.d/log\_formats.conf* : -\# /etc/nginx/conf.d/log\_formats.conf + \# /etc/nginx/conf.d/log\_formats.conf -log\_format combined\_full '\$remote\_addr - \$remote\_user -\[\$time\_local\] "\$request" ' + log\_format combined\_full '\$remote\_addr - \$remote\_user + \[\$time\_local\] "\$request" ' - '\$status \$body\_bytes\_sent "\$http\_referer" ' + '\$status \$body\_bytes\_sent "\$http\_referer" ' - '"\$http\_user\_agent" "\$host" \[\$request\_time ms\]'; + '"\$http\_user\_agent" "\$host" \[\$request\_time ms\]'; -log\_format with\_request\_time '\$remote\_addr - \$remote\_user -\[\$time\_local\] \[\$request\_time ms\] ' + log\_format with\_request\_time '\$remote\_addr - \$remote\_user + \[\$time\_local\] \[\$request\_time ms\] ' - '"\$request" \$status \$body\_bytes\_sent ' + '"\$request" \$status \$body\_bytes\_sent ' - '"\$http\_referer" "\$http\_user\_agent"'; + '"\$http\_referer" "\$http\_user\_agent"'; robots.txt et favicon communs dans -*/etc/nginx/includes/macollectivitemacollectivite-common.conf* : +*/etc/nginx/includes/macollectivite-common.conf* : -location /favicon.ico { alias -/var/www/html/favicon-macollectivitemacollectivite.ico; } + location /favicon.ico { alias /var/www/html/favicon-macollectivite.ico; } -location /robots.txt { alias /var/www/html/robots.txt; } + location /robots.txt { alias /var/www/html/robots.txt; } (le favicon.ico est un copie de -[http://www.](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico)macollectivitemacollectivite[.fr/uploads/Image/73/SIT\_](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico)macollectivitemacollectivite[\_603\_favicon-.ico](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico), +[http://www.](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico)macollectivite[.fr/uploads/Image/73/SIT\_](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico)macollectivitemacollectivite[\_603\_favicon-.ico](http://www.nanterre.fr/uploads/Image/73/SIT_NANTERRE_603_favicon-.ico), le robots.txt interdit toute indexation) Pour résoudre [\#18476](https://dev.entrouvert.org/issues/18476), ajouter ce fichier : */etc/nginx/conf.d/client-max-body-size.conf* avec ce contenu : -client\_max\_body\_size 200M; + client\_max\_body\_size 200M; Il faut éventuellement adapter la configuration du HAProxy pour accepter les grosses requêtes. @@ -878,118 +792,102 @@ server\_name du portail usagers dans le virtualhost "combo". #### Combo -server { + server { - listen 80; + listen 80; - server\_name \~\^moncompte.\* \# portail usagers ; selon le nom du site -(attention, différent de la pré-prod) + server\_name \~\^moncompte.\* \# portail usagers ; selon le nom du site + (attention, différent de la pré-prod) - \~\^agents-.\*; \# portail agents ; selon le nom du site + \~\^agents-.\*; \# portail agents ; selon le nom du site - include includes/macollectivitemacollectivite-common.conf; + include includes/macollectivite-common.conf; - access\_log /var/log/nginx/combo-access.log combined\_full; + access\_log /var/log/nginx/combo-access.log combined\_full; - error\_log /var/log/nginx/combo-error.log; + error\_log /var/log/nginx/combo-error.log; - location \~ \^/static/(.+)\$ { + location \~ \^/static/(.+)\$ { - root /; + root /; - try\_files /var/lib/combo/tenants/\$host/static/\$1 + try\_files /var/lib/combo/tenants/\$host/static/\$1 + /var/lib/combo/tenants/\$host/theme/static/\$1 - /var/lib/combo/tenants/\$host/theme/static/\$1 + /var/lib/combo/collectstatic/\$1 - /var/lib/combo/collectstatic/\$1 + =404; - =404; + add\_header Access-Control-Allow-Origin \*; + } - add\_header Access-Control-Allow-Origin \*; + location \~ \^/media/(.+)\$ { + alias /var/lib/combo/tenants/\$host/media/\$1; + } - } + location / { - location \~ \^/media/(.+)\$ { + proxy\_pass http://unix:/run/combo/combo.sock; + proxy\_set\_header Host \$http\_host; + proxy\_set\_header X-Forwarded-SSL on; + proxy\_set\_header X-Forwarded-Protocol ssl; + proxy\_set\_header X-Forwarded-Proto https; + proxy\_set\_header X-Real-IP \$remote\_addr; + proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - alias /var/lib/combo/tenants/\$host/media/\$1; + } - } - - location / { - - proxy\_pass http://unix:/run/combo/combo.sock; - - proxy\_set\_header Host \$http\_host; - - proxy\_set\_header X-Forwarded-SSL on; - - proxy\_set\_header X-Forwarded-Protocol ssl; - - proxy\_set\_header X-Forwarded-Proto https; - - proxy\_set\_header X-Real-IP \$remote\_addr; - - proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - - } - -} + } #### Hobo Même modèle que Combo : -server { + server { - listen 80; + listen 80; - server\_name \~\^hobo-.\*; + server\_name \~\^hobo-.\*; - include includes/macollectivitemacollectivite-common.conf; + include includes/macollectivite-common.conf; - access\_log /var/log/nginx/hobo-access.log combined\_full; + access\_log /var/log/nginx/hobo-access.log combined\_full; - error\_log /var/log/nginx/hobo-error.log; + error\_log /var/log/nginx/hobo-error.log; - location \~ \^/static/(.+)\$ { + location \~ \^/static/(.+)\$ { - root /; + root /; - try\_files /var/lib/hobo/tenants/\$host/static/\$1 + try\_files /var/lib/hobo/tenants/\$host/static/\$1 - /var/lib/hobo/tenants/\$host/theme/static/\$1 + /var/lib/hobo/tenants/\$host/theme/static/\$1 - /var/lib/hobo/collectstatic/\$1 + /var/lib/hobo/collectstatic/\$1 - =404; + =404; - add\_header Access-Control-Allow-Origin \*; + add\_header Access-Control-Allow-Origin \*; - } + } - location \~ \^/media/(.+)\$ { + location \~ \^/media/(.+)\$ { - alias /var/lib/hobo/tenants/\$host/media/\$1; + alias /var/lib/hobo/tenants/\$host/media/\$1; - } + } - location / { + location / { - proxy\_pass http://unix:/run/hobo/hobo.sock; + proxy\_pass http://unix:/run/hobo/hobo.sock; + proxy\_set\_header Host \$http\_host; + proxy\_set\_header X-Forwarded-SSL on; + proxy\_set\_header X-Forwarded-Protocol ssl; + proxy\_set\_header X-Forwarded-Proto https; + proxy\_set\_header X-Real-IP \$remote\_addr; + proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - proxy\_set\_header Host \$http\_host; - - proxy\_set\_header X-Forwarded-SSL on; - - proxy\_set\_header X-Forwarded-Protocol ssl; - - proxy\_set\_header X-Forwarded-Proto https; - - proxy\_set\_header X-Real-IP \$remote\_addr; - - proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - - } + } } @@ -998,230 +896,204 @@ server { Même modèle que Combo, mais aucune diffusion de /media (il s'agit de données privées dans Passerelle). -server { + server { - listen 80; + listen 80; - server\_name \~\^passerelle-.\*; + server\_name \~\^passerelle-.\*; - include includes/macollectivitemacollectivite-common.conf; + include includes/macollectivite-common.conf; - access\_log /var/log/nginx/passerelle-access.log combined\_full; + access\_log /var/log/nginx/passerelle-access.log combined\_full; - error\_log /var/log/nginx/passerelle-error.log; + error\_log /var/log/nginx/passerelle-error.log; - location \~ \^/static/(.+)\$ { + location \~ \^/static/(.+)\$ { - root /; + root /; - try\_files /var/lib/passerelle/tenants/\$host/static/\$1 + try\_files /var/lib/passerelle/tenants/\$host/static/\$1 - /var/lib/passerelle/tenants/\$host/theme/static/\$1 + /var/lib/passerelle/tenants/\$host/theme/static/\$1 - /var/lib/passerelle/collectstatic/\$1 + /var/lib/passerelle/collectstatic/\$1 - =404; + =404; - add\_header Access-Control-Allow-Origin \*; + add\_header Access-Control-Allow-Origin \*; - } + } - location / { + location / { - proxy\_pass http://unix:/run/passerelle/passerelle.sock; + proxy\_pass http://unix:/run/passerelle/passerelle.sock; + proxy\_set\_header Host \$http\_host; + proxy\_set\_header X-Forwarded-SSL on; + proxy\_set\_header X-Forwarded-Protocol ssl; + proxy\_set\_header X-Forwarded-Proto https; + proxy\_set\_header X-Real-IP \$remote\_addr; + proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - proxy\_set\_header Host \$http\_host; + } - proxy\_set\_header X-Forwarded-SSL on; - - proxy\_set\_header X-Forwarded-Protocol ssl; - - proxy\_set\_header X-Forwarded-Proto https; - - proxy\_set\_header X-Real-IP \$remote\_addr; - - proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - - } - -} + } #### fargo Même modèle que Combo, mais aucune diffusion de /media (il s'agit des fichiers usagers privés dans Fargo). -server { + server { - listen 80; + listen 80; - server\_name \~\^portedoc-.\*; + server\_name \~\^portedoc-.\*; - include includes/macollectivitemacollectivite-common.conf; + include includes/macollectivite-common.conf; - access\_log /var/log/nginx/fargo-access.log combined\_full; + access\_log /var/log/nginx/fargo-access.log combined\_full; - error\_log /var/log/nginx/fargo-error.log; + error\_log /var/log/nginx/fargo-error.log; - location \~ \^/static/(.+)\$ { + location \~ \^/static/(.+)\$ { - root /; + root /; - try\_files /var/lib/fargo/tenants/\$host/static/\$1 + try\_files /var/lib/fargo/tenants/\$host/static/\$1 - /var/lib/fargo/tenants/\$host/theme/static/\$1 + /var/lib/fargo/tenants/\$host/theme/static/\$1 - /var/lib/fargo/collectstatic/\$1 + /var/lib/fargo/collectstatic/\$1 - =404; + =404; - add\_header Access-Control-Allow-Origin \*; + add\_header Access-Control-Allow-Origin \*; - } + } - location / { + location / { - proxy\_pass http://unix:/run/fargo/fargo.sock; + proxy\_pass http://unix:/run/fargo/fargo.sock; + proxy\_set\_header Host \$http\_host; + proxy\_set\_header X-Forwarded-SSL on; + proxy\_set\_header X-Forwarded-Protocol ssl; + proxy\_set\_header X-Forwarded-Proto https; + proxy\_set\_header X-Real-IP \$remote\_addr; + proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - proxy\_set\_header Host \$http\_host; + } - proxy\_set\_header X-Forwarded-SSL on; - - proxy\_set\_header X-Forwarded-Protocol ssl; - - proxy\_set\_header X-Forwarded-Proto https; - - proxy\_set\_header X-Real-IP \$remote\_addr; - - proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - - } - -} + } #### Authentic Comme Combo, sans diffusion des /media, et en utilisant le nom du service *authentic2-multitenant.* -server { + server { - listen 80; + listen 80; - server\_name \~\^connexion-.\*; + server\_name \~\^connexion-.\*; - include includes/macollectivitemacollectivite-common.conf; + include includes/macollectivite-common.conf; - access\_log /var/log/nginx/authentic2-multitenant-access.log -combined\_full; + access\_log /var/log/nginx/authentic2-multitenant-access.log + combined\_full; - error\_log /var/log/nginx/authentic2-multitenant-error.log; + error\_log /var/log/nginx/authentic2-multitenant-error.log; - location \~ \^/static/(.+)\$ { + location \~ \^/static/(.+)\$ { - root /; + root /; - try\_files /var/lib/authentic2-multitenant/tenants/\$host/static/\$1 + try\_files /var/lib/authentic2-multitenant/tenants/\$host/static/\$1 - /var/lib/authentic2-multitenant/tenants/\$host/theme/static/\$1 + /var/lib/authentic2-multitenant/tenants/\$host/theme/static/\$1 - /var/lib/authentic2-multitenant/collectstatic/\$1 + /var/lib/authentic2-multitenant/collectstatic/\$1 - =404; + =404; - add\_header Access-Control-Allow-Origin \*; + add\_header Access-Control-Allow-Origin \*; - } + } - location / { + location / { - proxy\_pass -http://unix:/run/authentic2-multitenant/authentic2-multitenant.sock; + proxy\_pass http://unix:/run/authentic2-multitenant/authentic2-multitenant.sock; + proxy\_set\_header Host \$http\_host; + proxy\_set\_header X-Forwarded-SSL on; + proxy\_set\_header X-Forwarded-Protocol ssl; + proxy\_set\_header X-Forwarded-Proto https; + proxy\_set\_header X-Real-IP \$remote\_addr; + proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - proxy\_set\_header Host \$http\_host; + } - proxy\_set\_header X-Forwarded-SSL on; - - proxy\_set\_header X-Forwarded-Protocol ssl; - - proxy\_set\_header X-Forwarded-Proto https; - - proxy\_set\_header X-Real-IP \$remote\_addr; - - proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - - } - -} + } #### w.c.s. -server { + server { - listen 80; + listen 80; - server\_name \~\^demarches-.\*; + server\_name \~\^demarches-.\*; - include includes/macollectivitemacollectivite-common.conf; + include includes/macollectivite-common.conf; - access\_log /var/log/nginx/wcs-access.log combined\_full; + access\_log /var/log/nginx/wcs-access.log combined\_full; - error\_log /var/log/nginx/wcs-error.log; + error\_log /var/log/nginx/wcs-error.log; - location \~ \^/static/(.+)\$ { + location \~ \^/static/(.+)\$ { - root /; + root /; - try\_files /var/lib/wcs/\$host/static/\$1 + try\_files /var/lib/wcs/\$host/static/\$1 - /var/lib/wcs/\$host/theme/static/\$1 + /var/lib/wcs/\$host/theme/static/\$1 - /var/lib/wcs/collectstatic/\$1 + /var/lib/wcs/collectstatic/\$1 - /var/lib/wcs-au-quotidien/collectstatic/\$1 + /var/lib/wcs-au-quotidien/collectstatic/\$1 - =404; + =404; - } + } - location /qo { alias /usr/share/wcs/qommon/; } + location /qo { alias /usr/share/wcs/qommon/; } - location /apache-errors { alias /usr/share/auquotidien/apache-errors/; -} + location /apache-errors { alias /usr/share/auquotidien/apache-errors/; + } - location /themes { + location /themes { - root /; + root /; - try\_files /var/lib/wcs/\$host\$uri + try\_files /var/lib/wcs/\$host\$uri - /var/lib/wcs-au-quotidien/\$host\$uri + /var/lib/wcs-au-quotidien/\$host\$uri - /usr/share/wcs/\$uri + /usr/share/wcs/\$uri - =404; + =404; - } + } - location / { + location / { + proxy\_pass http://unix:/var/run/wcs/wcs.sock; + proxy\_set\_header Host \$http\_host; + proxy\_set\_header X-Real-IP \$remote\_addr; + proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; + proxy\_set\_header X-Forwarded-SSL on; + proxy\_set\_header X-Forwarded-Protocol ssl; + proxy\_set\_header X-Forwarded-Proto https; - proxy\_pass http://unix:/var/run/wcs/wcs.sock; + } - proxy\_set\_header Host \$http\_host; - - proxy\_set\_header X-Real-IP \$remote\_addr; - - proxy\_set\_header X-Forwarded-For \$proxy\_add\_x\_forwarded\_for; - - proxy\_set\_header X-Forwarded-SSL on; - - proxy\_set\_header X-Forwarded-Protocol ssl; - - proxy\_set\_header X-Forwarded-Proto https; - - } - -} + } ### Vérification des réponses de Nginx @@ -1235,7 +1107,7 @@ C'est tout de même déjà le temps de vérifier : - que haproxy envoie bien sur web1, - que les requêtes arrivent sur les bons virtualhost, par exemple pour fargo on vérifiera que l'accès à - [https://portedoc-moncompte.](https://portedoc-moncompte.nanterre.fr/)macollectivitemacollectivite[.fr](https://portedoc-moncompte.nanterre.fr/) + [https://portedoc-moncompte.](https://portedoc-moncompte.nanterre.fr/)macollectivite[.fr](https://portedoc-moncompte.nanterre.fr/) provoque une 404 dans */var/log/nginx/fargo-access.log* et aucun message dans */var/log/nginx/fargo-error.log* ; opération à répéter avec tous les autres sites installés. @@ -1245,7 +1117,7 @@ Déploiement des instances ****Attention le déploiement ne doit être lancé que si TOUS les services ont été testés et répondent des 404 aux adresses prévus -****[**https://xxx-moncompte.**](https://xxx-moncompte.nanterre.fr/)**macollectivitemacollectivite**[**.fr/**](https://xxx-moncompte.nanterre.fr/)**.** +****[**https://xxx-moncompte.**](https://xxx-moncompte.nanterre.fr/)**macollectivite**[**.fr/**](https://xxx-moncompte.nanterre.fr/)**.** Si ce n'est pas le cas, le déploiement va échouer ; et la reprise sur ces erreurs n'est pas toujours simple. @@ -1253,12 +1125,12 @@ ces erreurs n'est pas toujours simple. ### Préparation, création du fichier «recipe» Installation des thèmes Publik (incluant le thème pour -macollectivitemacollectivite) : +macollectivite) : -\# apt install publik-base-theme + apt install publik-base-theme Création d'un fichier de déploiement -*/srv/nfs/publik/scripts/recipe-macollectivitemacollectivite-prod.json* +*/srv/nfs/publik/scripts/recipe-macollectivite-prod.json* (note : fichier déjà disponible sur l'infra de pré-prod); la ligne "password" est à compléter le mot de passe à communiquer à Entr'ouvert : @@ -1266,19 +1138,19 @@ Création d'un fichier de déploiement "variables": { - "hobo": "hobo-moncompte.macollectivitemacollectivite.fr", + "hobo": "hobo-moncompte.macollectivite.fr", - "authentic": "connexion-moncompte.macollectivitemacollectivite.fr", + "authentic": "connexion-moncompte.macollectivite.fr", - "combo": "moncompte.macollectivitemacollectivite.fr", + "combo": "moncompte.macollectivite.fr", - "combo\_agent": "agents-moncompte.macollectivitemacollectivite.fr", + "combo\_agent": "agents-moncompte.macollectivite.fr", - "passerelle": "passerelle-moncompte.macollectivitemacollectivite.fr", + "passerelle": "passerelle-moncompte.macollectivite.fr", - "wcs": "demarches-moncompte.macollectivitemacollectivite.fr", + "wcs": "demarches-moncompte.macollectivite.fr", - "fargo": "portedoc-moncompte.macollectivitemacollectivite.fr" + "fargo": "portedoc-moncompte.macollectivite.fr" }, @@ -1292,7 +1164,7 @@ Création d'un fichier de déploiement {"create-superuser": { - "email": "admin+macollectivitemacollectivite@entrouvert.com", + "email": "admin+macollectivite@entrouvert.com", "password": "..." @@ -1360,7 +1232,7 @@ Création d'un fichier de déploiement {"set-theme": { - "theme": "macollectivitemacollectivite" + "theme": "macollectivite" }} @@ -1375,7 +1247,7 @@ commande doit impérativement être exécutée par l'utilisateur «hobo», on utilise donc *sudo -u hobo … :* \# sudo -u hobo hobo-manage cook -/srv/nfs/publik/scripts/recipe-macollectivitemacollectivite-prod.json -v +/srv/nfs/publik/scripts/recipe-macollectivite-prod.json -v 2 ### Vérification du déploiement @@ -1393,25 +1265,25 @@ la plate-forme de production, donc on doit voir ceci (en retirant les drwxr-xr-x 3 authentic-multitenant authentic-multitenant 120 Jul 12 15:19 -/var/lib/authentic2-multitenant/tenants/connexion-preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/authentic2-multitenant/tenants/connexion-preprod-moncompte.macollectivite.fr drwxr-xr-x 5 combo combo 156 Jul 21 00:25 -/var/lib/combo/tenants/agents-preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/combo/tenants/agents-preprod-moncompte.macollectivite.fr drwxr-xr-x 5 combo combo 4096 Jul 20 10:38 -/var/lib/combo/tenants/preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/combo/tenants/preprod-moncompte.macollectivite.fr drwxr-xr-x 3 fargo fargo 107 Jul 10 18:19 -/var/lib/fargo/tenants/portedoc-preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/fargo/tenants/portedoc-preprod-moncompte.macollectivite.fr drwxr-xr-x 3 hobo hobo 81 Apr 18 10:42 -/var/lib/hobo/tenants/hobo-preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/hobo/tenants/hobo-preprod-moncompte.macollectivite.fr drwxr-xr-x 3 passerelle passerelle 107 Jul 10 18:19 -/var/lib/passerelle/tenants/passerelle-preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/passerelle/tenants/passerelle-preprod-moncompte.macollectivite.fr w.c.s. créé directement une base de données -*wcs\_demarches\_moncompte\_macollectivitemacollectivite\_fr* +*wcs\_demarches\_moncompte\_macollectivite\_fr* accompagnée de son dossier dans */var/lib/wcs-au-quotidien* \# ls -ld /var/lib/wcs-au-quotidien/\* @@ -1423,7 +1295,7 @@ drwxr-xr-x 7 root root 66 Apr 3 15:55 /var/lib/wcs-au-quotidien/config.pck drwxr-xr-x 22 wcs-au-quotidien wcs-au-quotidien 4096 Jul 10 18:19 -/var/lib/wcs-au-quotidien/demarches-preprod-moncompte.macollectivitemacollectivite.fr +/var/lib/wcs-au-quotidien/demarches-preprod-moncompte.macollectivite.fr ← ici en preprod ⇒ demarches-moncompte.macollectivite.fr en prod drwxr-xr-x 2 root root 47 Apr 3 15:59 @@ -1467,102 +1339,102 @@ Création d'un fichier (Conseil : prendre modèle sur le fichier identique en pré-prod et adapter les paramètres LDAP). -{ + { - "ACCOUNT\_ACTIVATION\_DAYS": 1, + "ACCOUNT\_ACTIVATION\_DAYS": 1, - "PASSWORD\_RESET\_TIMEOUT\_DAYS": 1, + "PASSWORD\_RESET\_TIMEOUT\_DAYS": 1, - "A2\_REGISTRATION\_EMAIL\_IS\_UNIQUE": true, + "A2\_REGISTRATION\_EMAIL\_IS\_UNIQUE": true, - "A2\_EMAIL\_IS\_UNIQUE": true, + "A2\_EMAIL\_IS\_UNIQUE": true, - "LDAP\_AUTH\_SETTINGS": \[ + "LDAP\_AUTH\_SETTINGS": \[ - { + { - "realm": "mairie-macollectivite.fr", + "realm": "mairie-macollectivite.fr", - "url": \["ldap://v-dc1.vnan.intra/", "ldap://v-dc2.vnan.intra/"\], + "url": \["ldap://v-dc1.vnan.intra/", "ldap://v-dc2.vnan.intra/"\], - "basedn": "OU=macollectivite,DC=vnan,DC=intra", + "basedn": "OU=macollectivite,DC=vnan,DC=intra", - "binddn": "xxxxx@vnan.intra", + "binddn": "xxxxx@vnan.intra", - "bindpw": "xxxxx", + "bindpw": "xxxxx", - "user\_filter": -"(&(objectClass=user)(sAMAccountType=805306368)(|(mail=%s)(samaccountname=%s))(|(memberOf=CN=.LD\_Agents\_BO,OU=macollectivite,DC=vnan,DC=intra)(memberOf=CN=.LD\_Agents\_Publik,OU=macollectivite,DC=vnan,DC=intra)))", + "user\_filter": + "(&(objectClass=user)(sAMAccountType=805306368)(|(mail=%s)(samaccountname=%s))(|(memberOf=CN=.LD\_Agents\_BO,OU=macollectivite,DC=vnan,DC=intra)(memberOf=CN=.LD\_Agents\_Publik,OU=macollectivite,DC=vnan,DC=intra)))", - "username\_template": "{samaccountname\[0\]}@{realm}", + "username\_template": "{samaccountname\[0\]}@{realm}", - "update\_username": true, + "update\_username": true, - "active\_directory": true, + "active\_directory": true, - "attributes": \[ + "attributes": \[ - "mail", + "mail", - "sAMAccountName", + "sAMAccountName", - "cn", + "cn", - "sn", + "sn", - "givenName", + "givenName", - "userPrincipalName" + "userPrincipalName" - \], + \], - "external\_id\_tuples": \[\["samaccountname"\],\["dn:noquote"\]\], + "external\_id\_tuples": \[\["samaccountname"\],\["dn:noquote"\]\], - "shuffle\_replicas": false, + "shuffle\_replicas": false, - "require\_cert": "never", + "require\_cert": "never", - "use\_tls": false, + "use\_tls": false, - "set\_mandatory\_roles": \["Agent"\], + "set\_mandatory\_roles": \["Agent"\], - "user\_can\_change\_password": false + "user\_can\_change\_password": false - }, + }, - { + { - "realm": "entrouvert.com", + "realm": "entrouvert.com", - "url": "ldaps://ldap.entrouvert.org/", + "url": "ldaps://ldap.entrouvert.org/", - "basedn": "o=entrouvert,ou=companies,o=libre-entreprise", + "basedn": "o=entrouvert,ou=companies,o=libre-entreprise", - "user\_filter": "uid=%s", + "user\_filter": "uid=%s", - "username\_template": "{uid\[0\]}@{realm}", + "username\_template": "{uid\[0\]}@{realm}", - "groupsu": -\["cn=ldapadmins,ou=groups,o=entrouvert,ou=companies,o=libre-entreprise"\], + "groupsu": + \["cn=ldapadmins,ou=groups,o=entrouvert,ou=companies,o=libre-entreprise"\], - "groupstaff": -\["cn=ldapadmins,ou=groups,o=entrouvert,ou=companies,o=libre-entreprise"\], + "groupstaff": + \["cn=ldapadmins,ou=groups,o=entrouvert,ou=companies,o=libre-entreprise"\], - "group\_filter": "(&(uniqueMember={user\_dn})(objectClass=legroup))", + "group\_filter": "(&(uniqueMember={user\_dn})(objectClass=legroup))", - "create\_group": true, + "create\_group": true, - "attributes": \[ "uid" \], + "attributes": \[ "uid" \], - "set\_mandatory\_groups": \["LDAP Entrouvert"\], + "set\_mandatory\_groups": \["LDAP Entrouvert"\], - "user\_can\_change\_password": false + "user\_can\_change\_password": false - } + } - \] + \] -} + } Lancer un import manuel des comptes (pour ne pas attendre le cron) avec : @@ -1745,25 +1617,19 @@ lors de cette étape, toujours refuser les éventuelles demandes de modification des fichiers de configuration (on utilise ceux partagés par NFS) : -apt install wcs wcs-au-quotidien - -apt install combo - -apt install fargo - -apt install passerelle - -apt install hobo - -apt install authentic2-multitenant - -apt install hobo-agent + apt install wcs wcs-au-quotidien + apt install combo + apt install fargo + apt install passerelle + apt install hobo + apt install authentic2-multitenant + apt install hobo-agent Nous comparons la liste des paquets installés entre web1 et web2 (obtenue avec *dpkg -l), *et installons les paquets suivants : - python-authentic2-auth-fc, -- python-combo-plugin-macollectivitemacollectivite, +- python-combo-plugin-macollectivite, - publik-base-theme, - gettext