first version

This commit is contained in:
Emmanuel Garette 2020-04-23 07:37:43 +02:00
commit 7327b1fbbc

301
specification.txt Normal file
View File

@ -0,0 +1,301 @@
----------------------------
| L'usine d'infrastructure |
----------------------------
Définitions
===================
Machine physique
------------------
Le système est installé sans système de virtualisation.
Machine virtuelle
--------------------
Le système est installé avec système de virtualisation (virtualisation matérielle ou conteneur).
Machine
----------------
Le système est installé avec ou sans système de virtualisation.
Infrastructure immutable
---------------------------
Les données de la machine ne devront pas avoir de comportement unique.
Par exemple, un système avec de multiple mise à jour doit arriver strictement dans le même état qu'une machine fraîchement installé.
L'immutabilité permet de résoudre la problématique de la testabilité de l'infrastructure.
Cela va également éviter des comportements erratiques dun système qui devient de plus en plus complexe avec le temps.
Les données immutables sont strictement reproductible.
Infrastructure programmable
-----------------------------
Permet dautomatiser la gestion et lapprovisionnement de linfrastructure informatique grâce a des lignes de commande ou des fichiers textes.
Recette
-----------
Ensemble des instructions permettant d'arriver à un état.
Principes généraux
======================
- les services sont répartis sur différentes machines
- les machines sont immutables
- l'infrastructure est mise en place par une usine d'infrastructure
Types d'usagers
===============================
Développeur
-----------------
Personne qui travail sur le générateur de plate forme
Contributeur
-------------------
Personne qui réalise les recettes et les mets à disposition.
Administrateur
-------------------
Personnes qui ont accès à l'ensemble ou une partie des éléments de l'infrastructure
Une gestion des droits permettra de définir ce que l'utilisateur à le droit d'administrer.
Utilisateur
--------------
Usager de l'infrastructure.
Types de données
===============================
Différents type de données
-------------------------------
Voici les différents types de données :
- données système : le système d'exploitation mais également les différentes applications et la configuration par défaut. Généralement installés depuis une distribution.
- données de configuration : les personnalisations (issue des recettes fait par les contributeurs en suivant les configurations utilisateurs)
- données temporaire :
- illimité : conservées jusqu'au redémarrage de la machine. Par exemple cache squid, cache base de donnée, ...
- limité dans le temps : données temporaires qui seront supprimés au démarrage ou si elles sont perimées. Par exemple : session, copie de fichier avant traitement, ...
- la SWAP
- données utilisateurs : données produits par l'utilisateur.
Les disques
-------------
Il existe trois types de disques :
- le disque système qui contiendra les données systèmes
- le disque de configuration qui comprendra les données de configuration
- le disque "data" qui comprendra les données temporaires et les données utilisateurs
Dans ces disques, il peut y avoir des partitions séparées.
La mutabilité des données
-------------------------------
Les données système sont immutables.
Les données de configuration sont immutables.
Les données temporaires sont mutables.
Les données utilisateurs sont mutables.
Approvisionnement
-----------------------
Toutes les données immutables sont approvisionnées, reproductible et non modifiable.
Les données mutables peuvent être approvisionnées pour les initialiser.
Les répertoires temporaires mutables n'ont pas vocation a être provisionnés.
Les données mutables peuvent être facilement réinitialisé par l'administrateur et re approvisionnées.
Mise à jour
--------------
- des données systèmes d'une machine physique :
- la machine doit passer dans un état mutable pour les données systèmes
- la mise à jour système (notamment de la distribution) est effectuée
- la machine est redémarré
- des données systèmes d'une machine virtuelle :
- l'image est regénéré (pas de mise à jour)
- mise à disposition
- la machine est redémarré
- des données immutables de configuration :
- regénéré
- mise à disposition
- la machine est redémarré
- des données mutables utilisateurs : peuvent être mise à jour si nécessaire
- des données mutables temporaires : ne sont pas mise à jour, elles sont réinitialisés par un redémarrage.
Les recettes
----------------
Il existe deux grandes familles de recette :
- les recettes pour construire les données systèmes :
- pour mettre à disposition un système de base par système d'exploitation et par version
- pour installer les paquets spécifiques au service, les fichiers, script a exécuter, ...
- les recettes pour construire les données de configuration et approvisionnées les données mutables :
- les fichiers de configuration
- activation de service, ...
- le nécessaire pour faire les différents approvisionnement et mises à jour
Sauvegardes
----------------
Seules les données mutables sont sauvegardées.
Elles peuvent être sauvegardées :
- directement
- après extraction
Taille
----------
La taille des disques de données est définit par le contributeur dans une recette et n'est pas modifiable par l'administrateur.
Seule les partitions mutables sont redimensionnable (il est possible de les augmenter). C'est le contributeur qui décide de les augmenter.
La taille des données système ne doivent pas dépasser idéalement les 500 Mo.
Différents composants
=============================
Description de l'infrastructure
---------------------------------------
La description de l'infrastructure se fait par les administrateurs suivant les droits.
L'infrastructure est décrit via la ligne de commande.
L'infrastructure se défini avec les objets suivant :
- le cluster de virtualisation
- des noeuds de calculs
- des sites
- des zones
- des services
Génération des données de configuration
----------------------------------------------
FIXME description de la partie Rougail
Installation du système
---------------------------
Les données du système sont installés de façon automatique.
L'installation se fait en suivant les recettes mis à diposition par les contributeurs.
Les recettes sont spécifiques à la distribution.
Le système installé est ensuite mis à disposition dans le disque prévu à cette effet. Ce disque est générique et peut servir pour plusieurs service de même type.
Personnalisation des fichiers de configuration
----------------------------------------------------
Les fichiers de configuration sont générés à partir des recettes fournis par les contributeurs et la configuration défini par l'administrateur.
L'administrateur prépare la configuration via la ligne de commande.
L'administrateur peut faire des modèles de serveurs contenant les valeurs par défaut des différents serveurs hérité de ce serveur modèles. Le multi-héritage et l'héritage multiple est possible.
L'administrateur commence par faire un "brouillon" de configuration qu'il devra valider lorsqu'il sera satisfait.
C'est cette configuration qui sera utilisée pour générer les fichiers de configuration.
Ces fichiers de configuration sont ensuite mis à disposition dans le disque prévu à cette effet.
Approvisionnement et mise à jour des données mutables
-----------------------------------------------------
L'approvisionnement et la mise à jour se fait via des procédures prévus dans la recette et dans les fichiers de configuration suivant les besoins du service.
Fournisseur
--------------
FIXME décrire le fonctionnement de factory
Fournisseur d'identité
--------------------------
PKI
-----
- SSL
L'ensemble des certificats doivent être signé par une autorité de certification centralisée.
Il est nécessaire de gérer 2 types d'autorités :
- une autorité extérieur pour que les services soient valide avec des acteurs hors de la plateforme
- une autorité interne
Aucun certificat généré sur la machine ne doit être utilisé.
- SSH
Les clé SSH sont signés par une autorité géré par l'usine d'infrastructure.
Cette signature :
- n'a une validité que d'une journée
- autorise la connexion au serveur via un compte nominatif
Les secrets
--------------
Différents mots de passe :
- pour se connecter aux différents machines via root (mode secours)
- un mot de passe par administrateur pour se connecté sur une machine
- pour se connecter en lecture ou en écriture sur les différents services
Outil de l'administrateur
------------------------------
L'administrateur peut piloter l'infrastructure via une ligne de commande unique.
L'utilisateur doit avoir une ouvrir une session d'administration pour avoir accès aux différentes fonctionnalités de la plateforme.
Les droits d'accès sont validé par la plateforme.
Sécurisation de l'infrastructure
=======================================
Réseau d'administration
----------------------------------------------
Un réseau d'administration est mis en place.
Les administrateurs doivent être physiquement sur ce réseau pour faire des tâches d'administration sur les machines.
Ce réseau n'est pas routable.
Seul les tâches d'adminitration y sont autorisés.
Tout le traffic sur ce réseau doit être considéré comme illégitime et doit générer une alerte.
Connexion sur un interpreteur de commande
-----------------------------------------------
Il y a deux type de connexion sur un interpréteur de commande :
- automatisée : les connexions se font via SSH avec un compte générique autorisé sur l'ensemble des machines. Ce compte peut devenir root sans mot de passe
- manuelle :
- il faut que l'utilisateur ait les droits
- les droits utilisateurs sont définit dans les données de configuration
- la connexion est autorisé via SSH
- la connexion est autorisé via TTY
- le compte nécessite un mot de passe pour devenir root
- les connexions SSH sont valide sans passer par le mécanisme TOFU
- le répertoire de connexion est temporaire et créé à la connexion, aucune donnée utilisateur dans ce répertoire ne sera conservé
- mode secours : il existe un mode secours où l'utilisateur peut se connecter en root via TTY. Ce mode n'est a utilisé qu'en dernier recours et doit être justifié. Une alerte doit être remontée.
L'ensemble des connexions se font via le réseau administratif.