first version
This commit is contained in:
commit
7327b1fbbc
301
specification.txt
Normal file
301
specification.txt
Normal 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 d’un système qui devient de plus en plus complexe avec le temps.
|
||||
|
||||
Les données immutables sont strictement reproductible.
|
||||
|
||||
Infrastructure programmable
|
||||
-----------------------------
|
||||
|
||||
Permet d’automatiser la gestion et l’approvisionnement de l’infrastructure 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.
|
Loading…
Reference in New Issue
Block a user