> For the complete documentation index, see [llms.txt](https://documentation.efalia.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://documentation.efalia.com/produit/efalia-egov/installation/procedure-installation.md).

# Procédure d’installation

Comme dit précédemment, l'installation va être réaliser grâce à l'outil Ansible.

## Récupération du livrable

Le livrable fourni par Efalia est composé d'une archive au format zip. La première étape sera de choisir un emplacement et d'extraire l'archive dans un répertoire.

Dans le cas d'une installation sur une machine de déploiement nous créerons un dossier « deploiement\_egov » dans le dossier home de l'utilisateur courant. Par exemple, nous créerons un dossier « /home/user/deploiement\_egov ».

Dans le cas d'une installation en local sur le serveur nous créerons un dossier « deploiement » dans le dossier home de l'utilisateur courant. Par exemple pour le déploiement nous créerons un dossier « /home/user/deploiement » sur le serveur de test.

## Description du livrable

Le livrable est composé des dossiers suivants :

#### Dossier inventory

Ce dossier va contenir des fichiers permettant de définir les machines sur lesquels nous allons intervenir. Nous aurons donc un fichier par environnement.

Nous fournissons un fichier hosts.local et un fichier hosts.tpl.

<figure><img src="https://3557286639-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FcnnXLnfB61CBUw4H9Fho%2Fuploads%2Fgit-blob-0239ca81dd069552cb3a13897917cb5b73b7ec1c%2Fegov-install-procedure-dinstallation-01.png?alt=media" alt=""><figcaption></figcaption></figure>

Le fichier hosts.local est la configuration à utiliser lors de l'installation sur le serveur en local.

Le fichier hosts.tpl est un fichier de template à dupliquer et à adapter à l'environnement cible.

La configuration proposée contient :

* Un groupe « vm\_test\_sixtzen » qui contient une machine cible unique.
* Un groupe « sixtzen:children » qui contient les groupes applicatifs à déployer
* Des groupes applicatifs « sixtzen\_\*\*\* :children » qui contiennent les groupes de machines cibles

Les commandes proposées plus tard utiliseront ces différents groupes pour déterminer les rôles des différentes machines et les applications à déployer sur chacune d'elle.

#### Dossier packages

Il contient l'ensemble des configurations et des archives nécessaires à l'installation du progiciel Efalia eGov sur un environnement.

Il y a un dossier par environnement.

Avant installation nous recommandons d'aller vérifier le paramétrage :

* du fichier « /packages//vars/application.yml » : de fichier contient les

différents paramètres utiles à l'application : notamment « app\_name », « app\_frontoffice\_url », « app\_backoffice\_url », …

* de la présence des certificats dans le répertoire « /packages//certs » (la

présence est facultative car on peut aller chercher des certificats directement sur le serveur, voir le paramétrage du fichier précédent).

#### Dossier playbooks

Il s'agit du répertoire contenant les scripts d'instructions ansible à jouer.

#### Dossier vault

Il s'agit du répertoire contenant les fichiers de mots de passe encryptés, il y aura un vault par inventaire (même nom).

#### Dossier zips

Il s'agit du répertoire ou il faudra déposer les packages livraisons.

#### Script d’installation

Afin de simplifier l'utilisation de l'outil, un script (deployer.sh) est fourni afin d'encapsuler les lignes de commande.

```bash
# Permet d'afficher l’aide
./deployer.sh -h
```

## Procédure d’installation

Nous partons du principe que le fichier d'inventaire a été réalisé, que le package d'installation a été préparé et que les fichiers de configuration ont été vérifié, que les certificats sont présents et que les accès aux différentes machines ont été préparés (voir pré-requis).

{% stepper %}
{% step %}

### Installation d’outils nécessaires

Il faut ouvrir un terminal et se positionner dans le dossier de livraison qui a été présenté dans la section précédente, puis lancer la commande suivante :

```bash
# Permet d'installer des outils nécessaires au playbook sur le poste installateur
./deployer.sh pre-install
```

Cette commande va installer les différents éléments nécessaires à la machine de déploiement que nous aurons besoin pendant l'installation de Efalia eGov.
{% endstep %}

{% step %}

### Création du Vault

Le vault est le fichier qui va contenir l'ensemble des mots de passe nécessaire à l'installation de l'architecture : par exemple, il contiendra les mots de passes des utilisateurs techniques de la base de données. Par convention, il faudra créer un fichier vault par fichier d'inventaire.

