SlideShare une entreprise Scribd logo
1  sur  77
Télécharger pour lire hors ligne
CLOU
D
NORD
Retrouvez toutes les informations et la billetterie Cloud Nord sur : www.cloudnord.fr
VIRTUEL
7 & 8 Octobre
2021
REX Terraform sur des projets non triviaux
Pourquoi Terraform n’est pas le bon
outil pour les déploiements
automatisés dans le Cloud ?
Qui suis-je
2
• Architecte Azure freelance (Dev, Sec, Ops, k8s,
Terraform …)
• Evangéliste Apache Cassandra™ pour Datastax
Périmètre de discussion
3
Pourquoi Terraform n’est pas le bon outil pour
les déploiements automatisés dans le Cloud ?
Périmètre de discussion
4
Pourquoi Terraform n’est pas le bon outil pour
les déploiements automatisés dans le Cloud ?
Pourquoi cette présentation ?
5
• Mauvaises pratiques, mauvaise philosophie
• REX, conseils et pièges à éviter
TFstate
TFstate, à quoi ça sert ?
7
Code Terraform
(.tf, .tfvars)
Tfstate
(.tfstate)
Le cloud
TFstate, à quoi ça sert ?
8
Ce que je veux
(.tf, .tfvars)
Ce qui a été fait
(.tfstate)
La réalité
TFstate, désynchronisation
9
• Ressources modifiées en dehors de l’écosystème
Terraform
• modifications humaines via le portail AWS/Azure/GCP
• modifications déclenchées par des stratégies de gouvernance
(Azure Policies)
• modifications régulières pour raison de sécurité (rotation de mot
de passe, certificats TLS …)
@doanduyhai
Démo
TFstate, comment faire ?
11
• "lifecycle"
• Ne marche pas toujours !
TFstate, comment faire ?
12
• Ex: restauration d’une base PG
TFstate, comment faire ?
13
• Ex: restauration d’une base PG
TFstate, comment faire ?
14
• Ex: restauration d’une base PG
TFstate, comment faire ?
15
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
16
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
17
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
18
• Ex: restauration d’une VM via Azure Recovery Vault Service
à supprimer
à supprimer
restauré
restauré
TFstate, comment faire ?
19
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
20
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
21
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
22
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
23
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
24
• Ex: restauration d’une VM via Azure Recovery Vault Service
TFstate, comment faire ?
25
• Bidouille avec le tfstate
• lister tous les disques attachés à une VM après une restauration
• parser le Tfstate pour trouver l’ancien disque correspondant
• "terraform state rm <adresse_tf_disque>"
• "terraform import <adresse_tf_disque>
<nouveau_disque_resource_id>"
• Programme en Python (SDK Azure Python) pour
automatiser
@doanduyhai
@doanduyhai
TFstate, migration après code refactoring
28
• Les ressources ont été ré-organisées dans des modules
séparés
• Un cauchemar pour migrer le tfstate d’une infra existante
Tfstate, problèmes de conception
29
• Forcer le triplet : tf, tfstate & Cloud
• Le tfstate est statique (mis à jour au prochain "terraform
apply/refresh") mais le Cloud est dynamique
• Synchronisation des états dans un système distribué
(Cloud) == problème difficile connu depuis 50 ans
Tfstate et le marché
30
• Non, "le marché" n’a pas toujours raison !
• Trop d’effets de mode, pas assez de réflexion
• L’industrie commence à se rendre compte des soucis
posés par le Tfstate
@doanduyhai
Driftctl
32
• Initiative bienvenue …
• … mais ne règle pas le souci de fond
• L’infrastructure divergera toujours, c’est un fait !
API chérie, où es tu ???
Choix de conception conscient
34
• Terraform, c’est un gros "client" en GO
• Avantages
• facile à installer
• auto-suffisant (pas de dépendances à tirer partout) (GOLang)
• temps de prise en main express
Choix de conception conscient
35
• Terraform, c’est un gros "client" en GO
• Inconvénients
• pas d’API (REST, gRPC, XML etc …) en 2021
• Interopérabilité ~ 0
Exemples de bidouilles pour l’interopérabilité
36
• En entrée
• templating de fichiers tfvars
• passage d’arguments via variables d’ENV !
Exemples de bidouilles pour l’interopérabilité
37
• En sortie
• "terraform output -json" puis parsing JSON du stdout !
• tâche Azure DevOps "terraform output"
Exemples de bidouilles pour l’interopérabilité
38
• En sortie
• écrire les outputs dans un storage (AWS S3, Azure blob storage)
mais quid des outputs "sensibles" ???
• exporter les outputs comme variables d’env avec une ressource
"local-file"
Interopérabilité: résumé
39
Terraform
#{ Variables d’ENV }
tfvars
tfvars
valorisé
Moteur de templating
{….} parsing JSON stdout
AWS S3
#{ Variables d’ENV locales}
Azure blob
Choix de conception conscient
40
• On comprend mieux maintenant la fameuse
recommandation
Mélange control-plane/data-plane
Définition
42
• Control-plane
• gouverne la création et la configuration de l’infrastructure Cloud
• configuration du "contenant"
• Data-plane
• gouverne la gestion des "données" d’une ressource Cloud
• configuration du "contenu"
Définition
43
• Exemples
• VM
• control-plane: taille, région, IP, subnet
• data-plane: compte root, packages installés
• Storage account Azure, AWS S3
• control-plane: SKU, région, S3 policies
• data-plane: objets, blob, …
Le problème des “secrets” gérés par TF
44
• Un grand classique
Je génère mes secrets par TF
Je pousse mes secrets dans
le key vault de l’équipe
Le problème des “secrets” gérés par TF
45
1. Secrets générés par TF et poussés dans un key vault
2. Au bout d’1 an, la sécu demande de faire tourner tous les
secrets
3. "terraform apply"
Petite galerie des horreurs
46
Petite galerie des horreurs
47
!
La confusion des genres
48
!
!
La confusion des genres
49
!
• Quand l’exemple vient d’en haut …
• Les outils de CD comme ArgoCD à la poubelle …
Terraform Kubernetes manifest
50
!
Lock-in technologique
51
• HashiCorp est une VC-backed startup
• RoI attendu avec un effet multiplicateur de x10/x100
• But == étendre l’empreinte de Terraform en dehors de son
périmètre d’origine (k8s par ex)
Lock-in technologique
52
• HashiCorp est une VC-backed startup
• RoI attendu avec un effet multiplicateur de x10/x100
• But == étendre l’empreinte de Terraform en dehors de son
périmètre d’origine (k8s par ex)
HCL, le langage qui vient de nulle part
La promesse initiale
54
• Du pur déclaratif, on dit ce qu’on "veut", pas besoin de
"coder"
• Syntaxe "simple"
La réalité …
55
• Parlons des types
La réalité …
56
• Parlons des types
La réalité …
57
• Parlons des types
La réalité …
58
• Parlons des boucles
La réalité …
59
• Parlons des fonctions built-in
La réalité …
60
• Parlons des fonctions sur les collections
Des bizarreries
61
Des bizarreries
62
Des bizarreries
63
Modification “programmatique” du HCL ?
64
• Quelqu’un connaît un parseur HCL à jour ???
• Besoin réel:
• mise à jour automatisée de la configuration d’infra suite à une
rotation de certificat
Questions sur la gouvernance
DevOps
66
• Terraform pour éviter un maximum le "code" à l’ancienne
car
• code = maintenance
• maintenance = équipe devs dédiée
• équipe devs dédiée = pérennité des compétences
Gouvernance informatique
67
• Tentative de régler le souci du manque de compétence par
un sur-investissement sur l’outillage (Terraform)
• Modules Terraform "maison" avec gouvernance
implémentée via TF
• Portail Cloud avec droits de lecture seul pour les projets …
Les besoins pertinents
68
• Politique de sécurité
• Azure policies
• automation pour remédiation
• logs d’audits
• Contrôle de la facturation (FinOps)
• API billing
• quotas + alertes
La réalité
69
• Test de non-regs à l’échelle impossible vis à vis de l’infra
existante quand on fait du refactoring sur les modules TF
• "terraform validate" ne suffit pas ! Ignore le tfstate !!!
• En pratique, "terraform plan" à la main sur les infra
existantes de prod pour s’assurer que rien ne casse
Conseils et préconisations
Du bon niveau d’abstraction
71
• Ce que les gens font souvent: Terraform = orchestrateur
Terraform (orchestrateur)
azurerm
provider
null
provider
helm
provider
azurerm
provider
azurerm
provider
Cluster k8s Fichier ENV Install charts Random credentials
Postgresql
Credentials -> keyvault
Du bon niveau d’abstraction
72
• Ce qu’il faut faire
Vrai orchestrateur (Azure DevOps, Apache Airflow, code maison …)
Terraform Helm/KubeCtl Script
Cluster k8s Install charts Random credentials Postgresql
Terraform
Az Cli
Credentials -> keyvault
Quand utiliser Terraform ?
73
• Create & forget
• cycle de vie = création -> destruction
• jamais de mise à jour (au revoir tfstate !)
• Infrastructure à taille humaine
• opérations manuelles envisageables (correction de tfstate,
refactoring code TF)
Quand utiliser Terraform ?
74
• Périmètre restreint
• TF utilisé uniquement pour de l’infra
• jamais de data-plane
• pas d’update
• entrées fournies par l’orchestrateur
• sorties récupérées par l’orchestrateur
Quand utiliser Terraform ?
75
• Infra immutable + déploiement blue/green
• apply + destroy
• requiert une grande maturité
@doanduyhai
Q & R
— _
Merci !
doanduyhai@gmail.com

Contenu connexe

Tendances

Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostAlexander DEJANOVSKI
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesosebiznext
 
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comDamien Krotkine
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
 
Cassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx FranceCassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx FranceJérémy Sevellec
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013vberetti
 
Meetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbicMeetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbicJean-Daniel Bonnetot
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Saïd Bouras
 
Spark Streaming
Spark StreamingSpark Streaming
Spark StreamingPALO IT
 
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...OVHcloud
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudAlain Ganuchaud
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingVictor Coustenoble
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à CassandraVMware Tanzu
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupHervé Rivière
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantALTIC Altic
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
 
FLTauR - Construction de modèles de prévision sous r avec le package caret
FLTauR - Construction de modèles de prévision sous r avec le package caretFLTauR - Construction de modèles de prévision sous r avec le package caret
FLTauR - Construction de modèles de prévision sous r avec le package caretjfeudeline
 

Tendances (20)

Big Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez ChronopostBig Data Paris 2015 - Cassandra chez Chronopost
Big Data Paris 2015 - Cassandra chez Chronopost
 
Realtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et MesosRealtime Web avec Kafka, Spark et Mesos
Realtime Web avec Kafka, Spark et Mesos
 
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.comStockage et analyse temps réel d'événements avec Riak chez Booking.com
Stockage et analyse temps réel d'événements avec Riak chez Booking.com
 
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02
 
Cassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx FranceCassandra Spark Lan Party at Devoxx France
Cassandra Spark Lan Party at Devoxx France
 
Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013Cassandra Ippevent 20 Juin 2013
Cassandra Ippevent 20 Juin 2013
 
Meetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbicMeetup #13 osfr - ops - hubiC - pulbic
Meetup #13 osfr - ops - hubiC - pulbic
 
Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017Meetup kafka 21 Novembre 2017
Meetup kafka 21 Novembre 2017
 
Spark Streaming
Spark StreamingSpark Streaming
Spark Streaming
 
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
Migrer 3 millions de sites sans maitriser leur code source ? Impossible mais ...
 
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain GanuchaudLes Nouveautés de zabbix 2.2 par Alain Ganuchaud
Les Nouveautés de zabbix 2.2 par Alain Ganuchaud
 
Datastax Cassandra + Spark Streaming
Datastax Cassandra + Spark StreamingDatastax Cassandra + Spark Streaming
Datastax Cassandra + Spark Streaming
 
Introduction à Cassandra
Introduction à CassandraIntroduction à Cassandra
Introduction à Cassandra
 
Kafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User GroupKafka Connect & Kafka Streams - Paris Kafka User Group
Kafka Connect & Kafka Streams - Paris Kafka User Group
 
Apache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performantApache Kafka, Un système distribué de messagerie hautement performant
Apache Kafka, Un système distribué de messagerie hautement performant
 
Spark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclairSpark, ou comment traiter des données à la vitesse de l'éclair
Spark, ou comment traiter des données à la vitesse de l'éclair
 
FLTauR - Construction de modèles de prévision sous r avec le package caret
FLTauR - Construction de modèles de prévision sous r avec le package caretFLTauR - Construction de modèles de prévision sous r avec le package caret
FLTauR - Construction de modèles de prévision sous r avec le package caret
 
Pgbackrest meetup
Pgbackrest meetupPgbackrest meetup
Pgbackrest meetup
 
Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?Devoxx France - Où sont passés mes serveurs ?
Devoxx France - Où sont passés mes serveurs ?
 
R Devtools
R DevtoolsR Devtools
R Devtools
 

Similaire à Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés dans le Cloud

Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Publicis Sapient Engineering
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Fabien Arcellier
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueThomas Pierrain
 
OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...
OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...
OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...OVHcloud
 
[Paris merge world tour] 4D Autour de Perforce 2013
[Paris   merge world tour] 4D Autour de Perforce 2013[Paris   merge world tour] 4D Autour de Perforce 2013
[Paris merge world tour] 4D Autour de Perforce 2013Perforce
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?pprem
 
Hacking your home
Hacking your homeHacking your home
Hacking your homelaurenthuet
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationWescale
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerJean-Baptiste Claramonte
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Publicis Sapient Engineering
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Normandy JUG
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Se noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreSe noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreMathieu Goeminne
 
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesFrederic Leger
 
Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Loic Ortola
 
Rétro-ingénierie de protocole crypto: Un "starter pack"
Rétro-ingénierie de protocole crypto: Un "starter pack"Rétro-ingénierie de protocole crypto: Un "starter pack"
Rétro-ingénierie de protocole crypto: Un "starter pack"Maxime Leblanc
 

Similaire à Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés dans le Cloud (20)

Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
Decouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratiqueDecouvrir CQRS (sans Event sourcing) par la pratique
Decouvrir CQRS (sans Event sourcing) par la pratique
 
OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...
OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...
OVHcloud Tech Talks Fr S01E05 – L’opérateur Harbor, une nécessité pour certai...
 
[Paris merge world tour] 4D Autour de Perforce 2013
[Paris   merge world tour] 4D Autour de Perforce 2013[Paris   merge world tour] 4D Autour de Perforce 2013
[Paris merge world tour] 4D Autour de Perforce 2013
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Networxx (intro et fin)
Networxx (intro et fin)Networxx (intro et fin)
Networxx (intro et fin)
 
Hackerspace jan-2013
Hackerspace jan-2013Hackerspace jan-2013
Hackerspace jan-2013
 
Hacking your home
Hacking your homeHacking your home
Hacking your home
 
Kubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestrationKubernetes University - Cap sur l'orchestration
Kubernetes University - Cap sur l'orchestration
 
Kubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration DockerKubernetes University, Cap sur l’orchestration Docker
Kubernetes University, Cap sur l’orchestration Docker
 
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
Capacity Planning : Pratiques et outils pour regarder la foudre tomber sans p...
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Se noyer dans les yeux de Cassandre
Se noyer dans les yeux de CassandreSe noyer dans les yeux de Cassandre
Se noyer dans les yeux de Cassandre
 
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetesmeetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
meetup - Workflow complet de CI/CD pour les geeks avec gitlab et kubernetes
 
Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)Modern DevOps - kill the bottleneck (part 2/2)
Modern DevOps - kill the bottleneck (part 2/2)
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Rétro-ingénierie de protocole crypto: Un "starter pack"
Rétro-ingénierie de protocole crypto: Un "starter pack"Rétro-ingénierie de protocole crypto: Un "starter pack"
Rétro-ingénierie de protocole crypto: Un "starter pack"
 

