split documentation for inclusion in Combo

This commit is contained in:
Christophe Siraut 2017-12-19 11:37:32 +01:00
parent 46103dda8b
commit 6bba445e13
14 changed files with 1401 additions and 1528 deletions

6
exploitation-1.md Normal file
View File

@ -0,0 +1,6 @@
Notice dexploitation
=====================
Ce document constitue la notice lexploitation dun système Publik
standard. Des adaptations sont naturellement à envisager en fonction des
besoins particuliers.

52
exploitation-2.md Normal file
View File

@ -0,0 +1,52 @@
# Pilotage
## Pilotage du frontal HTTP
C'est le service Nginx qui gère les requêtes HTTP, son pilotage se fait
de façon classique :
# service nginx stop
# service nginx start
# service nginx restart
À noter que lorsqu'un service Publik est coupé, Nginx renvoie des
erreurs *502 Bad Gateway*. HAProxy réagit alors en tentant la requête
sur l'autre machine. Si l'autre répond aussi 502, HAProxy peut afficher
un message de maintenance.
### Pilotage des services de Publik
Tous les services sont pilotables avec le système *service* fourni par
Debian.
Liste des services Publik en place :
- *hobo* : système de déploiement et de provisionning
- *authentic2-multitenant* : gestion d'identité et websso
- *combo* : CMS des portails usager et agent
- *wcs* : moteur de démarches (formulaires et workflows)
- *passerelle* : hub de webservices
- *fargo* : porte-document
- *supervisor* (cas particulier pour le pilotage de hobo-agent,
sous-service hobo qui sera bientôt piloté directement par systemd)
Pour exemple, pilotage du service combo (portails) :
# service combo stop
# service combo start
# service combo restart
S'agissant d'une installation dual, ces actions doivent être effectuées
sur les deux machines.
Attention : si un service de Publik est démarré ou redémarré alors que
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
faudra redemander le démarrage explicitement.
Note: la migration de tous les composants de Publik vers systemd est en
cours et sera terminé avant fin 2017.

46
exploitation-3.md Normal file
View File

@ -0,0 +1,46 @@
# Journal des événements (logs)
Lhistorique des événements applicatifs est accessible via l'outil
*journalctl*. Par exemple pour suivre les événements de combo :
# journalctl -fu combo
Pour suivre l'ensemble des composants :
# journalctl -f -u combo -u authentic2-multitenant -u wcs -u fargo -u
hobo -u supervisor
Les logs HTTP sont ceux de nginx, fichiers textes rangés par service
dans */var/log/nginx :*
/var/log/nginx/authentic2-multitenant-access.log
/var/log/nginx/authentic2-multitenant-error.log
/var/log/nginx/bijoe-access.log
/var/log/nginx/bijoe-error.log
/var/log/nginx/combo-access.log
/var/log/nginx/combo-error.log
/var/log/nginx/fargo-access.log
/var/log/nginx/fargo-error.log
/var/log/nginx/hobo-access.log
/var/log/nginx/hobo-error.log
/var/log/nginx/passerelle-access.log
/var/log/nginx/passerelle-error.log
/var/log/nginx/wcs-access.log
/var/log/nginx/wcs-error.log
Exemple pour suivre ce qui concerne combo :
# tail -f /var/log/nginx/combo-\*.log

60
exploitation-4.md Normal file
View File

