| Prochaine révision | Révision précédente |
| eadl:bloc4:fm2:terraform-intro [2026/04/25 18:19] – créée jcheron | eadl:bloc4:fm2:terraform-intro [2026/05/04 01:44] (Version actuelle) – [12. Modules (introduction)] jcheron |
|---|
| ====== Introduction à Terraform (prise en main) ====== | ====== Prise en main de Terraform ====== |
| |
| ===== Objectifs ===== | ===== Objectifs ===== |
| ===== 2. Installation et vérification ===== | ===== 2. Installation et vérification ===== |
| |
| Fichier : terminal | A partir du terminal : |
| | |
| | |
| | ==== tfenv ==== |
| | [[https://github.com/tfutils/tfenv|tfenv]] simplifie l'installation de Terraform, et permet de switcher entre versions. |
| | |
| | <sxh bash;gutter:false> |
| | # Installation |
| | git clone --depth=1 https://github.com/tfutils/tfenv.git ~/.tfenv |
| | |
| | # Ajouter au PATH |
| | echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> ~/.bashrc |
| | source ~/.bashrc |
| | |
| | # Installer Terraform 1.14.0 |
| | tfenv install 1.14.0 |
| | tfenv use 1.14.0 |
| | |
| | </sxh> |
| |
| <sxh bash;gutter:false> | <sxh bash;gutter:false> |
| |
| <WRAP round help> | <WRAP round help> |
| Questions : | Question : |
| |
| * Que se passe-t-il si la commande n’existe pas ? | |
| * Pourquoi vérifier la version est important en équipe ? | * Pourquoi vérifier la version est important en équipe ? |
| </WRAP> | </WRAP> |
| |
| Créer un dossier : | Créer un dossier : |
| |
| Fichier : terminal | |
| |
| <sxh bash;gutter:false> | <sxh bash;gutter:false> |
| Créer un fichier : | Créer un fichier : |
| |
| Fichier : main.tf | Fichier : ''main.tf'' |
| |
| <sxh hcl;gutter:false> | <sxh hcl;gutter:false> |
| Question : | Question : |
| |
| * Pourquoi utiliser un fichier texte plutôt que des commandes ? | * Une suite de commandes permet d’obtenir exactement le même résultat. Pourquoi les entreprises utilisent quand même Terraform ? |
| </WRAP> | </WRAP> |
| |
| * définir un provider | * définir un provider |
| |
| Fichier : main.tf | Fichier : ''main.tf'' |
| |
| <sxh hcl;gutter:false> | <sxh js;gutter:false> |
| terraform { | terraform { |
| required_providers { | required_providers { |
| Initialiser : | Initialiser : |
| |
| Fichier : terminal | Dans le terminal |
| |
| <sxh bash;gutter:false> | <sxh bash;gutter:false> |
| * créer un conteneur nginx | * créer un conteneur nginx |
| |
| Fichier : main.tf | Fichier : ''main.tf'' |
| |
| <sxh hcl;gutter:false> | <sxh js;gutter:false> |
| resource "docker_container" "web" { | resource "docker_container" "web" { |
| name = "mon_nginx" | name = "mon_nginx" |
| Planifier : | Planifier : |
| |
| Fichier : terminal | Dans le terminal |
| |
| <sxh bash;gutter:false> | <sxh bash;gutter:false> |
| Appliquer : | Appliquer : |
| |
| Fichier : terminal | Dans le terminal |
| |
| <sxh bash;gutter:false> | <sxh bash;gutter:false> |
| Fichier : main.tf | Fichier : main.tf |
| |
| <sxh hcl;gutter:false> | <sxh js;gutter:false> |
| image = "nginx:fake" | image = "nginx:fake" |
| </sxh> | </sxh> |
| Remettre : | Remettre : |
| |
| Fichier : main.tf | Fichier : ''main.tf'' |
| |
| <sxh hcl;gutter:false> | <sxh js;gutter:false> |
| image = "nginx:latest" | image = "nginx:latest" |
| </sxh> | </sxh> |
| Observer : | Observer : |
| |
| Fichier : terminal | Dans le terminal |
| |
| <sxh bash;gutter:false> | <sxh bash;gutter:false> |
| ls | ls -l |
| </sxh> | </sxh> |
| |
| Ajouter un port : | Ajouter un port : |
| |
| Fichier : main.tf | Fichier : ''main.tf'' |
| |
| <sxh hcl;gutter:false> | <sxh js;gutter:false> |
| ports { | ports { |
| internal = 80 | internal = 80 |
| * module "database" | * module "database" |
| |
| <WRAP round help> | <WRAP round question> |
| Question : | Question : |
| |