La commande pour la génération des vaults sera :

```bash
# Permet de lancer la génération d’un fichier de vault
./deployer.sh vault init production
```

Lors de la commande, il vous sera demandé un mot de passe qui sera nécessaire pour les futures installations/mises à jour de l'environnement.

Il vous sera possible de modifier ou lire les mots de passes si besoin :

```bash
# Permet de lancer la lecture d’un fichier de vault
./deployer.sh vault read production
# Permet de lancer la modification d’un fichier de vault
./deployer.sh vault edit production
```

{% endstep %}

{% step %}

### Lancement de l’Installation de la solution

En fonction du cas, lancer la commande en adaptant le fichier d'inventaire. Ces commandes lanceront l'installation complète de la solution infrastructure et déploiements.

Dans le cas d'une installation via clé ssh :

```bash
# Permet de lancer le déploiement sur les machines cibles
./deployer.sh install production --ask-become-pass
```

On nous demandera de saisir le mot de passe du user distant ainsi que le mot de passe du vault production.

Dans le cas d'une installation sans clé ssh :

```bash
# Permet de lancer le déploiement sur les machines cibles
./deployer.sh install production
```

On nous demandera de saisir le mot de passe du vault production.
{% endstep %}
{% endstepper %}

#### Détail du processus d’Installation

Après avoir lancé l'installation, ansible va vérifier la disponibilité des serveurs puis lancer l'installation.

Ansible va réaliser les différentes étapes d'installations :

{% stepper %}
{% step %}

### Choix du package à installer

