Files
TerraformTraining/Workshop/E. For_each.md

1.7 KiB

E. For_each

Het is mooi dat je nu meerdere webapps kunt maken, maar de app service plan die we gebruiken heeft daar eigenlijk helemaal de resources niet voor. Dus we moeten nu toch een app service plan per webapp gaan maken. Daar kun je for_each goed voor gebruiken in combinatie met een map variabelen.

Variabelen

Als eerste ga je een map variabelen maken.

  • Voeg in je variables.tf een nieuwe variabelen toe met het type map(any)
  • Je kunt nu ook de app service plan naam en app naam variabelen verwijderen, die hebben we nu namelijk niet meer nodig.
  • Ga nu naar je dev.tfvars file, verwijder hier ook de app service plan naam en app naam variabelen.
  • Nu kun je de waardes van je map variabelen toe gaan voegen. Zie hieronder een voorbeeld:
asps = {
  terraform101-asp1 = {
    asp_tier = "B1"
    app = {
      app_name = "asp1-webapp"
      https_only = true
    }
  }
  terraform101-asp2 = {
    asp_tier = "B1"
    app = {
      app_name = "asp2-webapp"
      https_only = true
    }
  }
}

Zoals je ziet hebben we de naam van de app service plan als de key en daaronder weer een map als value. Deze map heeft asp_tier en app als key-value pairs. De asp_tier variabelen geeft ons de mogelijkheid om dit per app service plan in te stellen. Voor nu houden we het gewoon op B1. App is zelf ook weer een map met twee key-value pairs. De naam van onze web app en een https_only setting.

Code

Check voor de code de documentatie ;P https://developer.hashicorp.com/terraform/language/meta-arguments/for_each

Output block

Als je een output block hebt moet je de volgende wijziging aan brengen:

output "url" {
  value = {
    for r, wa in azurerm_linux_web_app.<de naam van je webapp resource block> : r => wa.default_hostname
  }
}