Plus de Duyhai Doan

Big data 101 for beginners devoxxpl
Big data 101 for beginners devoxxplBig data 101 for beginners devoxxpl
Big data 101 for beginners devoxxplDuyhai Doan
 
Big data 101 for beginners riga dev days
Big data 101 for beginners riga dev daysBig data 101 for beginners riga dev days
Big data 101 for beginners riga dev daysDuyhai Doan
 
Datastax enterprise presentation
Datastax enterprise presentationDatastax enterprise presentation
Datastax enterprise presentationDuyhai Doan
 
Datastax day 2016 introduction to apache cassandra
Datastax day 2016   introduction to apache cassandraDatastax day 2016   introduction to apache cassandra
Datastax day 2016 introduction to apache cassandraDuyhai Doan
 
Datastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDatastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDuyhai Doan
 
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016Duyhai Doan
 
Apache cassandra in 2016
Apache cassandra in 2016Apache cassandra in 2016
Apache cassandra in 2016Duyhai Doan
 
Spark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotronSpark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotronDuyhai Doan
 
Sasi, cassandra on full text search ride
Sasi, cassandra on full text search rideSasi, cassandra on full text search ride
Sasi, cassandra on full text search rideDuyhai Doan
 
Cassandra 3 new features @ Geecon Krakow 2016
Cassandra 3 new features  @ Geecon Krakow 2016Cassandra 3 new features  @ Geecon Krakow 2016
Cassandra 3 new features @ Geecon Krakow 2016Duyhai Doan
 
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Duyhai Doan
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Duyhai Doan
 