La première étape sera de choisir le package à exécuter : il faudra saisir le numéro de ligne (généralement 1) puis entrée pour valider. Cette étape permet à l'utilisateur de vérifier que l'environnement et le package correspondent (surtout sur une machine de déploiement ou l'on peut en avoir plusieurs).
{% endstep %}

{% step %}

### Vérification de la présence des paramètres obligatoires

{% endstep %}

{% step %}

### Installation de l'infrastructure

Chaque brique de la solution sera installée puis paramétrée par l'outil à partir d'une machine vierge.
{% endstep %}

{% step %}

### Déploiement de Efalia eGov sur l'infrastructure

L'application sera installée et configurée sur Tomcat et Apache.
{% endstep %}
{% endstepper %}

A la fin de l'installation un récapitulatif des actions effectuées est affiché et l'application est normalement accessible.

## Procédure de mise à jour

Il est possible et recommandé de régulièrement mettre à jour les packages de l'os via le gestionnaire de package de l'os de la machine. Il faudra se connecter directement à la machine cibles et gérer les packages (commandes en fonction de votre os qui ne sera pas traité dans ce document). Il n'est pas recommandé de mettre à jour l'os sans consulter Efalia au préalable.

Cas particulier : la mise à jour de tomcat ne dépend pas du gestionnaire de package, c'est l'outil qui se chargera de le mettre à jour.

La commande à lancer :

```bash
# Vérifier la version installée
/opt/tomcat/bin/catalina.sh version
# si besoin, lancer la mise à jour de la brique tomcat qui nécessite un redéploiement complet de
l’application
./deployer.sh install production --tags infrastructure-tomcat,deployment
```

Dans la majorité des cas, la mise à jour va être un déploiement de la webapp sans toucher à l'infrastucture (ie briques apache, postgresql, activemq, elasticsearch, tomcat).

Il est cependant possible que certaines mises à jour imposent la mise à jour d'autres briques (changement de certificat…).

#### Mise à jour de l’application

**5.4.1.1 Préparation du package**

Pour installer l'application il nous faudra un package contenant d'une part les composants de l'application et d'autre part la configuration.

Pour cela, il faudra dans un premier temps récupérer le livrable fourni par Efalia sur la forge : souvent nommé « deployer.tar.gz » et le copier dans le répertoire « zip » du dossier de livraison (à créer si non présent).

```bash
# Permet de générer le package d’installation
./deployer.sh package
```

La première étape est de sélectionner un package existant contenant la configuration de l'environnement que l'on veut mettre à jour (il est recommandé de prendre le dernier package utilisé lors de la dernière mise à jour).

La deuxième étape est de sélectionner l'archive déployer.tar.gz précédemment téléchargé.

A la fin de la commande un nouveau package est présent dans le répertoire « package » du dossier de livraison : il aura la forme « \<nom du package où se trouvait la configuration>\_\<version contenu dans l'archive> ».

{% hint style="info" %}
Un seul package avec un nom et une version peut être créé donc on peut obtenir des erreurs si l'on essaie de créer deux fois le même package.
{% endhint %}

**Lancement de l'installation**

Si l'on n'a pas besoin de toucher le paramétrage lancer simplement la commande suivante. On relance une installation partielle avec juste l'étape de déploiement de l'application :

```bash
# Exemple, reprendre la commande utilisée lors de l’installation
# Permet de lancer le déploiement sur les machines cibles
./deployer.sh update production
```

On nous demandera de saisir le mot de passe du vault production.

Lors de la modification de certains paramètres de configuration, il peut être nécessaire de mettre à jour l'infrastructure. Il faudra adapter les tags dans la commande d'installation (se reporter à la section Erreur lors de l'installation).

Par exemple, lors de la mise à jour de nom de domaine ou de certificat, il est nécessaire de mettre à jour la brique apache en plus du déploiement de l'application.

La commande à lancer devient :

```bash
# Exemple, reprendre la commande utilisée lors de l’installation
# Permet de lancer le déploiement sur les machines cibles avec une mise à jour d’un composant de
l’architecture (par exemple tomcat)
./deployer.sh install production --tags infrastructure-tomcat,deployment
```

#### Mise à jour des certificats

Les certificats peuvent être gérer (ou non) par notre outil de déploiement.

S'ils sont gérés, les certificats présents dans « /packages//certs » sont recopiés dans le répertoire de destination des certificats « /etc/ssl/6tzen ».

Dans ce répertoire de destination se trouveront les certificats réellement utilisés par le serveur web avec un nommage normalisé :

* Deux fichiers "6tzen-back.crt" et "6tzen-back.key" pour le backoffice
* Deux fichiers "6tzen-portal.crt" et "6tzen-portal.key" pour le portail

{% tabs %}
{% tab title="Méthode avec notre outil" %}

* Se rendre dans (à adapter) : « /packages//certs »
* Remplacer "6tzen-back.crt" ainsi que "6tzen-back.key" et/ou "6tzen-portal.crt" ainsi que "6tzen- portal.key"
* Lancer la mise à jour de l'infrastructure via la commande suivante

```bash
./deployer.sh install test --tags infrastructure-certif,infrastructure-apache
```

{% endtab %}

{% tab title="Méthode sans notre outil" %}

* Se rendre dans "/etc/ssl/6tzen"
* Remplacer "6tzen-back.crt" ainsi que "6tzen-back.key" et/ou "6tzen-portal.crt" ainsi que "6tzen- portal.key"
* Relancer le service avec la commande

```bash
# pour les os Debian
systemctl restart apache2

# pour les os Red Hat
systemctl restart httpd
```

Facultatif mais recommandé pour les prochaines modifications d'architecture avec notre outil :

* Se rendre dans (à adapter) : « /packages//certs »
* Remplacer "6tzen-back.crt" ainsi que "6tzen-back.key" et/ou "6tzen-portal.crt" ainsi que "6tzen- portal.key"
  {% endtab %}
  {% endtabs %}

## Erreurs lors du processus d’installation/mise à jour

Il peut arriver que des erreurs surviennent lors de l'installation, un message rouge arrive avec un log d'erreur et la procédure s'interrompt. Il faut alors corriger l'erreur puis relancer l'installation.

On doit repartir de zéro : l'installation étant idempotent, cela prendra un peu plus de temps mais cela ne posera aucun problème.

Il est tout de même possible de ne lancer qu'une partie de l'installation avec l'utilisation de « tags ». Il n'existe à ce jour que les tags suivants :

* infrastructure : responsable des opérations d'installation de chaque composant de l'infrastructure
* infrastructure-\* : responsable des opérations d'installation d'un composant unique de l'infrastructure (elasticsearch, activemq, tomcat, postgres, certif, apache)
* tools : responsable de l'installation des outils complémentaires nécessaire au bon fonctionnement de l'application
* deployment : responsable du déploiement de l'application

Ces tags peuvent être utilisés en ajoutant l'option suivante à la commande d'installation :

```bash
# Exemple, reprendre la commande utilisée lors de l’installation
# Permet de lancer le déploiement sur les machines cibles
./deployer.sh install production --tags infrastructure-apache,infrastructure-tomcat
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://documentation.efalia.com/produit/efalia-egov/installation/procedure-installation.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