@ -0,0 +1,60 @@
# Mises-à-jour des composants
## Fréquence des mises-à-jour
Entr'ouvert livre une nouvelle version de Publik les soirs des 2ème et
4ème jeudi de chaque mois. L'installation peut être faite aussitôt, mais
nous conseillons à des hébergeurs tiers non infogérés par Entr'ouvert de
faire la mise à jour le mardi suivant.
La mise à jour provoque une courte indisponibilité du système : elle
doit être faite sur des heures de faible affluence. Pour information,
Entr'ouvert effectue ces mises à jour autour de 22 ou 23h le jeudi soir,
en attendant une baisse de la fréquentation visible dans les logs nginx.
## Déroulé en installation double (load-balancing)
S'agissant d'une installation double (load-balancing entre web1 et
web2), la procédure générale à suivre est :
1. arrêt du frontal nginx sur web2 ⇒ HAProxy envoie tout sur web1,
2. vérifier que PostgreSQL est bien fonctionnel,
3. mise à jour de web1 (procédure ci-dessous),
4. vérification du fonctionnement du site (parcours de 3 ou 4 URLs),
5. mise à jour de web2,
6. relance du frontal nginx sur web2,
7. vérification du fonctionnement du site (parcours de 3 ou 4 URLs).
Attention : si un service de Publik est redémarré alors que PostgreSQL
n'est pas disponible, ce démarrage ne fonctionnera pas. Il faudra
redemander le démarrage explicitement. Ceci signifie qu'il est très
fortement conseillé de faire la mise à jour de Publik indépendamment de
celle de PostgreSQL. Entr'ouvert conseille de faire la mise à jour de
PostgreSQL **avant** les composants de Publik.
Les composants de Publik sont livrés sous forme de paquet Debian, leur
mise à jour suit la procédure classique :
# apt update
# apt upgrade
Il est cependant possible qu'une nouvelle version demande l'installation
d'une nouvelle dépendance, dans ce cas « *apt upgrade* » refusera la
mise à jour et il faudra la forcer par :
# apt full-upgrade
En cas de doute, contacter <support@entrouvert.com>
## Mise à jour PostgreSQL
La mise à jour de PostgreSQL peut être faite à chaud selon les
procédures Debian normales. Durant la mise à jour, les services ne
fonctionneront pas (réponses 5xx) et HAProxy délivrera une erreur «
maintenance ». Dès le redémarrage de PostgreSQL, les services Publik
rétabliront les connexions vers le serveur SQL et le système sera à
nouveau utilisable.
Attention : si un service de Publik est démarré ou redémarré alors que
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
faudra redemander le démarrage explicitement.

15
exploitation-5.md Normal file
View File

