
Pour faire les démos vous aurez besoin d'avoir un environnement. Voici comment faire
Ce cours démontre comment intégrer Terraform dans un pipeline Azure Devops. Il nécessite de savoir créer un SPN avec des permissions Contributor dans Azure et une maîtrise minimale d'Azure Devops (repository, pipeline Yaml et service connexion).
Si ce n'est pas le cas, ce n'est pas grave. Ce chapitre n'est en rien indispensable pour la suite du cours, vous pouvez l'ignorer.
Ceci étant il est pratique d'avoir le code dans un repository de code pour revenir facilement en arrière. Il peut être local, dans ce cas tirez une branche pour chaque chapitre du cours ou bien être autre que Azure Devops comme Github par exemple.
Diverses petites améliorations de notre pipeline
Depends_on est une fonctionnalité à connaître, mais que l'on consomme avec modération car on intervient dans la logique de fonctionnement de Terraform. Parfois il se venge!
Pas de cours, juste le projet tel que vous devriez l'avoir à la fin de ce module pour gagner du temps par la suite.
C'est ce projet qui sert de fil rouge tout le reste du cours
A partir de là vous allez travailler. Il est important de refaire par vous même les démos des modules qui suivent.
On va commencer par le coeur de fonctionnement de Terraform: les states.
Démonstration de quelques commandes autour de state
Azurerm doit se connecter à Azure. Quelles sont les options possibles?
Il peut arriver que le déploiement avec Terraform entre en conflit avec des ressources déployées à la main. Que faire dans ce cas?
Il est parfois nécessaire de forcer la reconstruction d'une ressource
Terraform ne propose peut-être pas de points d'arrêt ou de choses de ce genre, mais on n'est pas totalement démuni.
Pas de script Terraform sans variables, nous allons donc en faire une description minutieuse dans ce chapitre
Aperçu des différents types de variable à notre disposition
Explorons les string, number et booléens
Terraform est assez riche en structures complexes et en liste. Ca mérite un détour car on s'en sert tout le temps.
Les boucles sont une fonctionnalité pleine de possibilités. Pas toujours bien maîtrisées. Mais il y a pas mal de choses que l'on ne peut faire en Terraform sans connaître quelques subtilités.
Count est la boucle la plus simple. Commençons donc par là.
Une application importante de count est le pattern feature flag.
For_each est une boucle essentielle à maîtriser. Elle ouvre la porte à de nombreuses applications.
For a des caractéristiques d'une boucle, mais c'est bien plus que ça. C'est un outil extrêmement puissant à notre service. Passez vraiment le temps qu'il faut sur ce chapitre, ça vaut la peine.
Pas très connu, mais utile. Surtout que la syntaxe a un peu changée il y a peu
Encore un outil dont je vois mal comment s'en passer. Il est très simple et c'est ce qui fait sa force. On va créer des chaînes dynamiquement
Fo_each et count itèrent sur des ressources, le bloc dynamique sur des attributs de ressource.
Vous aurez tôt ou tard besoin de faire ça. malheureusement Terraform ne propose pas de support.
Mais il existe tout de même une astuce!
Les variables de sortie sont le moyen par lequel un module Terraform peut retourner des informations vers le module parent. Nous allons en découvrir les secrets
Le module est l'outil indispensable de tout code structuré. Il peut évoquer les classes de certains langages de programmation.
Il est impossible de passer à côté. Cette session en fait une présentation générale
Démonstration pas à pas pour transformer le projet fil rouge en un projet structuré avec des modules.
Le résultat complet peut aussi être récupéré dans une des sessions qui suivent
Documenter le code d'un module est la base. dans cette session nous verrons comment faire et reviendrons sur la syntaxe de l'argument description d'une variable
Les modules personnalisés ne sont pas forcément présents dans le projet en cours, mais dans un repository Git. Comment les récupérer?
Terraform propose une large game de modules prêts à l'emploi. Voyons sur un exemple comment les utiliser.
l est possible de créer des instances multiples d'un module avec count ou for_each. C'est aussi une façon d'appliquer le pattern feature_flag aux modules
Projet fil rouge avec des modules
Data source est simplement un proxy sur une ressource qui n'est pas gérée par Terraform. C'est souvent utile, par exemple pour récupérer des informations sur un Service Principal ou un réseau de socle (hub and spoke)
Premier contact avec les data sources
La doc est un peu cachée, voyons ensemble comment la trouver
OK, ce n'est pas le genre de fonctionnalité que l'on utilise souvent. Terraform vous le déconseille même.
Mais c'est utile de savoir que ça existe
Comment gérer les states sur des projets multi-environnement (dev, preprod, prod...)?
De nombreux cours Terraform existent déjà, mais celui-ci n'est pas comme les autres !
Tout d'abord il s'agit d'un cours Terraform pour Azure
Chaque notion est organisée par module
Chaque module commence par une présentation avec des slides
Chaque présentation est suivie d'une série de démo qui la reprenne ou l'enrichisse
Les notions ne sont pas survolées, mais décortiquées et étudiées dans les détails
Vous disposez ainsi d'un outil complet qui va très rapidement vous faire passer de vrai débutant à véritable expert !
Comment débuter ?
Vous devez juste installer VSCode, c'est très simple.
Idéalement créez un compte Azure Devops, on fera certaines démonstrations avec des pipelines Yaml.
Les premiers modules expliqueront comment configurer votre environnement. On démarre ensuite sur une démo large maille pour donner des points de repère pour la suite. Il n’est pas attendu d’action de votre part si ce n’est suivre les explications.
Vous allez acquérir des bases et des points de repère qui vont servir pour toute la suite. Ne vous inquiétez pas si certaines explications manquent. Elles viendront par la suite.
Cependant je vous encourage vivement de refaire toutes les démos des parties qui suivent. C’est comme ça que l’on apprend l’informatique.
NOTE : la partie pipeline n'est pas absolument indispensable.
Dans le cas où vous débutez dans l'écriture de pipeline Azure Devops Yaml, n'hésitez pas à vous procurer mon cours :
Maîtrisez les pipelines Yaml Azure Devops
Merci !