CheatSheet - DevOps
Questions de QCM potentielles (DevOps)
1. Qu'est-ce que le DevOps ?
Le DevOps est une approche culturelle et pratique visant à favoriser la collaboration entre
les équipes de développement et d'exploitation pour accélérer la livraison de logiciels de
haute qualité.
2. Quels sont les principes clés du DevOps ?
Les principes clés du DevOps incluent l'automatisation des processus, la collaboration entre
les équipes, l'intégration continue pour détecter les erreurs tôt et le déploiement continu
pour livrer rapidement et fréquemment.
3. Quel outil est utilisé pour automatiser les builds, les tests et les
déploiements dans un pipeline DevOps ?
Jenkins est un outil d'intégration continue largement utilisé pour automatiser les builds, les
tests et les déploiements dans les pipelines DevOps.
4. Quelle pratique du DevOps consiste à définir l'infrastructure sous forme
de code ?
L'Infrastructure as Code (IaC) est une pratique du DevOps qui consiste à définir et gérer
l'infrastructure de manière programmable, souvent à l'aide d'outils comme Terraform ou
Ansible.
5. Quel est l'objectif principal du DevOps en termes de rapidité et de
fiabilité ?
L'objectif principal du DevOps est d'accélérer le développement logiciel tout en améliorant
la stabilité et la fiabilité des systèmes grâce à des pratiques telles que l'intégration
continue et le déploiement continu.
Notions clés (DevOps)
1. DevOps :
- Culture et pratique visant à unifier le développement logiciel et l'exploitation système.
- Favorise la collaboration, l'automatisation et l'intégration continue pour des
déploiements plus rapides et fiables.
2. Principes clés :
- Automatisation : Automatiser les processus manuels pour accélérer les déploiements et
réduire les erreurs.
- Collaboration : Encourager la communication et la coopération entre les équipes de
développement et d'exploitation.
- Intégration continue (CI) : Intégrer et tester le code fréquemment pour détecter les
erreurs rapidement.
- Déploiement continu (CD) : Livrer rapidement et fréquemment du code de haute qualité
aux utilisateurs finaux.
3. Outils et technologies :
- Git : Système de contrôle de version pour le suivi des modifications du code source.
- Jenkins : Outil d'intégration continue pour automatiser les builds, les tests et les
déploiements.
- Docker : Plateforme de conteneurisation pour créer, déployer et exécuter des
applications dans des environnements isolés.
- Kubernetes : Système open-source pour l'automatisation du déploiement, de la mise à
l'échelle et de la gestion des conteneurs.
- Ansible : Outil de gestion de la configuration pour automatiser le déploiement et la
gestion des infrastructures.
- Terraform : Outil d'infrastructure as code pour provisionner et gérer l'infrastructure
cloud de manière automatisée.
4. Bonnes pratiques :
- Infrastructure as Code (IaC) : Définir l'infrastructure sous forme de code pour une
gestion cohérente et reproductible.
- Microservices : Décomposer les applications en services indépendants pour une
évolutivité et une maintenance simplifiée.
- Monitoring et Logging : Surveiller les performances et la disponibilité des systèmes, et
enregistrer les événements pour le débogage et l'analyse.
5. Objectifs :
- Rapidité : Accélérer le développement et les déploiements pour répondre rapidement
aux besoins du marché.
- Fiabilité : Améliorer la stabilité et la disponibilité des systèmes grâce à des
déploiements automatisés et testés.
Questions de QCM potentielles (ANSIBLE)
1. À quoi sert Ansible ?
Ansible est un outil d'automatisation informatique qui permet de configurer des systèmes, de
déployer des logiciels, et de coordonner des tâches plus complexes comme des déploiements
continuels.
2. Comment Ansible communique-t-il avec les machines gérées ?
Ansible utilise SSH pour la communication avec les machines Linux/Unix et WinRM pour les
machines Windows, sans nécessiter d'agent sur les machines gérées.
3. Qu'est-ce qu'un playbook dans Ansible ?
Un playbook est un fichier YAML qui contient une liste de tâches à exécuter par Ansible.
Chaque playbook peut contenir plusieurs 'plays', et chaque 'play' peut cibler différents groupes
de machines.
4. Comment ordonner les tâches dans un playbook Ansible ?
Dans un playbook Ansible, les tâches sont exécutées dans l'ordre dans lequel elles sont listées.
Chaque tâche est généralement une action que le système doit exécuter.
Notions clés (Ansible) :
• Inventaire
- L'inventaire est un fichier où Ansible garde la trace de tous les serveurs qu'il gère. Il peut
être statique (fichier texte) ou dynamique (script qui récupère l'état des serveurs).
-
- Gère la liste des hôtes et groupes d'hôtes sur lesquels les commandes et playbooks seront
exécutés.
- Peut spécifier des variables spécifiques à un hôte pour une configuration détaillée.
• Rôles
- Les rôles permettent d'organiser de manière plus structurée les playbooks, en regroupant
des tâches, des fichiers de configuration, des templates, et des variables associées à un
aspect particulier de la configuration serveur.
- Facilitent la réutilisation du code et la modularité des configurations Ansible.
- Chaque rôle est conçu pour accomplir une fonction spécifique dans le processus
d'automatisation.
• Variables
- Les variables dans Ansible permettent de dynamiser les playbooks en ajustant les
comportements sans changer le code lui-même.
-
- Peuvent être définies à plusieurs niveaux (playbooks, inventaire, rôles).
- Utilisées pour personnaliser les déploiements en fonction des environnements ou des
spécificités des serveurs.
• Ad-hoc Commands
- Les commandes ad-hoc permettent d'exécuter des tâches simples rapidement sans écrire
un playbook complet.
- Utiles pour les tâches de gestion immédiate, comme le redémarrage des serveurs ou la
collecte d'informations système.
- S'exécutent directement depuis la ligne de commande.
• Idempotence
- Un concept clé dans Ansible qui assure que l'exécution répétée des playbooks sur un
environnement donné produira toujours le même état final, sans effet indésirable.
- Important pour garantir la stabilité et la prévisibilité des systèmes automatisés.
- Les tâches sont conçues pour ne modifier l'état que si cela est nécessaire.
Questions potentielles QCM (Terraform)
1. Qu'est-ce que Terraform ?
Terraform est un outil d'Infrastructure as Code (IaC) développé par HashiCorp, qui permet de
définir et de provisionner l'infrastructure informatique en utilisant une configuration de haut
niveau codifiée.
2. Qu'est-ce qu'un "provider" dans Terraform ?
Dans Terraform, un "provider" est un plugin qui permet de communiquer avec les APIs d'une
plateforme spécifique (comme AWS, Microsoft Azure, Google Cloud, etc.) pour gérer les
ressources.
3. Comment fonctionne le cycle de vie des ressources dans Terraform ?
Terraform suit un cycle de vie défini pour la gestion des ressources, qui inclut les étapes de
`plan`, `apply`, et `destroy`.
4. Qu'est-ce qu'un "state" dans Terraform ?
Le fichier d'état de Terraform (terraform.tfstate) enregistre les informations sur les ressources
gérées par Terraform pour suivre l'état actuel de l'infrastructure.
5. Comment peut-on organiser les configurations Terraform pour des projets
complexes ?
Pour des projets complexes, les configurations Terraform peuvent être organisées en utilisant
des modules, qui permettent de regrouper et de réutiliser des configurations pour des
composants spécifiques de l'infrastructure.
Notions clés (terraform) :
• Modules
- Les modules dans Terraform sont des conteneurs pour plusieurs ressources qui sont
utilisées ensemble. Un module peut être utilisé pour encapsuler un ensemble de
fonctionnalités réutilisables et distribuables.
- Permettent de créer des designs d'infrastructure comme code (IaC) plus propres et
réutilisables.
- Peuvent être stockés dans des registres Terraform pour être partagés entre plusieurs
projets ou équipes.
• Workspaces
- Les workspaces de Terraform permettent de gérer des états multiples avec la même
configuration pour supporter des déploiements parallèles ou différents environnements
(développement, test, production).
- Aident à isoler les environnements au sein d'un même projet sans dupliquer le code de
configuration.
- Utiles pour appliquer les mêmes configurations à différentes instances sans risque de
conflit.
• Variables et Outputs
- Terraform utilise des variables pour personnaliser les configurations sans altérer la
définition principale de l'infrastructure. Les outputs permettent d'extraire des
informations clés des ressources déployées.
- Les variables peuvent être définies par l'utilisateur ou chargées à partir de fichiers
externes.
- Les outputs peuvent être utilisés pour partager des données entre les modules ou pour
afficher des informations après le déploiement.
• Terraform Cloud & Enterprise
- Terraform Cloud et Terraform Enterprise offrent des fonctionnalités avancées pour la
collaboration, la sécurité, et la gestion à grande échelle des configurations Terraform.
- Support pour la gestion des états, le contrôle d'accès basé sur les rôles, et l'intégration
continue.
- Permettent une collaboration sécurisée entre les membres de l'équipe sur les projets
Terraform.
• Sentinel Policies
- Sentinel est un langage de politique intégré utilisé avec Terraform pour appliquer des
règles et des politiques de gouvernance de l'infrastructure.
- Permet aux organisations de définir des règles personnalisées qui sont exécutées lors
des plans et des applications de configurations Terraform.
- Aide à assurer que les déploiements respectent les normes de sécurité et de conformité
de l'entreprise.