@ -0,0 +1,15 @@
# Support
Les moyens de contact pour le support sont :
- l'extranet projet avec le gestionnaire de demandes (accès réservé) :
[https://dev.entrouvert.org/projects/ma](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[c](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[ollectivite](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[/issues](https://dev.entrouvert.org/projects/nanterre-rsu/issues),
- la liste de discussion projet (abonnements sur demande) :
[ma](mailto:nanterre-rsu@listes.entrouvert.com)[collectivite](mailto:nanterre-rsu@listes.entrouvert.com)[@listes.entrouvert.com](mailto:nanterre-rsu@listes.entrouvert.com),
- le courriel spécifique support pour macollectivite (génère
automatiquement une demande) :
[support-ma](mailto:support-nanterre-rsu@entrouvert.com)[collectivite](mailto:support-nanterre-rsu@entrouvert.com)[@entrouvert.com](mailto:support-nanterre-rsu@entrouvert.com),
- le courriel support générique d'Entr'ouvert :
<support@entrouvert.com>.

View File

@ -1,256 +0,0 @@
Notice dexploitation
=====================
Ce document constitue la notice lexploitation dun système Publik
standard. Des adaptations sont naturellement à envisager en fonction des
besoins particuliers.
Rappels
-------
Vous trouverez une documentation complète et spécifique à larchitecture
et à linstallation de Publik dans les documents intitulés : *Publik
Architecture technique* et *Publik Installation*. Les notes qui
suivent en donnent un aperçu.
### Architecture
Une infrastructure type de Publik est composée des machines suivantes :
- un service frontal de répartition de charge (*proxy),*
- deux serveurs d'application (*web1* et *web2),*
- 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 dapplication,
- 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 daccès des utilisateurs.
- Postgres
- enregistre et restitue les données des applications,
- il est courant dutiliser une installation à deux machines
identiques avec une réplication de type master/slave.
- NFS
- fournit linterface de stockage pour les fichiers partagés.
Liste des modules applicatifs potentiels de Publik :
- Authentic : gestion des identités, IdP (*identity provider*),
- Combo : CMS pour portails usager et agent (porte dentrée de
Publik),
- w.c.s. : formulaires et workflows,
- Passerelle : connecteurs vers systèmes tiers,
- Fargo : porte-documents,
- Corbo : diffusion de messages,
- Chrono : prise de rendez-vous,
- Welco : interface de saisie (multi-canal),
- Hobo : système de déploiement et de provisionning,
- Bijoe : élaboration et production de rapports statistiques,
- Chrono : gestion d'inscriptions et rendez-vous
### Structure dune brique
Une brique Entrouvert est un paquet Debian standard issu dun module
Python standard. Cest un logiciel libres dont vous pouvez obtenir et
modifier les sources selon vos besoins. Les fichiers dinstallation 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.
Notice d'exploitation
---------------------
### Pilotage du frontal HTTP
C'est le service Nginx qui gère les requêtes HTTP, son pilotage se fait
de façon classique :
\# service nginx stop
\# service nginx start
\# service nginx restart
À noter que lorsqu'un service Publik est coupé, Nginx renvoie des
erreurs *502 Bad Gateway*. HAProxy réagit alors en tentant la requête
sur l'autre machine. Si l'autre répond aussi 502, HAProxy peut afficher
un message de maintenance.
### Pilotage des services de Publik
Tous les services sont pilotables avec le système *service* fourni par
Debian.
Liste des services Publik en place :
- *hobo* : système de déploiement et de provisionning
- *authentic2-multitenant* : gestion d'identité et websso
- *combo* : CMS des portails usager et agent
- *wcs* : moteur de démarches (formulaires et workflows)
- *passerelle* : hub de webservices
- *fargo* : porte-document
- *supervisor* (cas particulier pour le pilotage de hobo-agent,
sous-service hobo qui sera bientôt piloté directement par systemd)
Pour exemple, pilotage du service combo (portails) :
\# service combo stop
\# service combo start
\# service combo restart
S'agissant d'une installation dual, ces actions doivent être effectuées
sur les deux machines.
Attention : si un service de Publik est démarré ou redémarré alors que
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
faudra redemander le démarrage explicitement.
Note: la migration de tous les composants de Publik vers systemd est en
cours et sera terminé avant fin 2017.
### Journaux des événements (logs)
Lhistorique des événements applicatifs est accessible via l'outil
*journalctl*. Par exemple pour suivre les événements de combo :
\# journalctl -fu combo
Pour suivre l'ensemble des composants :
\# journalctl -f -u combo -u authentic2-multitenant -u wcs -u fargo -u
hobo -u supervisor
Les logs HTTP sont ceux de nginx, fichiers textes rangés par service
dans */var/log/nginx :*
/var/log/nginx/authentic2-multitenant-access.log
/var/log/nginx/authentic2-multitenant-error.log
/var/log/nginx/bijoe-access.log
/var/log/nginx/bijoe-error.log
/var/log/nginx/combo-access.log
/var/log/nginx/combo-error.log
/var/log/nginx/fargo-access.log
/var/log/nginx/fargo-error.log
/var/log/nginx/hobo-access.log
/var/log/nginx/hobo-error.log
/var/log/nginx/passerelle-access.log
/var/log/nginx/passerelle-error.log
/var/log/nginx/wcs-access.log
/var/log/nginx/wcs-error.log
Exemple pour suivre ce qui concerne combo :
\# tail -f /var/log/nginx/combo-\*.log
### Mise à jour des composants
#### Fréquence de mise à jour
Entr'ouvert livre une nouvelle version de Publik les soirs des 2ème et
4ème jeudi de chaque mois. L'installation peut être faite aussitôt, mais
nous conseillons à des hébergeurs tiers non infogérés par Entr'ouvert de
faire la mise à jour le mardi suivant.
La mise à jour provoque une courte indisponibilité du système : elle
doit être faite sur des heures de faible affluence. Pour information,
Entr'ouvert effectue ces mises à jour autour de 22 ou 23h le jeudi soir,
en attendant une baisse de la fréquentation visible dans les logs nginx.
#### Déroulé en installation double (load-balancing)
S'agissant d'une installation double (load-balancing entre web1 et
web2), la procédure générale à suivre est :
1. arrêt du frontal nginx sur web2 ⇒ HAProxy envoie tout sur web1,
2. vérifier que PostgreSQL est bien fonctionnel,
3. mise à jour de web1 (procédure ci-dessous),
4. vérification du fonctionnement du site (parcours de 3 ou 4 URLs),
5. mise à jour de web2,
6. relance du frontal nginx sur web2,
7. vérification du fonctionnement du site (parcours de 3 ou 4 URLs).
Attention : si un service de Publik est redémarré alors que PostgreSQL
n'est pas disponible, ce démarrage ne fonctionnera pas. Il faudra
redemander le démarrage explicitement. Ceci signifie qu'il est très
fortement conseillé de faire la mise à jour de Publik indépendamment de
celle de PostgreSQL. Entr'ouvert conseille de faire la mise à jour de
PostgreSQL **avant** les composants de Publik.
Les composants de Publik sont livrés sous forme de paquet Debian, leur
mise à jour suit la procédure classique :
\# apt update
\# apt upgrade
Il est cependant possible qu'une nouvelle version demande l'installation
d'une nouvelle dépendance, dans ce cas « *apt upgrade* » refusera la
mise à jour et il faudra la forcer par :
\# apt full-upgrade
En cas de doute, contacter <support@entrouvert.com>
### Mise à jour PostgreSQL
La mise à jour de PostgreSQL peut être faite à chaud selon les
procédures Debian normales. Durant la mise à jour, les services ne
fonctionneront pas (réponses 5xx) et HAProxy délivrera une erreur «
maintenance ». Dès le redémarrage de PostgreSQL, les services Publik
rétabliront les connexions vers le serveur SQL et le système sera à
nouveau utilisable.
Attention : si un service de Publik est démarré ou redémarré alors que
PostgreSQL n'est pas disponible, ce démarrage ne fonctionnera pas. Il
faudra redemander le démarrage explicitement.
Support
-------
Les moyens de contact pour le support sont :
- l'extranet projet avec le gestionnaire de demandes (accès réservé) :
[https://dev.entrouvert.org/projects/ma](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[c](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[ollectivite](https://dev.entrouvert.org/projects/nanterre-rsu/issues)[/issues](https://dev.entrouvert.org/projects/nanterre-rsu/issues),
- la liste de discussion projet (abonnements sur demande) :
[ma](mailto:nanterre-rsu@listes.entrouvert.com)[collectivite](mailto:nanterre-rsu@listes.entrouvert.com)[@listes.entrouvert.com](mailto:nanterre-rsu@listes.entrouvert.com),
- le courriel spécifique support pour macollectivite (génère
automatiquement une demande) :
[support-ma](mailto:support-nanterre-rsu@entrouvert.com)[collectivite](mailto:support-nanterre-rsu@entrouvert.com)[@entrouvert.com](mailto:support-nanterre-rsu@entrouvert.com),
- le courriel support générique d'Entr'ouvert :
<support@entrouvert.com>.

5
installation-1.md Normal file
View File

@ -0,0 +1,5 @@
# Procédure dinstallation
Ce document présente installation dun système Publik standard. Des
adaptations sont naturellement à envisager en fonction des besoins
particuliers.

74
installation-2.md Normal file
View File

@ -0,0 +1,74 @@
# Pré-requis
## Résolution de noms
Avant l'installation de Publik il faut vérifier que les enregistrements
DNS sont fonctionnels; Publik nécessite autant de domaines que de
composants.
Typiquement :
- portail usager (composant combo) :
moncompte.macollectivite.fr,
- portail agents (composant combo) :
agents-moncompte.macollectivite.fr,
- démarches (composant wcs/wcs-au-quotidien) :
demarches-moncompte.macollectivite.fr,
- fournisseur d'identités (composant authentic) :
connexion-moncompte.macollectivite.fr,
- hub de webservice (composant passerelle) :
passerelle-moncompte.macollectivite.fr,
- porte document (composant fargo) :
portedoc-moncompte.macollectivite.fr,
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.
## 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
publiques. (Lutilisation de certificats Letsencrypt est possible)
## Horloges synchronisées
Il est **indispensable** que les machines soient exactement à la même
heure. Les systèmes récent utilisent *systemd-timesyncd *par défaut.
*Ntp* est également possible.
## Envois des emails
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

98
installation-3.md Normal file
View File

@ -0,0 +1,98 @@
# Configuration des dépôts logiciels
## Vue générale
Les différents composants logiciels utilisés par Publik proviennent, par
ordre de préférence :
- de la distribution Debian GNU/Linux stable
- des *backports* officiels Debian, disposant du suivi de sécurité par
léquipe Debian,
- des paquets Debian fournis et maintenus par les projets *upstream,*
- de paquets Debian maintenus par Entrouvert qui en assure le suivi
de sécurité.
## Configuration des dépôts logiciels
Les machines doivent disposer des dépôts **jessie** et
**jessie-backports**.
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
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 | apt-key add -
apt update
Pricisons les paquets qu'on veut tirer de jessie-backports en éditant
*/etc/apt/preferences.d/backports :*
Package: python-django
Pin: release a=jessie-backports
Pin-Priority: 900
Package: python-django-common
Pin: release a=jessie-backports
Pin-Priority: 900
Package: gunicorn
Pin: release a=jessie-backports
Pin-Priority: 900
Package: python-pyasn1
Pin: release a=jessie-backports
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
## 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
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

92
installation-4.md Normal file
View File

@ -0,0 +1,92 @@
# Création des bases de données
## Vue générale
Chaque brique utilise une ou plusieurs bases de données PostgreSQL. Il
est courant dutiliser une installation à deux machines identiques en
master/slave. Publik peut utiliser un système PostgreSQL existant, le
cas échéant. Publik nécessite PostgreSQL en version 9 (>9.4 recommandée).
## Pré-requis : extensions PostgreSQL
Vérifier que les extensions PostgreSQL sont bien activées :
apt install postgresql-contrib
## Création des bases
Chaque composant Publik doit disposer :
- d'une base de données dédiée,
- d'un accès spécifique à cette base via un usager postgreSQL dédié
(avec un mot de passe SQL à créer pour chaque composant).
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';
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
nécessaire par la suite) :
- Combo
- Hobo
- Authentic
- Passerelle
- Fargo
- Bijoe
- Chrono
- Corbo
- Mandayejs
- Welco
Une brique est spécifique : w.c.s.. Pour w.c.s., il n'y a pas besoin de
création d'une base, elle sera effectuée lors de l'instanciation. En
revanche, l'utilisateur w.c.s. sur PostgreSQL doit avoir le droit
CREATEDB, donc :
*CREATE USER wcs PASSWORD 'indiquer-ici-le-mot-de-passe-pour-wcs'
CREATEDB;*
## Création des utilisateurs avec UID identiques sur web1 et web2
Comme des fichiers vont être partagés en NFSv3, il faut que les UID des
utilisateurs Unix concernés soient les mêmes sur les deux machines web1
et web2.
Voici un script pour faire cela sur web1 et web2 :
#!/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))
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

558
installation-5.md Normal file
View File

@ -0,0 +1,558 @@
# Installation des composants
Publik est la somme de plusieurs composants qui communiquent entre eux
via messages et webservices. Chaque composant est un paquet Debian qui
s'installe depuis de dépôt Entr'ouvert.
Lors de leur installation les briques sattendent à trouver un service
postgres fonctionnel. Afin de les satisfaire nous renseignons ces
paramètres de connexion avant leur installation.
## Installation RabbitMQ
# 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
bon fonctionnement avant de continuer l'installation. RabbitMQ est assez
sensible à la résolution DNS (présence de la machine locale dans
/etc/hosts, par exemple) :
Vérifier que le service tourne :
service rabbitmq-server status
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/lib/systemd/system/rabbitmq-server.service; enabled)
Active: active (running) since lun. 2017-07-17 10:09:57 CEST; 4 days
ago
Main PID: 580 (beam.smp)
Status: "Initialized"
CGroup: /system.slice/rabbitmq-server.service
├─ 580 /usr/lib/erlang/erts-6.2/bin/beam.smp -W w -A 64 -P 1048576 -t
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
Et absence d'erreur dans les logs, qui doivent ressembler à :
$journalctl -u rabbitmq-server.service
-- 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.
(Note : bien sûr, ce n'est pas un composant créé par Entr'ouvert, c'est
<https://www.rabbitmq.com/>)
## Installation Combo
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* :
# 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'
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)'
On installe ensuite le logiciel *combo* en (indiquant qu'il ne faut pas
suivre la recommandation d'installer PostgreSQL) :
# apt install combo postgresql-
Vérification avec *service combo status* :
service combo status -l
● combo.service - Combo
Loaded: loaded (/lib/systemd/system/combo.service; enabled)
Drop-In: /etc/systemd/system/combo.service.d
└─wait-for-mnt-data.conf
Active: active (running) since jeu. 2017-07-20 23:33:44 CEST; 19h ago
Main PID: 16324 (gunicorn)
CGroup: /system.slice/combo.service
├─16324 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
├─16335 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
├─16336 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30
├─16337 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
├─16342 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
└─16347 /usr/bin/python /usr/bin/gunicorn --bind unix:/run/combo/combo.sock --worker-class=sync --workers 5 --timeout=30 --name combo combo.wsgi:application
## Installation Passerelle
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/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'
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'
Nous pouvons ensuite installer le composant :
# apt install passerelle postgresql-
Et vérification avec *service passerelle status* qui doit montrer
«active (running)»
## Installation Fargo
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/macollectivite.py*
2. Installation du composant :
# apt install fargo postgresql-
3. Vérification avec *service fargo status* qui doit retourner « active
(running) »
## Installation Hobo serveur
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/macollectivite.py*
2. Installation du composant :
# apt install hobo postgresql-
3. Vérification avec *service hobo status* qui doit retourner « active
(running) »
## Installation Hobo agent
Il s'agit d'un composant qui va écouter les ordres de déploiement (ou
provisionning) envoyés par le serveur Hobo et les exécuter sur les
autres composants.
Installation :
# 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 :
service supervisor stop
service supervisor start
Et on vérifie que hobo-agent est bien lancé par supervisor :
service supervisor status
● supervisor.service - LSB: Start/stop supervisor
Loaded: loaded (/etc/init.d/supervisor)
Active: active (running) since lun. 2017-07-17 10:09:52 CEST; 4 days ago
CGroup: /system.slice/supervisor.service
├─1065 /usr/bin/python /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
├─1208 python2.7 /usr/bin/celery worker --hostname=agent.%h --app=hobo.agent.worker --loglevel=INFO --concurrency=1
└─1494 python2.7 /usr/bin/celery worker --hostname=agent.%h --app=hobo.agent.worker --loglevel=INFO --concurrency=1
## Installation Authentic
Le système Authentic, un peu plus ancien que les autres composants, ne
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-
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
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'
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
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...
## 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
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/macollectivite.py*
2. Installation du composant :
# apt install wcs postgresql-
3. Vérification avec *service wcs status* qui doit retourner « active
(running) »
## Installation de 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.
## 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
log_format combined_full '$remote_addr - $remote_user [$time_local] "$request" ' '$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"';
robots.txt et favicon communs dans
*/etc/nginx/includes/macollectivite-common.conf* :
location /favicon.ico { alias /var/www/html/favicon-macollectivite.ico; }
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),
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;
Il faut éventuellement adapter la configuration du HAProxy pour accepter
les grosses requêtes.
## Mise en place des virtualhost (frontaux HTTP des tenants des composants Publik)
Le soin est laissé à l'installateur de décider comment poser les
virtualhost ci-dessous dans nginx.
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
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".
### 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
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;
}
}
### Hobo
Même modèle que Combo :
server {
listen 80;
server_name ~^hobo-.*;
include includes/macollectivite-common.conf;
access_log /var/log/nginx/hobo-access.log combined_full;
error_log /var/log/nginx/hobo-error.log;
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
Même modèle que Combo, mais aucune diffusion de /media (il s'agit de
données privées dans Passerelle).
server {
listen 80;
server_name ~^passerelle-.*;
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;
}
}
### fargo
Même modèle que Combo, mais aucune diffusion de /media (il s'agit des
fichiers usagers privés dans Fargo).
server {
listen 80;
server_name ~^portedoc-.*;
include includes/macollectivite-common.conf;
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;
}
}
### Authentic
Comme Combo, sans diffusion des /media, et en utilisant le nom du
service *authentic2-multitenant.*
server {
listen 80;
server_name ~^connexion-.*;
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;
}
}
### w.c.s.
server {
listen 80;
server_name ~^demarches-.*;
include includes/macollectivite-common.conf;
access_log /var/log/nginx/wcs-access.log combined_full;
error_log /var/log/nginx/wcs-error.log;
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;
}
}
## Vérification des réponses de Nginx
Une fois les virtualhost en place, les sites doivent répondre par des
erreurs 404 : ce sont les applications de Publik qui répondent qu'elles
n'ont pas encore d'instance liés aux noms prévus.
C'est tout de même déjà le temps de vérifier :
- que les certificats HTTPS sont ok,
- 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/)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.

