2. Terraform
• Outil d’IaC (Infrastructure as
Code) cross-cloud
• Configuration écrite en HCL (*.tf)
ou JSON (*.tf.json)
• Provisionne l’infrastructure
grâce aux APIs fournit par les
cloud provider, outil SaaS, …
3. Terraform : Ressource
• Représente un élément de
l’infrastructure : storage,
compute instance, virtual
network, …
5. Terraform : Data Sources
• Permet d’utiliser des
informations définies à
l’extérieur d’un projet terraform
• Différentes sources de données :
configuration terraform externe,
données exposées par le cloud
provider, …
6. Terraform : Provider
• Plugin qui permet d’interagir
avec une API fournit par : un
cloud provider, un outil SaaS, …
• Un provider expose les types de
ressources et data sources qu’il
peux gérer
• Ils sont exposés via Terraform
Registery
7. Terraform : Module
• Permet de packager et réutiliser
une configuration
• Ensemble de fichier *.tf ou
*.tf.json
• Exposé via Terraform Registery
ou des repository (Github,
Gitlab, …)
8. Terraform : State
• Fichier json *.tfstate
• Mapping entre la config et ce qui existe réellement sur la plateform
ciblée, notamment les identifiants des ressources
• Metadata : dépendances entre les ressources, résultat des
datasources, …
9. Terraform : Backend
• Configuration de l’emplacement de stockage du state
• Par défaut en local (non recommandé)
• Supporte plusieurs mode de stockage : azure blob storage, amazon
s3 bucket, google cloud storage, client rest, …
10. CDKTF
• Basé sur AWS CDK
• Permet d’écrire la configuration
terraform avec différent langage
de programmation : TypeScript,
Python, Java, C# et GO
• GA depuis Aout 2022
13. CDKTF : Construct
• Class qui représente un ou
plusieurs élément de
l’infrastructure
• Un programme CDK peut être vu
comme un arbre de Construct
• Plusieurs avantages comparé aux
modules : testable, validation
des paramètres et type check, …
14. CDKTF : module et provider
• Nécessite des bindings pour pouvoir être utilisé avec le langage
choisie
• Certains sont déjà pré-package, pour les autre il faut générer les
binding à l’aide de la commande : CDKTF Get
15. CDKTF : Aspect
• Permet d’appliqué une opération
sur l’ensemble des Construct
dans un scope définit.