From 46b5fa677f89a9be504a01d537794e1d6b4aa4dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Wed, 13 Dec 2017 08:14:41 +0100 Subject: [PATCH] fix syntax of block of codes --- architecture.md | 4 +- installation.md | 1112 +++++++++++++++++------------------------------ 2 files changed, 409 insertions(+), 707 deletions(-) diff --git a/architecture.md b/architecture.md index e9ee073..a6fc0df 100644 --- a/architecture.md +++ b/architecture.md @@ -175,7 +175,7 @@ sont nécessaires, voir ci-dessous. La diffusion HTTPS étant obligatoire, il est nécessaire de disposer de certificats valides pour chaque brique déployée ; chacune des briques utilisant un nom de serveur distinct. En général un certificat étoile -(*wildcard* \*.example.net) couvre toutes les briques. +(*wildcard* *.example.net) couvre toutes les briques. ### MCO par Entr'ouvert @@ -343,7 +343,7 @@ message est reçu par tous les agents de toutes les machines de l’infrastructure, et est diffusé aux briques concernées, qui se chargent de modifier les utilisateurs des instances cibles. -![Logo Publik](images/provisionning.png) +![Logo Publik](images/provisioning.png) Infrastructure d’hébergement SaaS --------------------------------- diff --git a/installation.md b/installation.md index 174d424..a9acdcf 100644 --- a/installation.md +++ b/installation.md @@ -102,7 +102,7 @@ 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* : +*fr_FR.UTF-8* : dpkg-reconfigure locales @@ -194,17 +194,17 @@ Pricisons les paquets qu'on veut tirer de jessie-backports en éditant 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 ----------------------------- @@ -234,10 +234,10 @@ Principe pour le composant *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. +Remarque : template0 et LC_COLLATE et LC_CTYPE nécessaires parce que +template1 est en en_US.UTF-8. La même opération doit être répétée pour chaque brique logicielle (bien sûr à chaque fois il faut **noter le mot de passe** choisi, il sera @@ -270,16 +270,16 @@ et web2. Voici un script pour faire cela sur web1 et web2 : - \#!/bin/sh + #!/bin/sh 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)) + 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: @@ -312,7 +312,7 @@ Exemple pour Combo : cat /etc/systemd/system/combo.service.d/wait-for-mnt-data.conf - \[Unit\] + [Unit] RequiresMountsFor=/srv/nfs @@ -356,7 +356,7 @@ web1, il suffit de les partager sur web2. ### Installation RabbitMQ -\# apt install rabbitmq-server + # apt install rabbitmq-server RabbitMQ sera utilisé uniquement en local (127.0.0.1) et n'a besoin d'aucune configuration particulière. Veiller cependant à vérifier son @@ -381,8 +381,8 @@ service rabbitmq-server status 5000000 -stbt db -zdbbl 32000 -K true -- -root /usr/lib/erlang -progname erl -- -home... ├─ 897 /usr/lib/erlang/erts-6.2/bin/epmd -daemon - ├─1780 inet\_gethost 4 - └─1781 inet\_gethost 4 + ├─1780 inet_gethost 4 + └─1781 inet_gethost 4 Et absence d'erreur dans les logs, qui doivent ressembler à : @@ -390,17 +390,17 @@ Et absence d'erreur dans les logs, qui doivent ressembler à : -- Logs begin at lun. 2017-07-17 10:09:46 CEST, end at ven. 2017-07-21 19:55:37 CEST. -- - juil. 17 10:09:50 web1-preprod systemd\[1\]: Starting RabbitMQ broker... - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc. - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: \#\# \#\# Licensed under the MPL. See http://www.rabbitmq.com/ - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: \#\# \#\# - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: \#\#\#\#\#\#\#\#\#\# Logs: /var/log/rabbitmq/rabbit@web1-preprod.log - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: \#\#\#\#\#\# \#\# /var/log/rabbitmq/rabbit@web1-preprod-sasl.log - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: \#\#\#\#\#\#\#\#\#\# - juil. 17 10:09:54 web1-preprod rabbitmq-server\[580\]: Starting broker... - juil. 17 10:09:57 web1-preprod rabbitmq-server\[580\]: systemd unit for activation check: "rabbitmq-server.service" - juil. 17 10:09:57 web1-preprod systemd\[1\]: Started RabbitMQ broker. - juil. 17 10:09:57 web1-preprod rabbitmq-server\[580\]: completed with 0 plugins. + juil. 17 10:09:50 web1-preprod systemd[1]: Starting RabbitMQ broker... + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: RabbitMQ 3.6.10. Copyright (C) 2007-2017 Pivotal Software, Inc. + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ## ## Licensed under the MPL. See http://www.rabbitmq.com/ + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ## ## + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ########## Logs: /var/log/rabbitmq/rabbit@web1-preprod.log + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ###### ## /var/log/rabbitmq/rabbit@web1-preprod-sasl.log + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: ########## + juil. 17 10:09:54 web1-preprod rabbitmq-server[580]: Starting broker... + juil. 17 10:09:57 web1-preprod rabbitmq-server[580]: systemd unit for activation check: "rabbitmq-server.service" + juil. 17 10:09:57 web1-preprod systemd[1]: Started RabbitMQ broker. + juil. 17 10:09:57 web1-preprod rabbitmq-server[580]: completed with 0 plugins. (Note : bien sûr, ce n'est pas un composant créé par Entr'ouvert, c'est ) @@ -411,28 +411,28 @@ On commence par renseigner les paramètres de connexion à la base de donnée : L'accès à la base de données de Combo se décrit dans -*/etc/combo/settings.d/\*.py* : +*/etc/combo/settings.d/*.py* : # contenu de /etc/combo/settings.d/settings.py - DATABASES\['default'\]\['NAME'\] = 'combo' - DATABASES\['default'\]\['USER'\] = 'combo' - DATABASES\['default'\]\['PASSWORD'\] = 'indiquer-ici-le-mot-de-passe-pour-combo' - DATABASES\['default'\]\['HOST'\] = 'sql-prod' - DATABASES\['default'\]\['PORT'\] = '5432' + DATABASES['default']['NAME'] = 'combo' + DATABASES['default']['USER'] = 'combo' + DATABASES['default']['PASSWORD'] = 'indiquer-ici-le-mot-de-passe-pour-combo' + DATABASES['default']['HOST'] = 'sql-prod' + DATABASES['default']['PORT'] = '5432' 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.macollectivite.combo@entrouvert.com'),) - EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivite combo\] ' - SERVER\_EMAIL = ['admin+prod.](mailto:'admin+prod.maville.combo@entrouvert.com)macollectivite[.combo@entrouvert.com](mailto:'admin+prod.maville.combo@entrouvert.com)' + EMAIL_SUBJECT_PREFIX = '[prod macollectivite combo] ' + SERVER_EMAIL = ['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) : - apt install combo postgresql- + # apt install combo postgresql- Vérification avec *service combo status* : @@ -458,27 +458,27 @@ Vérification avec *service combo status* : 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* : +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/macollectivite.py - DATABASES\['default'\]\['NAME'\] = 'passerelle' - DATABASES\['default'\]\['USER'\] = 'passerelle' - DATABASES\['default'\]\['PASSWORD'\] = 'indiquer-ici-le-mot-de-passe-pour-passerelle' - DATABASES\['default'\]\['HOST'\] = 'sql-prod' - DATABASES\['default'\]\['PORT'\] = '5432' + DATABASES['default']['NAME'] = 'passerelle' + DATABASES['default']['USER'] = 'passerelle' + DATABASES['default']['PASSWORD'] = 'indiquer-ici-le-mot-de-passe-pour-passerelle' + DATABASES['default']['HOST'] = 'sql-prod' + DATABASES['default']['PORT'] = '5432' Toujours dans */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.macollectivite.passerelle@entrouvert.com'),) - EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivite passerelle\] ' - SERVER\_EMAIL = 'admin+prod.macollectivite.passerelle@entrouvert.com' + EMAIL_SUBJECT_PREFIX = '[prod macollectivite passerelle] ' + SERVER_EMAIL = 'admin+prod.macollectivite.passerelle@entrouvert.com' Nous pouvons ensuite installer le composant : - apt install passerelle postgresql- + # apt install passerelle postgresql- Et vérification avec *service passerelle status* qui doit montrer «active (running)» @@ -492,7 +492,7 @@ le nom de la brique, c'est-à-dire : */etc/fargo/settings.d/macollectivite.py* 2. Installation du composant : - \# apt install fargo postgresql- + # apt install fargo postgresql- 3. Vérification avec *service fargo status* qui doit retourner « active (running) » @@ -506,7 +506,7 @@ le nom de la brique, c'est-à-dire : */etc/hobo/settings.d/macollectivite.py* 2. Installation du composant : - \# apt install hobo postgresql- + # apt install hobo postgresql- 3. Vérification avec *service hobo status* qui doit retourner « active (running) » @@ -519,7 +519,7 @@ autres composants. Installation : - apt install hobo-agent + # apt install hobo-agent Ce démon est piloté par supervisor, ce dernier a parfois du mal à se lancer dès la première installation. On remet donc tout à plat avec : @@ -549,87 +549,51 @@ suit pas exactement les mêmes principes et les mêmes nommages. Le nom du paquet à installer est *authentic2-multitenant*, et on ajoute son plugin FranceConnect *python-authentic2-auth-fc* : -\# apt install authentic2-multitenant python-authentic2-auth-fc -postgresql- + # apt install authentic2-multitenant python-authentic2-auth-fc postgresql- La configuration de l'accès SQL et des mails se fait dans */etc/authentic2-multitenant/config.py* (et non pas *settings.py* comme pour les autres) : -\# extraits de /etc/authentic2-multitenant/config.py + # extraits de /etc/authentic2-multitenant/config.py + DATABASES['default']['NAME'] = 'authentic' + DATABASES['default']['USER'] = 'authentic' + DATABASES['default']['PASSWORD'] = 'le-mot-de-passe-de-authentic-cree-sur-postgresql' + DATABASES['default']['HOST'] = 'sql-prod' + DATABASES['default']['PORT'] = '5432' + # ... -DATABASES\['default'\]\['NAME'\] = 'authentic' - -DATABASES\['default'\]\['USER'\] = 'authentic' - -DATABASES\['default'\]\['PASSWORD'\] = -'le-mot-de-passe-de-authentic-cree-sur-postgresql' - -DATABASES\['default'\]\['HOST'\] = 'sql-prod' - -DATABASES\['default'\]\['PORT'\] = '5432' - -\# ... - -ADMINS = (('Admin EO', -'admin+prod.macollectivite.authentic@entrouvert.com'),) - -EMAIL\_SUBJECT\_PREFIX = '\[prod macollectivite -authentic\] ' - -SERVER\_EMAIL = -'admin+prod.macollectivite.authentic@entrouvert.com' + ADMINS = (('Admin EO', 'admin+prod.macollectivite.authentic@entrouvert.com'),) + EMAIL_SUBJECT_PREFIX = '[prod macollectivite authentic] ' + SERVER_EMAIL = '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) : -\# dpkg --configure -a - -\# service authentic2-multitenant stop - -\# service authentic2-multitenant update - -\# service authentic2-multitenant restart + # dpkg --configure -a + # service authentic2-multitenant stop + # service authentic2-multitenant update + # service authentic2-multitenant restart Vérification avec *service authentic2-multitenant status* : -\# service authentic2-multitenant status - -● authentic2-multitenant.service - LSB: Authentic2 is a versatile -identity provider - - Loaded: loaded (/etc/init.d/authentic2-multitenant) - - Active: active (running) since jeu. 2017-07-20 18:48:47 CEST; 24h ago - - CGroup: /system.slice/authentic2-multitenant.service - - ├─21361 /usr/bin/python /usr/bin/gunicorn --pid -/var/run/authentic2-multitenant/authentic2-multitenant.pid --user -authentic-multitenant --group authentic-m... - - ├─21372 /usr/bin/python /usr/bin/gunicorn --pid -/var/run/authentic2-multitenant/authentic2-multitenant.pid --user -authentic-multitenant --group authentic-m... - - ├─21377 /usr/bin/python /usr/bin/gunicorn --pid -/var/run/authentic2-multitenant/authentic2-multitenant.pid --user -authentic-multitenant --group authentic-m... - - ├─21380 /usr/bin/python /usr/bin/gunicorn --pid -/var/run/authentic2-multitenant/authentic2-multitenant.pid --user -authentic-multitenant --group authentic-m... - - └─25604 /usr/bin/python /usr/bin/gunicorn --pid -/var/run/authentic2-multitenant/authentic2-multitenant.pid --user -authentic-multitenant --group authentic-m... + # service authentic2-multitenant status + ● authentic2-multitenant.service - LSB: Authentic2 is a versatile identity provider + Loaded: loaded (/etc/init.d/authentic2-multitenant) + Active: active (running) since jeu. 2017-07-20 18:48:47 CEST; 24h ago + CGroup: /system.slice/authentic2-multitenant.service + ├─21361 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m... + ├─21372 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m... + ├─21377 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m... + ├─21380 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m... + └─25604 /usr/bin/python /usr/bin/gunicorn --pid /var/run/authentic2-multitenant/authentic2-multitenant.pid --user authentic-multitenant --group authentic-m... ### Installation w.c.s. En pré-requis, LibreOffice est installé car w.c.s. l'utilise dans des fonctionnalités de production de documents : -\# apt install libreoffice + # apt install libreoffice Reprendre la même procédure que pour les autres composants, en adaptant le nom de la brique, c'est-à-dire : @@ -638,7 +602,7 @@ le nom de la brique, c'est-à-dire : */etc/wcs/settings.d/macollectivite.py* 2. Installation du composant : - \# apt install wcs postgresql- + # apt install wcs postgresql- 3. Vérification avec *service wcs status* qui doit retourner « active (running) » @@ -648,7 +612,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. @@ -656,23 +620,13 @@ version jessie-backports est possible aussi si nécessaire. ### Configuration de base 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 + # /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" ' '"$http_user_agent" "$host" [$request_time ms]'; - '\$status \$body\_bytes\_sent "\$http\_referer" ' - - '"\$http\_user\_agent" "\$host" \[\$request\_time ms\]'; - - log\_format with\_request\_time '\$remote\_addr - \$remote\_user - \[\$time\_local\] \[\$request\_time ms\] ' - - '"\$request" \$status \$body\_bytes\_sent ' - - '"\$http\_referer" "\$http\_user\_agent"'; + log_format with_request_time '$remote_addr - $remote_user [$time_local] [$request_time ms] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"'; robots.txt et favicon communs dans */etc/nginx/includes/macollectivite-common.conf* : @@ -682,14 +636,14 @@ robots.txt et favicon communs dans 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)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), +[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), +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. @@ -703,61 +657,48 @@ Au niveau de la preprod, le modèle classique a été adopté : - un fichier par virtualhost dans */etc/nginx/sites-available/* - des liens symboliques dans */etc/nginx/sites-enabled/* avec un - préfixe *10\_* permettant un éventuel classement d'autres services + préfixe *10_* permettant un éventuel classement d'autres services avant ou après. A noter que **ces fichiers **N**ginx de la **plate-forme de **pré-prod**uction** peuvent être copiés** pour la plate-forme de production, il faudra cependant veiller à la modification du -server\_name du portail usagers dans le virtualhost "combo". +server_name du portail usagers dans le virtualhost "combo". #### Combo server { + listen 80; + 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 - listen 80; + include includes/macollectivite-common.conf; - server\_name \~\^moncompte.\* \# portail usagers ; selon le nom du site - (attention, différent de la pré-prod) + access_log /var/log/nginx/combo-access.log combined_full; + error_log /var/log/nginx/combo-error.log; - \~\^agents-.\*; \# portail agents ; selon le nom du site + location ~ ^/static/(.+)$ { + root /; + try_files /var/lib/combo/tenants/$host/static/$1 + /var/lib/combo/tenants/$host/theme/static/$1 + /var/lib/combo/collectstatic/$1 + =404; + add_header Access-Control-Allow-Origin *; + } - include includes/macollectivite-common.conf; - - access\_log /var/log/nginx/combo-access.log combined\_full; - - error\_log /var/log/nginx/combo-error.log; - - location \~ \^/static/(.+)\$ { - - root /; - - try\_files /var/lib/combo/tenants/\$host/static/\$1 - /var/lib/combo/tenants/\$host/theme/static/\$1 - - /var/lib/combo/collectstatic/\$1 - - =404; - - add\_header Access-Control-Allow-Origin \*; - } - - location \~ \^/media/(.+)\$ { - 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; - - } + location ~ ^/media/(.+)$ { + 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 @@ -765,52 +706,38 @@ server\_name du portail usagers dans le virtualhost "combo". Même modèle que Combo : server { + listen 80; - listen 80; + server_name ~^hobo-.*; + include includes/macollectivite-common.conf; - server\_name \~\^hobo-.\*; + access_log /var/log/nginx/hobo-access.log combined_full; + error_log /var/log/nginx/hobo-error.log; - include includes/macollectivite-common.conf; + location ~ ^/static/(.+)$ { + root /; + try_files /var/lib/hobo/tenants/$host/static/$1 + /var/lib/hobo/tenants/$host/theme/static/$1 + /var/lib/hobo/collectstatic/$1 + =404; + add_header Access-Control-Allow-Origin *; + } - access\_log /var/log/nginx/hobo-access.log combined\_full; + location ~ ^/media/(.+)$ { + alias /var/lib/hobo/tenants/$host/media/$1; + } - error\_log /var/log/nginx/hobo-error.log; + location / { + 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; + } - location \~ \^/static/(.+)\$ { - - root /; - - try\_files /var/lib/hobo/tenants/\$host/static/\$1 - - /var/lib/hobo/tenants/\$host/theme/static/\$1 - - /var/lib/hobo/collectstatic/\$1 - - =404; - - add\_header Access-Control-Allow-Origin \*; - - } - - location \~ \^/media/(.+)\$ { - - alias /var/lib/hobo/tenants/\$host/media/\$1; - - } - - location / { - - 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; - - } - -} + } #### Passerelle @@ -818,45 +745,32 @@ Même modèle que Combo, mais aucune diffusion de /media (il s'agit de données privées dans Passerelle). server { + listen 80; - listen 80; + server_name ~^passerelle-.*; + include includes/macollectivite-common.conf; - server\_name \~\^passerelle-.\*; + access_log /var/log/nginx/passerelle-access.log combined_full; + error_log /var/log/nginx/passerelle-error.log; - include includes/macollectivite-common.conf; - - access\_log /var/log/nginx/passerelle-access.log combined\_full; - - error\_log /var/log/nginx/passerelle-error.log; - - location \~ \^/static/(.+)\$ { - - root /; - - try\_files /var/lib/passerelle/tenants/\$host/static/\$1 - - /var/lib/passerelle/tenants/\$host/theme/static/\$1 - - /var/lib/passerelle/collectstatic/\$1 - - =404; - - add\_header Access-Control-Allow-Origin \*; - - } - - location / { - - 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; - - } + location ~ ^/static/(.+)$ { + root /; + try_files /var/lib/passerelle/tenants/$host/static/$1 + /var/lib/passerelle/tenants/$host/theme/static/$1 + /var/lib/passerelle/collectstatic/$1 + =404; + add_header Access-Control-Allow-Origin *; + } + location / { + 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; + } } #### fargo @@ -865,44 +779,32 @@ Même modèle que Combo, mais aucune diffusion de /media (il s'agit des fichiers usagers privés dans Fargo). server { + listen 80; - listen 80; + server_name ~^portedoc-.*; + include includes/macollectivite-common.conf; - server\_name \~\^portedoc-.\*; + access_log /var/log/nginx/fargo-access.log combined_full; + error_log /var/log/nginx/fargo-error.log; - include includes/macollectivite-common.conf; + location ~ ^/static/(.+)$ { + root /; + try_files /var/lib/fargo/tenants/$host/static/$1 + /var/lib/fargo/tenants/$host/theme/static/$1 + /var/lib/fargo/collectstatic/$1 + =404; + add_header Access-Control-Allow-Origin *; + } - access\_log /var/log/nginx/fargo-access.log combined\_full; - - error\_log /var/log/nginx/fargo-error.log; - - location \~ \^/static/(.+)\$ { - - root /; - - try\_files /var/lib/fargo/tenants/\$host/static/\$1 - - /var/lib/fargo/tenants/\$host/theme/static/\$1 - - /var/lib/fargo/collectstatic/\$1 - - =404; - - add\_header Access-Control-Allow-Origin \*; - - } - - location / { - - 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; - - } + location / { + 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; + } } @@ -912,108 +814,75 @@ Comme Combo, sans diffusion des /media, et en utilisant le nom du service *authentic2-multitenant.* server { + listen 80; - listen 80; + server_name ~^connexion-.*; + include includes/macollectivite-common.conf; - server\_name \~\^connexion-.\*; + access_log /var/log/nginx/authentic2-multitenant-access.log combined_full; + error_log /var/log/nginx/authentic2-multitenant-error.log; - include includes/macollectivite-common.conf; - - access\_log /var/log/nginx/authentic2-multitenant-access.log - combined\_full; - - error\_log /var/log/nginx/authentic2-multitenant-error.log; - - location \~ \^/static/(.+)\$ { - - root /; - - try\_files /var/lib/authentic2-multitenant/tenants/\$host/static/\$1 - - /var/lib/authentic2-multitenant/tenants/\$host/theme/static/\$1 - - /var/lib/authentic2-multitenant/collectstatic/\$1 - - =404; - - add\_header Access-Control-Allow-Origin \*; - - } - - location / { - - 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; - - } + location ~ ^/static/(.+)$ { + root /; + try_files /var/lib/authentic2-multitenant/tenants/$host/static/$1 + /var/lib/authentic2-multitenant/tenants/$host/theme/static/$1 + /var/lib/authentic2-multitenant/collectstatic/$1 + =404; + add_header Access-Control-Allow-Origin *; + } + location / { + 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; + } } #### w.c.s. server { - listen 80; + listen 80; - server\_name \~\^demarches-.\*; + server_name ~^demarches-.*; + include includes/macollectivite-common.conf; - include includes/macollectivite-common.conf; + access_log /var/log/nginx/wcs-access.log combined_full; + error_log /var/log/nginx/wcs-error.log; - access\_log /var/log/nginx/wcs-access.log combined\_full; + location ~ ^/static/(.+)$ { + root /; + try_files /var/lib/wcs/$host/static/$1 + /var/lib/wcs/$host/theme/static/$1 + /var/lib/wcs/collectstatic/$1 + /var/lib/wcs-au-quotidien/collectstatic/$1 + =404; + } - error\_log /var/log/nginx/wcs-error.log; + location /qo { alias /usr/share/wcs/qommon/; } + location /apache-errors { alias /usr/share/auquotidien/apache-errors/; } - location \~ \^/static/(.+)\$ { - - root /; - - try\_files /var/lib/wcs/\$host/static/\$1 - - /var/lib/wcs/\$host/theme/static/\$1 - - /var/lib/wcs/collectstatic/\$1 - - /var/lib/wcs-au-quotidien/collectstatic/\$1 - - =404; - - } - - location /qo { alias /usr/share/wcs/qommon/; } - - location /apache-errors { alias /usr/share/auquotidien/apache-errors/; - } - - location /themes { - - root /; - - try\_files /var/lib/wcs/\$host\$uri - - /var/lib/wcs-au-quotidien/\$host\$uri - - /usr/share/wcs/\$uri - - =404; - - } - - 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; - - } + location /themes { + root /; + try_files /var/lib/wcs/$host$uri + /var/lib/wcs-au-quotidien/$host$uri + /usr/share/wcs/$uri + =404; + } + 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; + } } ### Vérification des réponses de Nginx @@ -1055,111 +924,58 @@ Création d'un fichier de déploiement (note : fichier déjà disponible sur l'infra de pré-prod); la ligne "password" est à compléter le mot de passe à communiquer à Entr'ouvert : -{ - - "variables": { - - "hobo": "hobo-moncompte.macollectivite.fr", - - "authentic": "connexion-moncompte.macollectivite.fr", - - "combo": "moncompte.macollectivite.fr", - - "combo\_agent": "agents-moncompte.macollectivite.fr", - - "passerelle": "passerelle-moncompte.macollectivite.fr", - - "wcs": "demarches-moncompte.macollectivite.fr", - - "fargo": "portedoc-moncompte.macollectivite.fr" - - }, - - "steps": \[ - - {"create-hobo": { - - "url": "https://\${hobo}/" - - }}, - - {"create-superuser": { - - "email": "admin+macollectivite@entrouvert.com", - - "password": "..." - - }}, - - {"create-authentic": { - - "url": "https://\${authentic}/", - - "title": "Connexion" - - }}, - - {"set-idp": { - - }}, - - {"create-combo": { - - "url": "https://\${combo}/", - - "title": "Compte citoyen", - - "template\_name": "portal-user" - - }}, - - {"create-combo": { - - "url": "https://\${combo\_agent}/", - - "slug": "portal-agent", - - "title": "Portail agent", - - "template\_name": "portal-agent" - - }}, - - {"create-wcs": { - - "url": "https://\${wcs}/", - - "title": "Démarches", - - "template\_name": "modele.zip" - - }}, - - {"create-fargo": { - - "url": "https://\${fargo}/", - - "title": "Porte-documents" - - }}, - - {"create-passerelle": { - - "url": "https://\${passerelle}/", - - "title": "Passerelle" - - }}, - - {"set-theme": { - - "theme": "macollectivite" - - }} - - \] - -} + { + "variables": { + "hobo": "hobo-moncompte.macollectivite.fr", + "authentic": "connexion-moncompte.macollectivite.fr", + "combo": "moncompte.macollectivite.fr", + "combo_agent": "agents-moncompte.macollectivite.fr", + "passerelle": "passerelle-moncompte.macollectivite.fr", + "wcs": "demarches-moncompte.macollectivite.fr", + "fargo": "portedoc-moncompte.macollectivite.fr" + }, + "steps": [ + {"create-hobo": { + "url": "https://${hobo}/" + }}, + {"create-superuser": { + "email": "admin+macollectivite@entrouvert.com", + "password": "..." + }}, + {"create-authentic": { + "url": "https://${authentic}/", + "title": "Connexion" + }}, + {"set-idp": { }}, + {"create-combo": { + "url": "https://${combo}/", + "title": "Compte citoyen", + "template_name": "portal-user" + }}, + {"create-combo": { + "url": "https://${combo_agent}/", + "slug": "portal-agent", + "title": "Portail agent", + "template_name": "portal-agent" + }}, + {"create-wcs": { + "url": "https://${wcs}/", + "title": "Démarches", + "template_name": "modele.zip" + }}, + {"create-fargo": { + "url": "https://${fargo}/", + "title": "Porte-documents" + }}, + {"create-passerelle": { + "url": "https://${passerelle}/", + "title": "Passerelle" + }}, + {"set-theme": { + "theme": "macollectivite" + }} + ] + } ### Lancement du déploiement @@ -1167,9 +983,7 @@ On utilise la commande «cook» proposée par le logiciel «hobo». Cette 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-macollectivite-prod.json -v -2 + # sudo -u hobo hobo-manage cook /srv/nfs/publik/scripts/recipe-macollectivite-prod.json -v 2 ### Vérification du déploiement @@ -1182,69 +996,41 @@ Ce qui est visible dans la plateforme de pré-production doit l'être sur la plate-forme de production, donc on doit voir ceci (en retirant les *preprod-*) : -\# ls -ld /var/lib/\*/tenants/\* - -drwxr-xr-x 3 authentic-multitenant authentic-multitenant 120 Jul 12 -15:19 -/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.macollectivite.fr - -drwxr-xr-x 5 combo combo 4096 Jul 20 10:38 -/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.macollectivite.fr - -drwxr-xr-x 3 hobo hobo 81 Apr 18 10:42 -/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.macollectivite.fr + # ls -ld /var/lib/*/tenants/* + drwxr-xr-x 3 authentic-multitenant authentic-multitenant 120 Jul 12 15:19 /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.macollectivite.fr + drwxr-xr-x 5 combo combo 4096 Jul 20 10:38 /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.macollectivite.fr + drwxr-xr-x 3 hobo hobo 81 Apr 18 10:42 /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.macollectivite.fr w.c.s. créé directement une base de données -*wcs\_demarches\_moncompte\_macollectivite\_fr* +*wcs_demarches_moncompte_macollectivite_fr* accompagnée de son dossier dans */var/lib/wcs-au-quotidien* -\# ls -ld /var/lib/wcs-au-quotidien/\* - -drwxr-xr-x 7 root root 66 Apr 3 15:55 -/var/lib/wcs-au-quotidien/collectstatic - --rw------- 1 root root 50 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.macollectivite.fr -← ici en preprod ⇒ demarches-moncompte.macollectivite.fr en prod - -drwxr-xr-x 2 root root 47 Apr 3 15:59 -/var/lib/wcs-au-quotidien/skeleton.invalid - -drwxr-xr-x 2 root root 23 Apr 3 16:00 -/var/lib/wcs-au-quotidien/skeletons + # ls -ld /var/lib/wcs-au-quotidien/* + drwxr-xr-x 7 root root 66 Apr 13 15:55 /var/lib/wcs-au-quotidien/collectstatic + -rw------- 1 root root 50 Apr 13 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.macollectivite.fr + drwxr-xr-x 2 root root 47 Apr 13 15:59 /var/lib/wcs-au-quotidien/skeleton.invalid + drwxr-xr-x 2 root root 23 Apr 13 16:00 /var/lib/wcs-au-quotidien/skeletons Si un répertoire manque, le déploiement a rencontré un soucis : contacter le support Entr'ouvert Si les répertoires sont présents, alors : -- [https://moncompte.](https://moncompte.nanterre.fr/)macollectivite[.fr/](https://moncompte.nanterre.fr/) - : doit afficher une page "Votre installation de Combo +- https://moncompte.macollectivite.fr : doit afficher une page "Votre installation de Combo fonctionne (...) Le site est actuellement vide (…)", -- https://agents-moncompte.macollectivite.fr/ même chose, -- https://connexion-moncompte.macollectivite.fr/ : doit proposer une +- https://agents-moncompte.macollectivite.fr même chose, +- https://connexion-moncompte.macollectivite.fr : doit proposer une page de connexion avec un design proche de la pré-prod, -- https://passerelle-moncompte.macollectivite.fr/ : doit re-diriger +- https://passerelle-moncompte.macollectivite.fr : doit re-diriger vers le site connexion-moncompte précédent, -- [https://hobo-moncompte.](https://hobo-moncompte.nanterre.fr/)macollectivite[.fr/](https://hobo-moncompte.nanterre.fr/) - : même chose, redirection vers connexion-moncompte, -- [https://portedoc-moncompte.](https://portedoc-moncompte.nanterre.fr/)macollectivite[.fr/](https://portedoc-moncompte.nanterre.fr/) - : même chose, redirection vers connexion-moncompte, -- [https://demarches-moncompte.](https://demarches-moncompte.nanterre.fr/)macollectivite[.fr/](https://demarches-moncompte.nanterre.fr/) - : doit rediriger vers - [https://moncompte.](https://moncompte.nanterre.fr/)macollectivite[.fr/](https://moncompte.nanterre.fr/). +- https://hobo-moncompte.macollectivite.fr : même chose, redirection vers connexion-moncompte, +- https://portedoc-moncompte.macollectivite.fr : même chose, redirection vers connexion-moncompte, +- https://demarches-moncompte.macollectivite.fr : doit rediriger vers + https://moncompte.macollectivite.fr/. Si un des sites ne répond pas comme prévu : contacter le support Entr'ouvert. @@ -1261,107 +1047,57 @@ Création d'un fichier adapter les paramètres LDAP). { - - "ACCOUNT\_ACTIVATION\_DAYS": 1, - - "PASSWORD\_RESET\_TIMEOUT\_DAYS": 1, - - "A2\_REGISTRATION\_EMAIL\_IS\_UNIQUE": true, - - "A2\_EMAIL\_IS\_UNIQUE": true, - - "LDAP\_AUTH\_SETTINGS": \[ - - { - - "realm": "mairie-macollectivite.fr", - - "url": \["ldap://v-dc1.vnan.intra/", "ldap://v-dc2.vnan.intra/"\], - - "basedn": "OU=macollectivite,DC=vnan,DC=intra", - - "binddn": "xxxxx@vnan.intra", - - "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)))", - - "username\_template": "{samaccountname\[0\]}@{realm}", - - "update\_username": true, - - "active\_directory": true, - - "attributes": \[ - - "mail", - - "sAMAccountName", - - "cn", - - "sn", - - "givenName", - - "userPrincipalName" - - \], - - "external\_id\_tuples": \[\["samaccountname"\],\["dn:noquote"\]\], - - "shuffle\_replicas": false, - - "require\_cert": "never", - - "use\_tls": false, - - "set\_mandatory\_roles": \["Agent"\], - - "user\_can\_change\_password": false - - }, - - { - - "realm": "entrouvert.com", - - "url": "ldaps://ldap.entrouvert.org/", - - "basedn": "o=entrouvert,ou=companies,o=libre-entreprise", - - "user\_filter": "uid=%s", - - "username\_template": "{uid\[0\]}@{realm}", - - "groupsu": - \["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))", - - "create\_group": true, - - "attributes": \[ "uid" \], - - "set\_mandatory\_groups": \["LDAP Entrouvert"\], - - "user\_can\_change\_password": false - - } - - \] - + "ACCOUNT_ACTIVATION_DAYS": 1, + "PASSWORD_RESET_TIMEOUT_DAYS": 1, + "A2_REGISTRATION_EMAIL_IS_UNIQUE": true, + "A2_EMAIL_IS_UNIQUE": true, + "LDAP_AUTH_SETTINGS": [ + { + "realm": "mairie-macollectivite.fr", + "url": ["ldap://v-dc1.vnan.intra/", "ldap://v-dc2.vnan.intra/"], + "basedn": "OU=macollectivite,DC=vnan,DC=intra", + "binddn": "xxxxx@vnan.intra", + "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)))", + "username_template": "{samaccountname[0]}@{realm}", + "update_username": true, + "active_directory": true, + "attributes": [ + "mail", + "sAMAccountName", + "cn", + "sn", + "givenName", + "userPrincipalName" + ], + "external_id_tuples": [["samaccountname"],["dn:noquote"]], + "shuffle_replicas": false, + "require_cert": "never", + "use_tls": false, + "set_mandatory_roles": ["Agent"], + "user_can_change_password": false + }, + { + "realm": "entrouvert.com", + "url": "ldaps://ldap.entrouvert.org/", + "basedn": "o=entrouvert,ou=companies,o=libre-entreprise", + "user_filter": "uid=%s", + "username_template": "{uid[0]}@{realm}", + "groupsu": ["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))", + "create_group": true, + "attributes": [ "uid" ], + "set_mandatory_groups": ["LDAP Entrouvert"], + "user_can_change_password": false + } + ] } Lancer un import manuel des comptes (pour ne pas attendre le cron) avec : -\# sudo -u authentic-multitenant authentic2-multitenant-manage -tenant\_command sync-ldap-users -d connexion-moncompte.macollectivite.fr + # sudo -u authentic-multitenant authentic2-multitenant-manage tenant_command sync-ldap-users -d connexion-moncompte.macollectivite.fr Cette commande ne doit rien afficher (ce qui signifie que tout s'est bien déroulé), les comptes doivent être visibles dans @@ -1400,31 +1136,21 @@ Déplacement des configurations et données des services Publik 1. Service *wcs* - service wcs stop - - mv /etc/wcs /srv/nfs/publik/etc/ - - ln -sf /srv/nfs/publik/etc/wcs /etc/wcs - - mv /var/lib/wcs /srv/nfs/publik/var-lib/ - - ln -sf /srv/nfs/publik/var-lib/wcs /var/lib/wcs - - service wcs start + service wcs stop + mv /etc/wcs /srv/nfs/publik/etc/ + ln -sf /srv/nfs/publik/etc/wcs /etc/wcs + mv /var/lib/wcs /srv/nfs/publik/var-lib/ + ln -sf /srv/nfs/publik/var-lib/wcs /var/lib/wcs + service wcs start 2. Service *combo* - service combo stop - - mv /etc/combo /srv/nfs/publik/etc/ - - ln -sf /srv/nfs/publik/etc/combo /etc/combo - - mv /var/lib/combo /srv/nfs/publik/var-lib/ - - ln -sf /srv/nfs/publik/var-lib/combo /var/lib/combo - - service combo start + service combo stop + mv /etc/combo /srv/nfs/publik/etc/ + ln -sf /srv/nfs/publik/etc/combo /etc/combo + mv /var/lib/combo /srv/nfs/publik/var-lib/ + ln -sf /srv/nfs/publik/var-lib/combo /var/lib/combo + service combo start 3. Même procédure avec *fargo* 4. Même procédure avec *passerelle* @@ -1432,48 +1158,34 @@ Déplacement des configurations et données des services Publik 6. Même procédure avec *authentic2-multitenant* 7. Configuration hobo-agent - service supervisor stop - - mv /etc/hobo-agent /srv/nfs/publik/etc/ - - ln -sf /srv/nfs/publik/etc/hobo-agent /etc - - service supervisor start + service supervisor stop + mv /etc/hobo-agent /srv/nfs/publik/etc/ + ln -sf /srv/nfs/publik/etc/hobo-agent /etc + service supervisor start Autres partages via NFS : 1. Configurations nginx - service nginx stop - - mkdir /srv/nfs/publik/etc/nginx - - cd /etc/nginx - - mv conf.d includes sites-available sites-enabled - /srv/nfs/publik/etc/nginx/ - - ln -sf /srv/nfs/publik/etc/nginx/\* . - - service nginx start + service nginx stop + mkdir /srv/nfs/publik/etc/nginx + cd /etc/nginx + mv conf.d includes sites-available sites-enabled /srv/nfs/publik/etc/nginx/ + ln -sf /srv/nfs/publik/etc/nginx/* . + service nginx start 2. Éléments web statiques - cd /var/www - - mv html /srv/nfs/publik/var-www/ - - ln -sf /srv/nfs/publik/var-www/html . + cd /var/www + mv html /srv/nfs/publik/var-www/ + ln -sf /srv/nfs/publik/var-www/html . 3. APT : dépôts et préférences backports - mkdir /srv/nfs/publik/etc/apt - - cd /etc/apt - - mv sources.list.d preferences.d /srv/nfs/publik/etc/apt/ - - ln -sf /srv/nfs/publik/etc/apt/\* . + mkdir /srv/nfs/publik/etc/apt + cd /etc/apt + mv sources.list.d preferences.d /srv/nfs/publik/etc/apt/ + ln -sf /srv/nfs/publik/etc/apt/* . ### Opérations sur web2 @@ -1485,15 +1197,13 @@ Publik **avant** leur installation : 1. Service wcs - ln -sf /srv/nfs/publik/etc/wcs /etc/wcs - - ln -sf /srv/nfs/publik/var-lib/wcs /var/lib/wcs + ln -sf /srv/nfs/publik/etc/wcs /etc/wcs + ln -sf /srv/nfs/publik/var-lib/wcs /var/lib/wcs 2. Service *combo* - ln -sf /srv/nfs/publik/etc/combo /etc/combo - - ln -sf /srv/nfs/publik/var-lib/combo /var/lib/combo + ln -sf /srv/nfs/publik/etc/combo /etc/combo + ln -sf /srv/nfs/publik/var-lib/combo /var/lib/combo 3. Même procédure avec *fargo* 4. Même procédure avec *passerelle* @@ -1501,37 +1211,29 @@ Publik **avant** leur installation : 6. Même procédure avec *authentic2-multitenant* 7. Configuration hobo-agent - ln -sf /srv/nfs/publik/etc/hobo-agent /etc/hobo-agent + ln -sf /srv/nfs/publik/etc/hobo-agent /etc/hobo-agent On utilise aussi les autres configurations partagées via NFS : 1. Configurations nginx - service nginx stop - - cd /etc/nginx - - rm -rf conf.d includes sites-available sites-enabled - - ln -sf /srv/nfs/publik/etc/nginx/\* . - - service nginx start + service nginx stop + cd /etc/nginx + rm -rf conf.d includes sites-available sites-enabled + ln -sf /srv/nfs/publik/etc/nginx/* . + service nginx start 2. Éléments web statiques - cd /var/www - - rm -rf html - - ln -sf /srv/nfs/publik/var-www/html . + cd /var/www + rm -rf html + ln -sf /srv/nfs/publik/var-www/html . 3. APT : dépôts et préférences backports - cd /etc/apt - - rm -rf sources.list.d preferences.d - - ln -sf /srv/nfs/publik/etc/apt/\* . + cd /etc/apt + rm -rf sources.list.d preferences.d + ln -sf /srv/nfs/publik/etc/apt/* . On peut alors lancer l'installation des composants packagés. Attention, lors de cette étape, toujours refuser les éventuelles demandes de @@ -1547,7 +1249,7 @@ NFS) : 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 : +(obtenue avec *dpkg -l*), et installons les paquets suivants : - python-authentic2-auth-fc, - python-combo-plugin-macollectivite, @@ -1560,7 +1262,7 @@ Il est **très important** de désactiver les crons de Publik sur web2, pour ne pas avoir de compétition/conflit avec ceux déjà en place sur web1, puisqu'ils agissent sur les mêmes données. -Il faut donc poser des \# devant les lignes des crons suivants : +Il faut donc poser des # devant les lignes des crons suivants : - */etc/cron.d/wcs,* - */etc/cron.d/authentic2-multitenant,*