202
installation-6.md Normal file
View File

@ -0,0 +1,202 @@
# 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/)**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.
## Préparation, création du fichier «recipe»
Installation des thèmes Publik (incluant le thème pour
macollectivite) :
apt install publik-base-theme
Création d'un fichier de déploiement
*/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 :
{
"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
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
## Vérification du déploiement
A la fin du déploiement, les logiciels Publik Django packagés doivent
avoir déployé les instances dans PostgreSQL (schémas visibles dans
chaque base) mais surtout crée le répertoire contenant la configuration
du site cible :
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
w.c.s. créé directement une base de données
*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 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.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
page de connexion avec un design proche de la pré-prod,
- https://passerelle-moncompte.macollectivite.fr : doit re-diriger
vers le site connexion-moncompte précédent,
- 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.
## Configuration de la gestion des identités
### Configuration de l'authentification LDAP
Création d'un fichier
*/var/lib/authentic2-multitenant/tenants/connexion-moncompte.macollectivite.fr/settings.json.*
(Conseil : prendre modèle sur le fichier identique en pré-prod et
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
}
]
}
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
Cette commande ne doit rien afficher (ce qui signifie que tout s'est
bien déroulé), les comptes doivent être visibles dans
[https://connexion-moncompte.](https://connexion-moncompte.nanterre.fr/manage/users/)macollectivite[.fr/manage/users/](https://connexion-moncompte.nanterre.fr/manage/users/)

193
installation-7.md Normal file
View File

@ -0,0 +1,193 @@
# Paramétrage du partage de fichiers
## Démarrer les services uniquement après le montage de /srv/nfs
Ajouter pour les services liés à Publik un supplément
*RequiresMountsFor=* à la description du service
Exemple pour Combo :
cat /etc/systemd/system/combo.service.d/wait-for-mnt-data.conf
[Unit]
RequiresMountsFor=/srv/nfs
Faire de même avec :
- les services systemd-isés qui ont besoin de */srv/nfs* : Combo,
Fargo, Passerelle.
- les services bientôt systemd-isés (avant fin 2017, donc prévoir dès
maintenant le supplément) : authentic2-multitenant, hobo,
hobo-agent, wcs
# Mise en place de léquilibrage de la charge
## Vue générale
Le principe est de déplacer vers le partage de fichier (NFS) les
éléments de configuration de web1 :
- les répertoires de configuration */etc/xxx* des composants Publik,
copiés vers */srv/nfs/publik/etc/xxx,*
- les données */var/lib/xxx* de ces mêmes composants, copiés vers
*/srv/nfs/publik/var-lib/xxx,*
- la configuration nginx ; copiés vers */srv/nfs/publik/etc/nginx/xxx*
et */srv/nfs/publik/var-www/html.*
Sur **web1 et sur web2**, on utilise alors des liens symboliques :
- Configuration : */etc/xxx* → */srv/nfs/publik/etc/xxx,*
- Données : */var/lib/xxx* → */srv/nfs/publik/var-lib/xxx,*
- Configuration nginx.
### Détail des opérations
Création des répertoires partagés :
- configurations: */srv/nfs/publik/etc*,
- données des tenants: */srv/nfs/publik/var-lib/,*
- éléments web (favicon, robots.txt): */srv/nfs/publik/var-www/,*
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
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
3. Même procédure avec *fargo*
4. Même procédure avec *passerelle*
5. Même procédure avec *hobo*
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
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
2. Éléments web statiques
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/* .
### Opérations sur web2
**Attention** : l'UID et le GUID de l'utilisateur "web" doit être
identique.
On prépare les répertoires de configuration et de données des composants
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
2. Service *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*
5. Même procédure avec *hobo*
6. Même procédure avec *authentic2-multitenant*
7. Configuration 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
2. Éléments web statiques
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/* .
On peut alors lancer l'installation des composants packagés. Attention,
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
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-macollectivite,
- publik-base-theme,
- gettext
## Désactivation des *crons* Publik sur web2
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 :
- */etc/cron.d/wcs,*
- */etc/cron.d/authentic2-multitenant,*
- */etc/cron.d/passerelle,*
- */etc/cron.hourly/python-combo,*
- */etc/cron.hourly/fargo.*

File diff suppressed because it is too large Load Diff