Search code examples
azureterraformyamlazure-aksterraform-provider-azure

How to use tags from yaml file - terraform


I am trying to extract certain tags from a YAML file with Terraform, but i just don't know how. Yaml file looks like this:

--- 
name: subscriptionName 
emailContact: [email protected] 
tags:
  - key: "tagKey1"
    value: "tagValue1"
  - key: "tagKey2"
    value: "tagValue2"
  - key: "tagKey3"
    value: "tagValue3"
  - key: "tagKey4"
    value: "tagValue4"

What i am interested in is getting 2 (let's say key1 and key3) key-value pairs as tags and tag resouces. I know that 'locals' plays a role here, but i am kinda new to terraform and cannot get any resource tagged. The resources are Azure (if it matters).

The resource i am trying to tag is:

resource "azurerm_network_security_group" "nsg" {
name                = "randomname"
location = "westeurope"
resource_group_name = "random_rg"
tags { }
}

Solution

  • If you really want two random tags, you can use random_shuffle:

    locals {
        loaded_yaml = yamldecode(file("./your_file.yaml"))
    }
    
    resource "random_shuffle" "indices" {
      input        = range(0, length(local.loaded_yaml.tags))
      result_count = 2
      seed = timestamp()
    }
    
    output "random_tags" {
        value = [for idx in random_shuffle.indices.result: 
                 local.loaded_yaml.tags[idx]]
    }
    

    update For example:

        tags = {
                (local.loaded_yaml.tags[0].key) = local.loaded_yaml.tags[0].value
                (local.loaded_yaml.tags[3].key) = local.loaded_yaml.tags[3].value
            }