Cassandra 3 new features 2016
Cassandra 3 new features 2016Cassandra 3 new features 2016
Cassandra 3 new features 2016Duyhai Doan
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016Duyhai Doan
 
Spark cassandra integration 2016
Spark cassandra integration 2016Spark cassandra integration 2016
Spark cassandra integration 2016Duyhai Doan
 
Spark Cassandra 2016
Spark Cassandra 2016Spark Cassandra 2016
Spark Cassandra 2016Duyhai Doan
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016Duyhai Doan
 
Apache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemApache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemDuyhai Doan
 
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelonaCassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelonaDuyhai Doan
 
Cassandra UDF and Materialized Views
Cassandra UDF and Materialized ViewsCassandra UDF and Materialized Views
Cassandra UDF and Materialized ViewsDuyhai Doan
 

Plus de Duyhai Doan (20)

Big data 101 for beginners devoxxpl
Big data 101 for beginners devoxxplBig data 101 for beginners devoxxpl
Big data 101 for beginners devoxxpl
 
Big data 101 for beginners riga dev days
Big data 101 for beginners riga dev daysBig data 101 for beginners riga dev days
Big data 101 for beginners riga dev days
 
Datastax enterprise presentation
Datastax enterprise presentationDatastax enterprise presentation
Datastax enterprise presentation
 
