first version
This commit is contained in:
commit
7327b1fbbc
|
@ -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