amipo
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
amipo [2018/12/02 08:26] – bigMax | amipo [2020/02/07 14:05] (Version actuelle) – bigMax | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== AMIPO ====== | + | ====== |
L' | L' | ||
- | ===== Archi cible pour fin 2018 ===== | + | ===== Liste des choses en place ===== |
- | Liste des services que je pense pouvoir faire fonctionner d'ici fin 2018 : | + | * Architecture web |
- | * Frontal nginx | + | * La Homepage |
- | * Homepage | + | * Un serveur Prometheus pour héberger des métriques systemes. |
- | * Grafana | + | * Un serveur |
- | * Prometheus | + | * Un environnement de Dev déployable en local : [[ amipo_dev ]] |
- | * Vagrant | + | * Un déploiement |
+ | * Un serveur InfluxDb pour heberger des métriques temporelles | ||
+ | * Un serveur VerneMQ pour fournir un broker MQTT [[ amipo_mqtt ]] | ||
- | ===== Environnement de Dev ===== | + | ===== Liste des services à fournir à l' |
+ | * Un service d' | ||
+ | * Des backups | ||
+ | * Serveur turtl : un service de prise de note chiffré de bout en bout | ||
+ | * Serveur jirafeau : un service d' | ||
+ | * Serveur nextcloud : un service pour synchroniser et partager ses agenda et ses contacts | ||
- | ==== Vagrant | + | ===== Organisation ===== |
- | Nous utilisons | + | Nous utilisons |
- | \\ \\ | + | |
- | Liste des VMs : | + | |
- | * Controller ("Tour de controlle" | + | |
- | * Amipo1 (Image du serveur de Production) | + | |
- | === Synoptique du déploiement === | + | {{tag> |
- | - Création de la VM Controller avec Debian Stretch | + | |
- | - Ajout de l'IP de la VM Controller dans le fichier /etc/hosts de la machine hote | + | |
- | - Provisionnement de l' | + | |
- | - Création d'un volume disk autonome séparé pour la VM Amipo1 pour la (pas détruit à la destruction de la VM) | + | |
- | - Création de la VM Amipo1 avec Debian Stretch | + | |
- | - Ajout de l'IP de la VM Amipo1 dans le fichier /etc/hosts de la machine hote | + | |
- | - Bootstrap d' | + | |
- | - Provisionnement de l' | + | |
- | + | ||
- | === Provisionnement de la VM Controller === | + | |
- | - Installation des packages dnsmasq et vim | + | |
- | - Configuration de l' | + | |
- | - Génération de la clé ssh de provisionnement | + | |
- | - Création de fichier .ssh/ | + | |
- | - | + | |
- | === Provisionnement de la VM Amipo1 === | + | |
- | - Installation de vim | + | |
- | - Installation de nginx | + | |
- | + | ||
- | === Gestion des clés ssh dans l' | + | |
- | Pour se connecter sur les VM, par défaut Vagrant utilise une clé ssh nommé " | + | |
- | Il y a plusieurs clés ssh à distinguer : | + | |
- | * La clé ssh " | + | |
- | * La clé ssh d'un utilisateur qui est autorisé à se connecter sur le serveur. | + | |
- | * La clé ssh "de provisionnement" | + | |
- | + | ||
- | <WRAP center round important 60%> | + | |
- | Actuellement, | + | |
- | </ | + | |
- | + | ||
- | === Gestion des credentials ssh pour les differents environnements === | + | |
- | * L'env de dev utilise pour le moment la vagrant insecure private key pour les connextions ssh d' | + | |
- | * Les autres envs stage et prod nécessite des clés ssh personnelles que l' | + | |
- | * Le dossier .privateCredentials sera ignoré par git. | + | |
- | * Le fichier .privateCredentials/ | + | |
- | + | ||
- | === A positionner === | + | |
- | * root dev cert | + | |
- | * ssh keys | + | |
- | * | + | |
- | + | ||
- | + | ||
- | ===== Playbooks ansible ===== | + | |
- | Pour automatiser le déploiement des outils sur tous les environnements, | + | |
- | Buts : | + | |
- | * Pouvoir reproduire l' | + | |
- | * Faciliter le developpement en proposant un moyen d' | + | |
- | * Faciliter la maintenance | + | |
- | * Faciliter la diffusion la sécurisation et l' | + | |
- | + | ||
- | Liste des playbooks ansible à réaliser en adéquation avec la cible fin 2018 : | + | |
- | * [x] Installation et configuration du frontal nginx | + | |
- | * [x] Configuration de l' | + | |
- | * [x] Génération des certificats ssl / Déploiement de la config ssl | + | |
- | * [_] Sécurisation du serveur | + | |
- | * [_] Environnement du serveur | + | |
- | * [x] Déploiement de la homepage | + | |
- | * [_] Installation de Grafana | + | |
- | * [_] Configuration de Grafana | + | |
- | * [_] Installation de Prometheus | + | |
- | * [_] Configuration de Prometheus | + | |
- | * [_] Harmoniser les playbooks pour qu'il soit réutilisable sur les différents env | + | |
- | + | ||
- | Points difficiles : | + | |
- | * Installation et configuration du frontal nginx | + | |
- | * Configuration de l' | + | |
- | * Déploiement de la homepage | + | |
- | * Génération des certificats ssl | + | |
- | * Sécurisation du serveur | + | |
- | * Transition dev / stagging / prod | + | |
- | + | ||
- | ==== Installation et configuration du frontal nginx ==== | + | |
- | * La config actuellement externalisée dans un repo git specifique sera réintégré dans l' | + | |
- | * Chargement de tous les fichiers de conf dans le repertoire conf.d comme le suggere nginx | + | |
- | * Configuration des logs dans / | + | |
- | * Configuration de Nginx (timeout, gzip, HTTP headers, ...) | + | |
- | * Installation et configuration de logrotate | + | |
- | + | ||
- | ==== Configuration de l' | + | |
- | Le principe est de découpler la configuration de nginx et la configuration relative à l' | + | |
- | Ce playbook ne touche pas aux fichiers de config de nginx, il se contente d' | + | |
- | + | ||
- | Idée : | + | |
- | * Le server block www.amipo.fr est décrit dans un seul fichier dans le repertoire conf.d pour faire simple. On doit éviter de faire des inclusions dans ce fichier pour simplifier sa lecture. | + | |
- | * Le playbook contient un mapping lisible de tous les server blocks et locations block. | + | |
- | * On peut désactiver un à un chaque serveur block et location block dans la config du playbook. | + | |
- | * Le playbook construit un fichier complet sans include dans conf.d par server block. | + | |
- | * Il y a une grosse redondance de la configuration, | + | |
- | + | ||
- | ==== Generation des certificats ssl ==== | + | |
- | Idée : | + | |
- | * Installation de certbot en prod et en stagging | + | |
- | * Génération de certificat avec openssl en dev. Comment tester certbot en dev ? | + | |
- | * Maintenance / conservation du certificat racine de l' | + | |
- | + | ||
- | === En dev avec openssl === | + | |
- | * Génération d'une root AC propre à chaque poste de dev qui sera stoqué dans le repertoire " | + | |
- | * Génération des certificats nécéssaires à l' | + | |
- | * Installation de certbot | + | |
- | + | ||
- | === En prod avec certobt === | + | |
- | * les certificats seront déposés par certbot dans le repertoire: / | + | |
- | + | ||
- | ==== Déploiement de la homepage ==== | + | |
- | === Un playbook de déploiment des release === | + | |
- | * Cloner le repo git de la homepage | + | |
- | * Executer le script de compilation | + | |
- | * Eventuellement utiliser le playbook de l' | + | |
- | + | ||
- | === Un playbook de déploiement du workspace en cours de dev === | + | |
- | * Copier le workspace en cours de travail | + | |
- | * Executer le script de compilation | + | |
- | + | ||
- | ==== Sécurisation du serveur ==== | + | |
- | * Installation de fail2ban | + | |
- | * Configuration de iptables | + | |
- | * | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | {{tag> | + |
amipo.txt · Dernière modification : 2020/02/07 14:05 de bigMax