Datastax day 2016 introduction to apache cassandra
Datastax day 2016   introduction to apache cassandraDatastax day 2016   introduction to apache cassandra
Datastax day 2016 introduction to apache cassandra
 
Datastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basicsDatastax day 2016 : Cassandra data modeling basics
Datastax day 2016 : Cassandra data modeling basics
 
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016Sasi, cassandra on the full text search ride At  Voxxed Day Belgrade 2016
Sasi, cassandra on the full text search ride At Voxxed Day Belgrade 2016
 
Apache cassandra in 2016
Apache cassandra in 2016Apache cassandra in 2016
Apache cassandra in 2016
 
Spark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotronSpark zeppelin-cassandra at synchrotron
Spark zeppelin-cassandra at synchrotron
 
Sasi, cassandra on full text search ride
Sasi, cassandra on full text search rideSasi, cassandra on full text search ride
Sasi, cassandra on full text search ride
 
Cassandra 3 new features @ Geecon Krakow 2016
Cassandra 3 new features  @ Geecon Krakow 2016Cassandra 3 new features  @ Geecon Krakow 2016
Cassandra 3 new features @ Geecon Krakow 2016
 
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016Algorithme distribués pour big data saison 2 @DevoxxFR 2016
Algorithme distribués pour big data saison 2 @DevoxxFR 2016
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
 
