Quantcast
Channel: Terraform - HashiCorp Discuss
Viewing all articles
Browse latest Browse all 11459

How to merge 2 tuples?

$
0
0

I’m still getting to grips with Terraform so forgive me if this is a dumb question!

I am trying to create a variable which will eventually be used to add multiple disks to a new VM in azure.

I have a yaml file which contains a variable for needed data disks alongside other VM properties:

vms:
  vm1:
    server_data_disks:
       - name: "datadisk1"
         data_disk_size_gb: 128
         data_disk_storage_account_type: "Standard_LRS"
         caching: "ReadWrite"
       - name: "datadisk2"
         data_disk_size_gb: 128
         data_disk_storage_account_type: "Standard_LRS"
         caching: "ReadWrite" 

I then have a variable defined to store these properties:

variable "server_data_disks" {
  type = list(object({
    data_disk_size_gb                           = number
    data_disk_storage_account_type = string
    caching                                             = string
    name                                                 = string
  }))
  description = "Additional drives to be added to the machine."
  default = null
}

There will be cases where additional disks need to be added (such as when a SQL Server is being requested). There will also be occasions when 0 additional disks are required. Due to this I have 2 local variables which define additional disks that need to be added under certain conditions:

locals {
  server_data_disks = var.server_data_disks != null ? [for disk in var.server_data_disks : {
      data_disk_size_gb              = disk.data_disk_size_gb
      data_disk_storage_account_type = disk.data_disk_storage_account_type
      caching                        = disk.caching
      name                           = disk.name
    }
  ] : null

  server_sql_disks = [
    {
      "data_disk_size_gb" = "80",
      "data_disk_storage_account_type" = "Standard_LRS",
      "caching" = "ReadWrite",
      "name" = "datadisk5",
    },
    {
      "data_disk_size_gb" = "25",
      "data_disk_storage_account_type" = "Standard_LRS",
      "caching" = "ReadWrite",
      "name" = "datadisk6",
    }
]

Next, I want to merge these 2 variables into a single variable that can be passed to an azurerm_managed_disk resource.

If I try to merge the variables using the code:

merge(local.server_data_disks,local.server_sql_disks)

I get an error:

Error: Error in function call
│     │ while calling merge(maps...)
│     │ local.server_data_disks is tuple with 2 elements
│     │ local.server_sql_disks is tuple with 2 elements
│ Call to function "merge" failed: arguments must be maps or objects, got
│ "tuple".

Can anyone advise on how a can merge these 2 variables together?

Thanks.

1 post - 1 participant

Read full topic


Viewing all articles
Browse latest Browse all 11459

Latest Images

Trending Articles



Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>