Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
| eadl:bloc4:fm4:td4 [2026/06/25 01:24] – [1. Compréhension de l'application] jcheron | eadl:bloc4:fm4:td4 [2026/06/25 13:14] (Version actuelle) – [8. Pourquoi systemd plutôt que nohup] jcheron | ||
|---|---|---|---|
| Ligne 36: | Ligne 36: | ||
| * Dépôt GitHub disponible avec les droits d' | * Dépôt GitHub disponible avec les droits d' | ||
| * Java 17 et Maven installés sur le poste de travail | * Java 17 et Maven installés sur le poste de travail | ||
| + | |||
| + | Rappel sur les environnements d' | ||
| + | |||
| + | * Java et Maven sont nécessaires sur le **poste de travail** pour compiler l' | ||
| + | * Java est nécessaire sur **l' | ||
| + | * Maven n'a pas sa place sur l'EC2 : on y dépose uniquement le jar déjà compilé | ||
| ===== 1. Compréhension de l' | ===== 1. Compréhension de l' | ||
| Ligne 54: | Ligne 60: | ||
| <WRAP round question> | <WRAP round question> | ||
| - | Questions de compréhension : | + | Ce fichier sera commité dans Git avec le reste du code source. |
| - | * Pourquoi le mot de passe en clair dans ce fichier | + | * Quelles sont les conséquences concrètes si un dépôt contenant |
| - | * Que se passe-t-il si ce fichier est commité dans Git ? | + | * Un attaquant qui récupère ce fichier a-t-il accès à la base de données directement ? Quels autres éléments lui manquent-il |
| - | * Quel service AWS permet de corriger cette situation | + | * Pourquoi externaliser ce secret dans Secrets Manager ne suffit pas si le code qui le récupère est lui-même mal sécurisé |
| </ | </ | ||
| Ligne 122: | Ligne 128: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Pourquoi utilise-t-on | + | Dans un pipeline CI/CD en production, ignorer les tests avec '' |
| - | Dans quel cas ne faudrait-il pas ignorer les tests ? | + | * Dans quelle situation précise serait-il acceptable de l' |
| + | * Quels types de tests seraient les plus critiques à conserver pour une application qui manipule une base de données | ||
| </ | </ | ||
| Ligne 154: | Ligne 161: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Questions d'analyse : | + | Sur un système Linux, les arguments passés à un processus sont visibles via ''ps aux'' |
| - | * Quels sont les problèmes concrets | + | * Quelle est la conséquence concrète |
| - | * Que se passe-t-il si l' | + | * Cette méthode de déploiement crée une dépendance forte entre le déploiement et la présence d'un opérateur humain. Quels risques cela introduit-il à l' |
| - | * Pourquoi | + | |
| </ | </ | ||
| Ligne 170: | Ligne 176: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Analysez l' | + | Avant de chercher la solution |
| - | * Pourquoi l'application ne peut-elle pas se connecter à '' | + | * L'erreur indique |
| - | * Quelle valeur devrait remplacer | + | * Listez les couches réseau à vérifier |
| - | * Comment | + | |
| - | Commande utile pour tester la connectivité réseau : | + | Commande utile pour tester la connectivité réseau |
| <sxh bash> | <sxh bash> | ||
| - | # Depuis l' | ||
| nc -zv RDS_HOST 5432 | nc -zv RDS_HOST 5432 | ||
| </ | </ | ||
| Ligne 192: | Ligne 196: | ||
| Fichier : '' | Fichier : '' | ||
| - | <sxh ini> | + | <sxh ini; |
| [web] | [web] | ||
| EC2_IP ansible_user=ec2-user ansible_ssh_private_key_file=~/ | EC2_IP ansible_user=ec2-user ansible_ssh_private_key_file=~/ | ||
| Ligne 198: | Ligne 202: | ||
| Fichier : '' | Fichier : '' | ||
| - | <sxh ini> | + | <sxh ini; |
| [defaults] | [defaults] | ||
| host_key_checking = False | host_key_checking = False | ||
| Ligne 246: | Ligne 250: | ||
| Lancer le playbook : | Lancer le playbook : | ||
| - | <sxh bash> | + | <sxh bash; |
| ansible-playbook -i ansible/ | ansible-playbook -i ansible/ | ||
| </ | </ | ||
| Ligne 252: | Ligne 256: | ||
| Vérifier que le jar est bien présent sur l' | Vérifier que le jar est bien présent sur l' | ||
| - | <sxh bash> | + | <sxh bash; |
| ssh -i ~/ | ssh -i ~/ | ||
| </ | </ | ||
| Ligne 261: | Ligne 265: | ||
| Le jar est déployé mais l' | Le jar est déployé mais l' | ||
| - | <WRAP round help> | + | <WRAP round question> |
| Avant de regarder la section suivante : | Avant de regarder la section suivante : | ||
| - | * Quel élément manque dans le playbook | + | * Le playbook |
| - | * Comment | + | * Ansible peut exécuter des commandes |
| - | * Pourquoi ne doit-on pas mettre | + | * Quelle différence y a-t-il entre stocker |
| </ | </ | ||
| Ligne 366: | Ligne 370: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Questions de compréhension : | + | * '' |
| - | + | * Le service systemd démarre l' | |
| - | * Pourquoi utilise-t-on | + | * Si Secrets Manager retourne |
| - | * Pourquoi le fichier '' | + | |
| - | * Pourquoi ne jamais stocker ce secret dans le dépôt Git, même dans un fichier | + | |
| </ | </ | ||
| ===== 8. Pourquoi systemd plutôt que nohup ===== | ===== 8. Pourquoi systemd plutôt que nohup ===== | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Comparez les deux approches : | + | Comparez les deux approches |
| - | <sxh bash> | + | <sxh bash; |
| # Approche nohup – à ne pas utiliser en production | # Approche nohup – à ne pas utiliser en production | ||
| nohup java -jar demo.jar & | nohup java -jar demo.jar & | ||
| </ | </ | ||
| - | * Que se passe-t-il | + | * Un processus lancé |
| - | * Que se passe-t-il avec '' | + | * systemd expose des métriques sur les redémarrages successifs d'un service. En quoi cette information est-elle utile pour distinguer un bug applicatif d'un problème d'infrastructure |
| - | * Comment systemd résout-il ces deux problèmes ? | + | |
| - | * Quelle option du service systemd gère le redémarrage automatique | + | |
| </ | </ | ||
| Ligne 451: | Ligne 451: | ||
| En l' | En l' | ||
| - | <WRAP round help> | + | <WRAP round question> |
| Identifiez les problèmes avant de passer à la section suivante : | Identifiez les problèmes avant de passer à la section suivante : | ||
| - | * Quels secrets GitHub doivent être configurés pour que le pipeline fonctionne ? | + | * Le runner GitHub Actions |
| - | * Pourquoi le runner GitHub Actions | + | * L' |
| - | * Quel fichier | + | * Si la vérification de la clé SSH hôte est active, le pipeline se bloque |
| - | * Pourquoi la valeur | + | |
| </ | </ | ||
| Ligne 489: | Ligne 488: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Questions sur la sécurité des secrets CI/CD : | + | * Les secrets GitHub sont chiffrés au repos et masqués |
| - | + | * Ce pipeline | |
| - | * Pourquoi ne faut-il jamais mettre une clé AWS dans un fichier commité dans Git ? | + | |
| - | * Quelle est la différence entre un secret GitHub et une variable GitHub Actions ? | + | |
| - | * Comment s' | + | |
| </ | </ | ||
| Ligne 519: | Ligne 515: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | * Que doit retourner la commande | + | * L'accès direct |
| - | * Quelle différence y a-t-il entre accéder | + | * Dans une architecture avec plusieurs instances EC2 derrière |
| - | * Pourquoi vaut-il mieux exposer uniquement | + | |
| </ | </ | ||
| Ligne 536: | Ligne 531: | ||
| Fichier : '' | Fichier : '' | ||
| - | < | + | < |
| resource " | resource " | ||
| name = " | name = " | ||
| Ligne 579: | Ligne 574: | ||
| Tester la connexion sans clé SSH : | Tester la connexion sans clé SSH : | ||
| - | <sxh bash> | + | <sxh bash; |
| aws ssm start-session --target INSTANCE_ID | aws ssm start-session --target INSTANCE_ID | ||
| </ | </ | ||
| Ligne 586: | Ligne 581: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Comparez les deux méthodes de connexion : | + | * SSH ouvre un port entrant sur l' |
| - | + | * Un administrateur se connecte via SSM et exécute des commandes sensibles. | |
| - | * Quelle différence y a-t-il entre une session | + | * SSM améliore la traçabilité, |
| - | * Où sont enregistrées les sessions | + | |
| - | * Quel service | + | |
| </ | </ | ||
| Ligne 604: | Ligne 597: | ||
| Vérifier qu'une connexion SSH directe est bien refusée : | Vérifier qu'une connexion SSH directe est bien refusée : | ||
| - | <sxh bash> | + | <sxh bash; |
| ssh -i ~/ | ssh -i ~/ | ||
| # Attendu : Connection refused ou timeout | # Attendu : Connection refused ou timeout | ||
| Ligne 611: | Ligne 604: | ||
| Vérifier que Session Manager fonctionne toujours : | Vérifier que Session Manager fonctionne toujours : | ||
| - | <sxh bash> | + | <sxh bash; |
| aws ssm start-session --target INSTANCE_ID | aws ssm start-session --target INSTANCE_ID | ||
| </ | </ | ||
| Ligne 618: | Ligne 611: | ||
| ===== 13.4 Limite actuelle – Ansible et SSM ===== | ===== 13.4 Limite actuelle – Ansible et SSM ===== | ||
| - | <WRAP round help> | + | <WRAP round question> |
| - | Réflexion sur la limite de l' | + | * Le playbook Ansible utilise encore SSH pour se connecter à l' |
| - | + | * Dans une architecture sans SSH, deux alternatives à Ansible | |
| - | * Le playbook Ansible utilise encore SSH pour se connecter à l' | + | * Plus largement, |
| - | * Ansible | + | |
| - | * Pourquoi | + | |
| - | * Dans une architecture sans SSH, quelle alternative | + | |
| </ | </ | ||
| Ligne 645: | Ligne 635: | ||
| </ | </ | ||
| - | <WRAP round help> | + | <WRAP round question> |
| Questions de synthèse : | Questions de synthèse : | ||
| - | * Quels sont les points faibles restants dans cette architecture | + | * La rotation automatique du secret en point 1 résout un problème de sécurité, mais crée un risque opérationnel. Lequel, et comment le playbook Ansible doit-il être adapté pour y faire face ? |
| - | * Si l' | + | * Si l' |
| - | * Comment garantir qu'un déploiement raté ne met pas l' | + | * Ce pipeline déploie en continu sur la branche |
| </ | </ | ||
| Ligne 656: | Ligne 646: | ||
| <WRAP round todo> | <WRAP round todo> | ||
| - | Mettre en place un déploiement sans interruption de service | + | Mettre en place un déploiement sans interruption de service. |
| Modifier le playbook Ansible pour : | Modifier le playbook Ansible pour : | ||
| Ligne 708: | Ligne 698: | ||
| <WRAP round question> | <WRAP round question> | ||
| - | * Pourquoi | + | * Ce déploiement réduit l' |
| - | * Comment modifier | + | * Le lien symbolique est basculé avant le redémarrage du service. Si le redémarrage échoue, dans quel état se trouve l' |
| - | * Quelle est la différence entre ce déploiement et un vrai Blue/ | + | * Sans politique de nettoyage, les répertoires de releases s' |
| </ | </ | ||