Formation DevOps | Formation Terraform : 10- Premier pas avec Terraform:Variables et Local-Exec

This website is powered by ItGalaxy.io


Terraform : Variables :

Terraform : Provisioner:

Terraform : Variables et Local-Exec

  • Utilisation de provisioner sur ces resources:
    Provisioner remote-exec : exécution sur la machine distante.
    Provisioner local-exec : exécution sur la machine terraform.

Type de variables:
String
list
map

Exemple variable en string :

variable “str” {type = string default = “127.0.0.1 gitlab.test “}resource “null_resource” “node1” {provisioner “local-exec” {command = “echo ‘${var.str}’ > hosts.txt”}} :Pas de ressource spécifique pour cette partie

Exemple variable en string :

Exemple variable en map :

variable “hosts” {default = {“127.0.0.1” = “localhost gitlab.local"“192.169.1.168” = “gitlab.test"“192.169.1.170” = “prometheus.test”}}

resource “null_resource” “hosts” {for_each = var.hostsprovisioner “local-exec” {command = “echo ‘${each.key} ${each.value}’ » hosts.txt”}}

Exemple variable en map :
3 elements

terraform apply -auto-approve: Pour éviter l’intéraction (forcer le yes).

Changer dans main.tf dans variable “127.0.0.1” = “localhost gitlab.local “ » en “127.0.0.7” = “localhost gitlab.local "

variable “hosts” {default = {“127.0.0.7” = “localhost gitlab.local"“192.169.1.168” = “gitlab.test"“192.169.1.170” = “prometheus.test”}}

resource “null_resource” “hosts” {for_each = var.hostsprovisioner “local-exec” {command = “echo ‘${each.key} ${each.value}’ » hosts.txt”}}

Détruire un élément et création d’un nouveau sans le supprimer du fichier.

Changer dans main.tf dans variable ” 127.0.0.7” = “localhost gitlab.local “ » en “127.0.0.7” =“localhost
gitlab.local.test
"

variable “hosts” {default = {“127.0.0.7” = “localhost gitlab.local.test"“192.169.1.168” = “gitlab.test"“192.169.1.170” = “prometheus.test”}}

resource “null_resource” “hosts” {for_each = var.hostsprovisioner “local-exec” {command = “echo ‘${each.key} ${each.value}’ » hosts.txt”}}

/!\Rien n’a changé! Le probléme sur terraform qu’on change la valeur il le détecte pas

La solution est dans le trigger

Exemple trigger:

variable “hosts” {default = {“127.0.0.7” = “localhost gitlab.local.test"“192.169.1.168” = “gitlab.test"“192.169.1.170” = “prometheus.test”}}

resource “null_resource” “hosts” {for_each = var.hoststriggers = {foo = each.value}
provisioner “local-exec” {command = “echo ‘${each.key} ${each.value}’ » hosts.txt”}}

Permet de déclencher un echo si une value de la map a changé et ce fait grâce au .ftstate

Exemple variable en list:

variable “hosts” {default = [“127.0.0.1 localhost”,“192.168.1.133 gitlab.test”]}
resource “null_resource” “hosts” {count = “${length(var.hosts)}”: Count : pour l’itération
provisioner “local-exec”
{command = “echo ‘${element(var.hosts, count.index)}’ » hosts.txt”}}:Élément fct: pour afficher les elements de la list en parametre var.hosts , count.index

variable “hosts” {default = [“127.0.0.1 localhost”,“192.168.1.133 gitlab.test”]}
resource “null_resource” “hosts” {count = “${length(var.hosts)}”
triggers = {foo = element(var.hosts, count.index)}
provisioner “local-exec” {command = “echo ‘${element(var.hosts, count.index)}’ » hosts.txt”}}






1. Nous contactez


2. Infra as a Service

  • Description: Infrastructure cloud évolutive et sécurisée
  • Links:

3. Projets Développeurs


4. Développeurs


5. Formations Complètes


6. Marketplace

7. Blogs


This website is powered by ItGalaxy.io