Cassandra 3 new features 2016
Cassandra 3 new features 2016Cassandra 3 new features 2016
Cassandra 3 new features 2016
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016
 
Spark cassandra integration 2016
Spark cassandra integration 2016Spark cassandra integration 2016
Spark cassandra integration 2016
 
Spark Cassandra 2016
Spark Cassandra 2016Spark Cassandra 2016
Spark Cassandra 2016
 
Cassandra introduction 2016
Cassandra introduction 2016Cassandra introduction 2016
Cassandra introduction 2016
 
Apache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystemApache zeppelin the missing component for the big data ecosystem
Apache zeppelin the missing component for the big data ecosystem
 
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelonaCassandra nice use cases and worst anti patterns no sql-matters barcelona
Cassandra nice use cases and worst anti patterns no sql-matters barcelona
 
Cassandra UDF and Materialized Views
Cassandra UDF and Materialized ViewsCassandra UDF and Materialized Views
Cassandra UDF and Materialized Views
 

Pourquoi Terraform n'est pas le bon outil pour les déploiements automatisés dans le Cloud

  • 1. CLOU D NORD Retrouvez toutes les informations et la billetterie Cloud Nord sur : www.cloudnord.fr VIRTUEL 7 & 8 Octobre 2021 REX Terraform sur des projets non triviaux Pourquoi Terraform n’est pas le bon outil pour les déploiements automatisés dans le Cloud ?
  • 2. Qui suis-je 2 • Architecte Azure freelance (Dev, Sec, Ops, k8s, Terraform …) • Evangéliste Apache Cassandra™ pour Datastax
  • 3. Périmètre de discussion 3 Pourquoi Terraform n’est pas le bon outil pour les déploiements automatisés dans le Cloud ?
  • 4. Périmètre de discussion 4 Pourquoi Terraform n’est pas le bon outil pour les déploiements automatisés dans le Cloud ?
  • 5. Pourquoi cette présentation ? 5 • Mauvaises pratiques, mauvaise philosophie • REX, conseils et pièges à éviter
  • 7. TFstate, à quoi ça sert ? 7 Code Terraform (.tf, .tfvars) Tfstate (.tfstate) Le cloud
  • 8. TFstate, à quoi ça sert ? 8 Ce que je veux (.tf, .tfvars) Ce qui a été fait (.tfstate) La réalité
  • 9. TFstate, désynchronisation 9 • Ressources modifiées en dehors de l’écosystème Terraform • modifications humaines via le portail AWS/Azure/GCP • modifications déclenchées par des stratégies de gouvernance (Azure Policies) • modifications régulières pour raison de sécurité (rotation de mot de passe, certificats TLS …)
  • 11. TFstate, comment faire ? 11 • "lifecycle" • Ne marche pas toujours !
  • 12. TFstate, comment faire ? 12 • Ex: restauration d’une base PG
  • 13. TFstate, comment faire ? 13 • Ex: restauration d’une base PG
  • 14. TFstate, comment faire ? 14 • Ex: restauration d’une base PG
  • 15. TFstate, comment faire ? 15 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 16. TFstate, comment faire ? 16 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 17. TFstate, comment faire ? 17 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 18. TFstate, comment faire ? 18 • Ex: restauration d’une VM via Azure Recovery Vault Service à supprimer à supprimer restauré restauré
  • 19. TFstate, comment faire ? 19 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 20. TFstate, comment faire ? 20 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 21. TFstate, comment faire ? 21 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 22. TFstate, comment faire ? 22 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 23. TFstate, comment faire ? 23 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 24. TFstate, comment faire ? 24 • Ex: restauration d’une VM via Azure Recovery Vault Service
  • 25. TFstate, comment faire ? 25 • Bidouille avec le tfstate • lister tous les disques attachés à une VM après une restauration • parser le Tfstate pour trouver l’ancien disque correspondant • "terraform state rm <adresse_tf_disque>" • "terraform import <adresse_tf_disque> <nouveau_disque_resource_id>" • Programme en Python (SDK Azure Python) pour automatiser
  • 28. TFstate, migration après code refactoring 28 • Les ressources ont été ré-organisées dans des modules séparés • Un cauchemar pour migrer le tfstate d’une infra existante
  • 29. Tfstate, problèmes de conception 29 • Forcer le triplet : tf, tfstate & Cloud • Le tfstate est statique (mis à jour au prochain "terraform apply/refresh") mais le Cloud est dynamique • Synchronisation des états dans un système distribué (Cloud) == problème difficile connu depuis 50 ans
  • 30. Tfstate et le marché 30 • Non, "le marché" n’a pas toujours raison ! • Trop d’effets de mode, pas assez de réflexion • L’industrie commence à se rendre compte des soucis posés par le Tfstate
  • 32. Driftctl 32 • Initiative bienvenue … • … mais ne règle pas le souci de fond • L’infrastructure divergera toujours, c’est un fait !
  • 33. API chérie, où es tu ???
  • 34. Choix de conception conscient 34 • Terraform, c’est un gros "client" en GO • Avantages • facile à installer • auto-suffisant (pas de dépendances à tirer partout) (GOLang) • temps de prise en main express
  • 35. Choix de conception conscient 35 • Terraform, c’est un gros "client" en GO • Inconvénients • pas d’API (REST, gRPC, XML etc …) en 2021 • Interopérabilité ~ 0
  • 36. Exemples de bidouilles pour l’interopérabilité 36 • En entrée • templating de fichiers tfvars • passage d’arguments via variables d’ENV !
  • 37. Exemples de bidouilles pour l’interopérabilité 37 • En sortie • "terraform output -json" puis parsing JSON du stdout ! • tâche Azure DevOps "terraform output"
  • 38. Exemples de bidouilles pour l’interopérabilité 38 • En sortie • écrire les outputs dans un storage (AWS S3, Azure blob storage) mais quid des outputs "sensibles" ??? • exporter les outputs comme variables d’env avec une ressource "local-file"
  • 39. Interopérabilité: résumé 39 Terraform #{ Variables d’ENV } tfvars tfvars valorisé Moteur de templating {….} parsing JSON stdout AWS S3 #{ Variables d’ENV locales} Azure blob
  • 40. Choix de conception conscient 40 • On comprend mieux maintenant la fameuse recommandation
  • 42. Définition 42 • Control-plane • gouverne la création et la configuration de l’infrastructure Cloud • configuration du "contenant" • Data-plane • gouverne la gestion des "données" d’une ressource Cloud • configuration du "contenu"
  • 43. Définition 43 • Exemples • VM • control-plane: taille, région, IP, subnet • data-plane: compte root, packages installés • Storage account Azure, AWS S3 • control-plane: SKU, région, S3 policies • data-plane: objets, blob, …
  • 44. Le problème des “secrets” gérés par TF 44 • Un grand classique Je génère mes secrets par TF Je pousse mes secrets dans le key vault de l’équipe
  • 45. Le problème des “secrets” gérés par TF 45 1. Secrets générés par TF et poussés dans un key vault 2. Au bout d’1 an, la sécu demande de faire tourner tous les secrets 3. "terraform apply"
  • 46. Petite galerie des horreurs 46
  • 47. Petite galerie des horreurs 47 !
  • 48. La confusion des genres 48 ! !
  • 49. La confusion des genres 49 ! • Quand l’exemple vient d’en haut … • Les outils de CD comme ArgoCD à la poubelle …
  • 51. Lock-in technologique 51 • HashiCorp est une VC-backed startup • RoI attendu avec un effet multiplicateur de x10/x100 • But == étendre l’empreinte de Terraform en dehors de son périmètre d’origine (k8s par ex)
  • 52. Lock-in technologique 52 • HashiCorp est une VC-backed startup • RoI attendu avec un effet multiplicateur de x10/x100 • But == étendre l’empreinte de Terraform en dehors de son périmètre d’origine (k8s par ex)
  • 53. HCL, le langage qui vient de nulle part
  • 54. La promesse initiale 54 • Du pur déclaratif, on dit ce qu’on "veut", pas besoin de "coder" • Syntaxe "simple"
  • 55. La réalité … 55 • Parlons des types
  • 56. La réalité … 56 • Parlons des types
  • 57. La réalité … 57 • Parlons des types
  • 58. La réalité … 58 • Parlons des boucles
  • 59. La réalité … 59 • Parlons des fonctions built-in
  • 60. La réalité … 60 • Parlons des fonctions sur les collections
  • 64. Modification “programmatique” du HCL ? 64 • Quelqu’un connaît un parseur HCL à jour ??? • Besoin réel: • mise à jour automatisée de la configuration d’infra suite à une rotation de certificat
  • 65. Questions sur la gouvernance
  • 66. DevOps 66 • Terraform pour éviter un maximum le "code" à l’ancienne car • code = maintenance • maintenance = équipe devs dédiée • équipe devs dédiée = pérennité des compétences
  • 67. Gouvernance informatique 67 • Tentative de régler le souci du manque de compétence par un sur-investissement sur l’outillage (Terraform) • Modules Terraform "maison" avec gouvernance implémentée via TF • Portail Cloud avec droits de lecture seul pour les projets …
  • 68. Les besoins pertinents 68 • Politique de sécurité • Azure policies • automation pour remédiation • logs d’audits • Contrôle de la facturation (FinOps) • API billing • quotas + alertes
  • 69. La réalité 69 • Test de non-regs à l’échelle impossible vis à vis de l’infra existante quand on fait du refactoring sur les modules TF • "terraform validate" ne suffit pas ! Ignore le tfstate !!! • En pratique, "terraform plan" à la main sur les infra existantes de prod pour s’assurer que rien ne casse
  • 71. Du bon niveau d’abstraction 71 • Ce que les gens font souvent: Terraform = orchestrateur Terraform (orchestrateur) azurerm provider null provider helm provider azurerm provider azurerm provider Cluster k8s Fichier ENV Install charts Random credentials Postgresql Credentials -> keyvault
  • 72. Du bon niveau d’abstraction 72 • Ce qu’il faut faire Vrai orchestrateur (Azure DevOps, Apache Airflow, code maison …) Terraform Helm/KubeCtl Script Cluster k8s Install charts Random credentials Postgresql Terraform Az Cli Credentials -> keyvault
  • 73. Quand utiliser Terraform ? 73 • Create & forget • cycle de vie = création -> destruction • jamais de mise à jour (au revoir tfstate !) • Infrastructure à taille humaine • opérations manuelles envisageables (correction de tfstate, refactoring code TF)
  • 74. Quand utiliser Terraform ? 74 • Périmètre restreint • TF utilisé uniquement pour de l’infra • jamais de data-plane • pas d’update • entrées fournies par l’orchestrateur • sorties récupérées par l’orchestrateur
  • 75. Quand utiliser Terraform ? 75 • Infra immutable + déploiement blue/green • apply + destroy • requiert une grande maturité