• Aide
  • Eurêkoi Eurêkoi

Livre

L'infrastructure as code avec Terraform : déployez votre infrastructure sur le cloud

Résumé

Une description de l'outil Terraform, un environnement logiciel d'environnement as code, pour développer une infrastructure sur le cloud. Les notions générales, l'architecture, le fonctionnement et le langage Terraform sont détaillés à travers sept cas d'usage. Des outils open source complémentaires sont présentés.


  • Éditeur(s)
  • Date
    • C 2024
  • Notes
    • La couv. porte en plus : "En téléchargement : code soure des exemples" ; "Informatique technique"
    • La 4e de couv. indique : Sur www.editions-eni.fr : Le code source des exemples du livre
  • Langues
    • Français
  • Description matérielle
    • 1 vol. (436 p.) : ill. ; 21 cm
  • Collections
  • Sujet(s)
  • ISBN
    • 978-2-409-04662-9
  • Indice
  • Quatrième de couverture
    • L'infrastructure as Code avec Terraform

      Déployez votre infrastructure sur le Cloud

      Ce livre sur Terraform s'adresse aussi bien aux « Devs » qu'aux « Ops », débutants ou disposant déjà de notions de base, qui souhaitent maîtriser le développement d'une infrastructure sur le cloud. Le lecteur y trouvera des cas d'usage illustrés par des exemples de code variés lui permettant d'être à l'aise avec son langage, son utilisation et son écosystème.

      Dans les premiers chapitres du livre, l'auteur présente les fondamentaux de Terraform, de la présentation des notions générales de l'infrastructure as code, à l'architecture de Terraform avec le fonctionnement du CLI, du registry, du state et des providers, en passant par le langage Terraform (HCL) expliqué en détail pour permettre la lecture et l'écriture de code simple. Au travers de 7 cas d'usage, le lecteur peut ensuite découvrir des utilisations différentes de Terraform sur des plateformes variées : Google Cloud Platform, AWS, MongoDB, OVH, Scaleway, GitHub et GitLab.

      La suite du livre permet au lecteur d'aller plus loin dans l'apprentissage de Terraform. Le partage et la réutilisation de code sont mis en pratique avec l'utilisation et le développement de modules. Les éléments du langage avancés ainsi que les bonnes pratiques de développement sont présentés en détail. La gestion du state et les opérations permettant de le manipuler sont ensuite expliquées avant de passer à l'écriture de tests (souvent mise à l'écart) présentée avec l'implémentation de tests d'intégration. Enfin, le développement d'un provider permet de s'interfacer avec n'importe quel service.

      À l'instar de nombreuses entreprises qui utilisent HCP Terraform pour exécuter le code Terraform, le lecteur appréhende l'exécution managée de Terraform. L'intégration de Terraform à des pipelines de CI/CD est également présentée avec des exemples pour GitLab CI et GitHub Actions. Toutes ces connaissances cumulées ainsi que de précieux conseils pour bien se préparer permettent au lecteur de pouvoir préparer et passer la certification Terraform.

      Pour finir, des outils open source complémentaires sont présentés pour compléter l'outillage de développement et quelques ressources et liens sont donnés pour se maintenir à jour sur les nouveautés de l'écosystème.


  • Tables des matières
      • L'infrastructure as Code avec Terraform

      • Déployez votre infrastructure sur le Cloud

      • Julien Wittouck

      • Avant-propos
      • 1. L'histoire d'une entreprise qui découvre le cloud13
      • 2. Pourquoi avoir écrit ce livre ?14
      • 3. À qui est destiné cet ouvrage ?16
      • 4. Quels sont les prérequis ?17
      • 5. Comment est construit ce livre ?18
      • 6. Conseils de lecture22
      • 7. Les exemples de code22
      • 8. Terraform et OpenTofu23
      • Partie 1 : Les bases de Terraform
      • Chapitre 1-1
      • Infrastructure as Code
      • 1. Cloud et l'émergence de l'IaC25
      • 2. L'Infrastructure as Code - SDKs et CLIs27
      • 3. Terraform30
      • 3.1 L'aspect multicloud30
      • 3.2 L'approche déclarative31
      • 4. Conclusion33
      • Chapitre 1-2
      • Architecture et CLI Terraform
      • 1. L'architecture globale35
      • 1.1 Le CLI36
      • 1.2 Le registry Terraform36
      • 1.3 Les providers38
      • 1.4 Le state40
      • 2. Le CLI, installation et utilisation41
      • 2.1 Installer le CLI41
      • 2.2 L'exécution de commandes43
      • 3. Le workflow et les commandes principales44
      • 3.1 Téléchargement des providers avec terraform init46
      • 3.2 Validation du code source avec terraform validate49
      • 3.3 Construction du plan d'exécution avec terraform plan51
      • 3.4 Appliquer des changements avec terraform apply57
      • 3.5 Détruire l'infrastructure avec terraform destroy60
      • 3.6 Exporter le plan d'exécution62
      • 3.7 Formatage du code source avec terraform fmt64
      • 3.8 Passer des variables en paramètre65
      • 3.9 Consulter les valeurs en sortie67
      • 4. Naviguer dans la documentation officielle69
      • 4.1 La documentation Terraform69
      • 4.2 La documentation du registry73
      • 5. Conclusion77
      • Chapitre 1-3
      • Écrire du code Terraform
      • 1. Le langage déclaratif HCL79
      • 2. Les fichiers. tf81
      • 3. Les blocs resource et data82
      • 3.1 Le bloc resource82
      • 3.2 Le bloc data84
      • 4. Les blocs variable, locals et output85
      • 4.1 Le bloc variable85
      • 4.2 Les variables locales87
      • 4.3 Le bloc output88
      • 5. Les expressions89
      • 5.1 Les expressions simples89
      • 5.2 Les références90
      • 5.3 Accès aux valeurs de listes ou de maps92
      • 5.4 L'interpolation de chaînes de caractères93
      • 5.5 Les fonctions94
      • 6. Le bloc provider98
      • 6.1 Dépendances aux providers98
      • 6.2 Configuration des providers100
      • 7. Les commentaires101
      • 8. Conventions de nommage102
      • 9. Conclusion104
      • Chapitre 1-4
      • Dans la pratique
      • 1. Des exemples variés d'infrastructure105
      • 2. Un cluster k8s sur Scaleway106
      • 3. Une zone DNS chez OVH111
      • 4. Un groupe GitLab avec des repositories114
      • 5. Des repositories sur GitHub116
      • 6. Une base de données PostgreSQL sur Google Cloud118
      • 7. Des serveurs EC2 et un load-balancer sur AWS124
      • 8. Une base de données MongoDB sur Atlas131
      • 9. Conclusion137
      • Partie 2 : Concepts avancés de Terraform
      • Chapitre 2-1
      • Utiliser et développer des modules
      • 1. Pourquoi réutiliser du code ?139
      • 2. Le root module141
      • 3. La structure d'un module141
      • 4. Modules et providers143
      • 5. Utiliser des modules144
      • 5.1 Structure d'un bloc module144
      • 5.2 Source146
      • 5.3 Paramètres et outputs154
      • 6. Publier un module sur le registry Terraform155
      • 7. Conclusion160
      • Chapitre 2-2
      • Concepts avancés de Terraform
      • 1. Constructions et usages avancés163
      • 2. L'argument count164
      • 2.1 Utilisation de l'index165
      • 2.2 Création de ressources conditionnelles168
      • 3. for_each169
      • 4. Expression for172
      • 4.1 Expression for pour créer des listes173
      • 4.2 Expression for pour créer des map174
      • 4.3 Itérer sur des listes174
      • 4.4 Itérer sur des map ou des objets175
      • 4.5 Filtrer des éléments175
      • 5. Expressions splat176
      • 6. Les dynamic blocks178
      • 7. Le bloc lifecycle et l'attribut depends_on181
      • 7.1 create_before_destroy181
      • 7.2 prevent_destroy183
      • 7.3 depends_on185
      • 8. Validation des variables187
      • 9. L'argument provider189
      • 10. Attributs, variables et outputs sensitives190
      • 10.1 Attributs sensitives191
      • 10.2 Variables sensitives193
      • 10.3 Outputs sensitive195
      • 11. Applications partielles198
      • 12. Conclusion199
      • Chapitre 2-3
      • La gestion du state
      • 1. L'état des ressources201
      • 2. Le fichier de state202
      • 2.1 serial et lineage203
      • 2.2 outputs205
      • 2.3 resources et datas206
      • 3. Le backend209
      • 3.1 Configuration d'un backend211
      • 3.2 Migrer de backend215
      • 4. Adresses des ressources et modules218
      • 5. Opérations sur le state221
      • 5.1 Sauvegarde et restauration221
      • 5.2 Lister les ressources existantes223
      • 5.3 Renommer des ressources223
      • 5.4 Importer des ressources227
      • 5.5 Supprimer des ressources232
      • 5.6 Refresh234
      • 6. taint et recréations forcées236
      • 6.1 taint / untaint236
      • 6.2 replace237
      • 7. Workspaces239
      • 7.1 Manipuler des workspaces239
      • 7.2 Adapter le code243
      • 8. Conclusion244
      • Chapitre 2-4
      • Tester le code Terraform
      • 1. Pourquoi tester ?245
      • 1.1 Tests d'intégration246
      • 1.2 Checks247
      • 2. Tests d'intégration247
      • 3. Tests de plan250
      • 4. Tests avec des mocks251
      • 4.1 Mock de provider254
      • 4.2 Mocks ciblés (override)256
      • 5. Checks257
      • 6. Conclusion260
      • Chapitre 2-5
      • Développer un provider
      • 1. Provider et API261
      • 2. Les prérequis263
      • 3. La structure du code d'un provider264
      • 3.1 Le framework266
      • 3.2 Metadata ()267
      • 3.3 Schema ()268
      • 3.4 ConfigureO268
      • 3.5 Read (), Create (), Update (), Delete ()269
      • 4. Développer le provider269
      • 4.1 Le développement du type Provider270
      • 4.1.1 La fonction Metadata ()270
      • 4.1.2 Modèle de données et Schema ()271
      • 4.1.3 La fonction Configure ()272
      • 4.1.4 Constructeurs Resources () et DataSources ()273
      • 4.2 Le développement d'une data274
      • 4.2.1 La fonction Metadata ()275
      • 4.2.2 Modèle de données et Schema ()275
      • 4.2.3 La fonction Configure ()276
      • 4.2.4 Constructeur277
      • 4.2.5 La fonction Read ()277
      • 4.3 Le développement d'une ressource278
      • 4.3.1 La fonction Metadata ()279
      • 4.3.2 Modèle de données et Schema ()280
      • 4.3.3 La fonction Configure ()281
      • 4.3.4 Constructeur282
      • 4.3.5 La fonction Read ()282
      • 4.3.6 La fonction Create ()283
      • 4.3.7 La fonction Update ()285
      • 4.3.8 La fonction Delete ()285
      • 5. Générer la documentation286
      • 6. La publication du provider sur le Terraform Registry288
      • 6.1 Connexion au Registry288
      • 6.2 Générer la clé de signature GPG292
      • 6.3 Publication du provider296
      • 7. Conclusion298
      • Partie 3 : L'univers étendu
      • Chapitre 3-1
      • HCP Terraform
      • 1. Le service cloud de HashiCorp301
      • 2. Exécuter du code Terraform304
      • 2.1 Version Control Workflow305
      • 2.1.1 Créer le workflow305
      • 2.1.2 Configurer des variables307
      • 2.1.3 Exécuter le Workspace310
      • 2.1.4 Mises à jour du Workspace312
      • 2.2 CLI-Driven Workflow313
      • 2.2.1 Créer le workflow313
      • 2.2.2 Récupérer les credentials314
      • 2.2.3 Configurer les variables316
      • 2.2.4 Exécuter le Workspace316
      • 3. Le registry privé318
      • 3.1 Publier un module319
      • 3.2 Consommer un module privé322
      • 4. Conclusion323
      • Chapitre 3-2
      • Intégrer Terraform dans une CI/CD
      • 1. Les principes de la CI/CD325
      • 2. Configurer les providers et backend328
      • 2.1 Configurer le provider AWS et le S3328
      • 2.2 Configurer le provider Google GCP et le backend GCS330
      • 2.3 Configurer le provider Azure et le backend Blobs331
      • 3. Positionner les variables332
      • 3.1 Paramètres de ligne de commande333
      • 3.2 Fichiers tfvars et auto. tfvars333
      • 3.3 Variables d'environnement334
      • 4. Exporter le plan d'exécution et le transmettre à terraform apply335
      • 5. Bonnes pratiques générales336
      • 6. Déployer de l'infrastructure avec GitLab CI338
      • 6.1 L'écriture du pipeline339
      • 6.2 La configuration des variables d'environnement346
      • 7. Publier un module avec GitLab CI349
      • 8. Déployer de l'infrastructure avec Github Actions352
      • 8.1 L'écriture du workflow353
      • 8.2 La configuration des variables357
      • 9. Conclusion360
      • Chapitre 3-3
      • Passer la certification Terraform
      • 1. Pourquoi passer la certification ?361
      • 2. Les modalités de passage362
      • 3. Les compétences et connaissances testées363
      • 4. La préparation365
      • 5. Les prérequis de l'examen366
      • 5.1 Les prérequis de votre environnement366
      • 5.2 Les prérequis de votre ordinateur367
      • 6. Le jour J368
      • 6.1 Connexion à la plateforme369
      • 6.2 Vérification de votre identité et de l'environnement369
      • 7. L'écran de certification372
      • 8. Conseils pour le jour J373
      • 9. Conseils pendant l'examen374
      • 10. Après l'examen375
      • 11. Conclusion377
      • Chapitre 3-4
      • Outils externes
      • 1. La boîte à outils du développeur379
      • 2. gitignore379
      • 3. Git hooks380
      • 4. tfenv382
      • 5. tflint386
      • 5.1 Installation386
      • 5.2 Utilisation387
      • 5.3 Configuration388
      • 5.4 Dans une intégration continue389
      • 6. terraform-docs390
      • 6.1 Installation390
      • 6.2 Utilisation391
      • 6.3 Ajout de texte descriptif391
      • 7. Checkov393
      • 7.1 Installation394
      • 7.2 Exécution394
      • 7.3 Dans une intégration continue396
      • 8. TerraGrunt400
      • 8.1 Installation400
      • 8.2 Utilisation401
      • 9. Autres outils notables408
      • 10. Conclusion409
      • Chapitre 3-5
      • Faire sa veille
      • 1. Blogs et newsletter411
      • 1.1 Terraform Blog411
      • 1.2 HashiCorp newsletter412
      • 1.3 Spacelift Blog412
      • 1.4 Terraform Weekly413
      • 2. Communautés et sites web414
      • 2.1 Terraform Best Practices414
      • 2.2 Discuss Terraform415
      • 2.3 Awesome Terraform416
      • 2.4 Dev. to417
      • 2.5 Medium. com418
      • 2.6 Reddit419
      • 3. Vidéos420
      • 3.1 Webinars HashiCorp420
      • 3.2 YouTube - Weekly Dose of Terraform420
      • 4. GitHub Issues & Release notes421
      • 5. Conclusion423
      • Index425

  • Origine de la notice:
    • BPI
  • Disponible - A partir du 25 août 2025 - 681.25 WIT