Webinaire:
Fondamentaux, Bonnes
Pratiques et Coaching
Terraform
Mohamed El Mouctar HAIDARA
Senior DevOps Engineer
15/12/2024
1
Au programme
Qu’est ce que l’IaC et qu’est ce qu’il apporte?
Focus sur Terraform
Certification Terraform et Coaching
Démo: Déploiement d’une application à partir
de 0
Qui suis-je?
Senior DevOps Engineer
5x Certifié AWS - Terraform/GitLab - 8 ans d’XP
@elmhaidara_pro
@haidaraM
blog.haidara.io
● 2012: Bac scientifique au Mali
● 2012 - 2014: L1-L2 Licence maths-info Université Lyon 1 - Claude Bernard
● 2014-2017: Ingénieur diplômé de l’INSA-Lyon + Échange académique en Suède
—
● Quelques expériences pro: Oracle, Groupe Casino, EDF, Devoteam, Veolia, Airbus
Helicopters, Grtgaz, Checkout.com.
Quelques projets
● Ansible-Playbook-Grapher: Un outil en Python permettant de générer des graphes de playbook
Ansible en SVG et en Flowchart Mermaid. ~650 stars et 55 forks sur Github.
Quelques projets
● Terraform Jenkins AWS Fargate: Projet Terraform pour déployer et configurer automatiquement
un contrôleur Jenkins et ses agents à partir de zéro sur AWS.
Quelques projets
● AWS App Mesh et chiffrement bout en bout: Projet Terraform montrant comment faire du
chiffrement bout en bout avec un service mesh sur AWS.
Quelques projets
● Blockaderunner: Jeu de type shoot'em up à défilement horizontal réalisé en C avec SDL et
FMOD Ex.
● ZSH History Cleaner: Un outil en ligne de commande écrit en Rust pour nettoyer son historique
ZSH.
1
Qu’est ce que l’IaC et
qu’est qu’il apporte?
Infrastructure as Code
Manière de gérer et déployer de l’Infrastructure informatique à
travers du code plutôt que des processus manuels ou des “scripts fait
maison”
Au lieu d’une configuration manuelle via des interfaces
graphiques (ClickOps)…, nous allons écrire du code avec des
outils dédiés pour gérer le cycle de vie de nos ressources.
On se concentre sur l’état souhaité décrit dans des fichiers de
configurations et l’outil d’IaC se charge d’atteindre cet état en utilisant les
APIs des fournisseurs de services.
Infrastructure as Code - Avantages
Automatisation/ Versioning & Partage et
Reproductibilité
Industrialisation Traçabilité modularité
Infrastructure as Code - Workflow
Quelques outils du marché
- Cloud Agnostic - AWS only - Cloud Agnostic, focus sur la
- Langages: HCL - Langages: Yaml/JSON configuration de serveurs
- Très grosse communauté - Langages: Yaml
- Cloud Agnostic - AWS only
- Langages: TS/JS, - Language: TS/JS,
Python, Java, Go, YAML… Python, Java, Go, C#...
2 Terraform
Terraform
• Outil en ligne de commande créé par Hashicorp en 2014. Écrit en Go.
• Fournit un framework (une machine à état) pour gérer des ressources
• Sans aucun doute l’outil d’IaC le plus populaire du marché.
• Grosse communauté et énormément de plugins (providers) et modules disponibles.
• Code écrit en Hashicorp Configuration Language (HCL): *.tf, *.tfvars
• Principales commandes
○ terraform init: Initialisation d’un projet Terraform
○ terraform plan: Analyse de la différence entre l’IaC et l’infrastructure déployé
○ terraform apply: Application de l’IaC sur l’infrastructure réel
○ terraform destroy: Destruction des ressources gérées par l’IaC
○ terraform validate: Validation de la configuration Terraform
Terraform - Cas d’usage
Déploiement de Infra en
Création vos libre-service via
Conformité et
d’infrastructure applications des
gestion des
cloud (et pas (dans une composants
politiques
que) certaine réutilisables
mesure)
Terraform - Concepts fondamentaux
• Providers: Plugin permettant à Terraform d'interagir avec différents fournisseurs de services cloud
tels que AWS, Azure, Google Cloud, Datadog, OVH etc.
Terraform - Concepts fondamentaux
• Registry Terraform: Registre où se connecte Terraform pour télécharger les providers et les
modules: https://registry.terraform.io/
• Statefile: Fichier contenant l’ensemble des ressources et data sources géré par un projet
Terraform. Le backend défini où est stocké ce fichier: S3, GCS, local.
Terraform - Concepts fondamentaux
• Ressource: Décrit l’état souhaité d’un objet d’infrastructure. Les ressources sont fournies par les
providers.
• Data source: Permet de récupérer l’état d’un objet existant.
Terraform - Concepts fondamentaux
• Module: Ensemble de ressources réutilisables et partageables.
Terraform - Quelques Bonnes Pratiques
● Commencer à organiser votre code dans des fichiers et découper petit à petit:
○ main.tf: les resources principales de votre projet
○ variables.tf: la déclaration des variables
○ outputs.tf: les outputs du project
○ terraform.tf: la configuration des backends et des providers
● Spécifier une version pour les providers et modules du project.
● Pas de secrets/mot de passes dans le code. Utilisez des variables d’environnement.
● Utilisez un backend distant qui est versionné (S3 par exemple).
● Toujours formater votre code avec “terraform fmt”
● ….
Pour plus de bonnes pratiques: https://www.terraform-best-practices.com/fr
3 Certification et Coaching
HashiCorp Certified: Terraform Associate (003)
● Premier niveau de certification Terraform. Focus sur:
○ Une bonne compréhension des concepts de base.
○ La maîtrise des commandes principales.
○ Expérience pratique de Terraform.
○ Les bonnes pratiques pour la gestion des secrets.
○ Le travail en équipe sur un même projet.
○ L’offre de services d’Hashicorp (HCP)
● Durée: 1H. ~57 questions.
● Format: Questions à choix multiples
● En anglais.
● Validité 2 ans.
● 70$ ~= 44 000 FCFA
HashiCorp Certified: Terraform Associate (003)
Passer la certification fournit:
- Une bonne connaissance des concepts de base Terraform.
- Un esprit critique sur les cas d’utilisations de Terraform.
- Une reconnaissance professionnelle et la confiance des entreprises.
- Un avantage concurrentiel lors de vos candidatures.
Passer une certification de manière générale est un bon moyen d’apprendre une
nouvelle technologie au-delà du fait même “d’avoir la certification.“
Le Coaching Fournit par Le Cloud Facile
● Accès privilégié à un coach expérimenté et certifié sur Terraform.
● Une trentaine d’exercices pratiques basées sur le contenu de l’examen
et des cas réels.
● Sessions hebdomadaires de 2H pendant 8 semaines;
○ 45mn de réponses aux questions sur les exercices et les tutoriels
de la semaine précédente.
○ 1h de présentation ou démo sur un sujet spécifique.
○ 15mn de feedback et attribution des cours et exercices
pour la semaine suivante.
Ne manquez pas l'occasion de maîtriser Terraform et de propulser votre carrière vers
de nouvelles opportunités !
4 Démo
Démo - Déploiement d’une App Serverless
Context:
● On vous a demandé de créer un site web pour une entreprise moderne qui a récemment migré
l'intégralité de son infrastructure vers AWS.
● Ils souhaitent que vous démontrez un site web basique avec du texte et une image,
hébergé et géré selon les standards et pratiques modernes d'AWS.
Exemple de projet que j’ai eu à faire durant un processus de recrutement
Démo - Déploiement d’une App Serverless
Démo
https://github.com/haidaraM/devops-challenge/blob/main/README.md
DesDes questions?
questions?
29