Frodo
Frodo

Reputation: 583

concatenate two variables in terraform

i'm trying to create a kubernetes cluster from kops using terraform,following code is a part of infrastructure, i'm trying to create the name concatenate with two variables, and i'm getting illegal char error line two, error happens because im trying to define the name with concatenate variables. is it possible in terraform?

resource "aws_autoscaling_group" "master-kubernetes" {
  name                 = "master-"${var.zone}".masters."${var.cluster_name}""
  launch_configuration = "${aws_launch_configuration.master-kubernetes.id}"
  max_size             = 1
  min_size             = 1
  vpc_zone_identifier  = ["${aws_subnet.subnet-kubernetes.id}"]

Upvotes: 24

Views: 44478

Answers (3)

Mansur Ul Hasan
Mansur Ul Hasan

Reputation: 3606

I would say rather concatenating at resource level use the locals first define a variable in locals and then you can utilize it at resource level

Locals declaration

locals {
  rds_instance_name = "${var.env}-${var.rds_name}"
}

Resource Level declaration

resource "aws_db_instance" "default_mssql" {
  count                     = var.db_create ? 1 : 0
  name                      = local.rds_instance_name
........
}

This is as simple as its need to be ....

Upvotes: 3

Jay
Jay

Reputation: 271

With latest terraform 0.12.x terraform format doc , you could do better like:

resource "aws_autoscaling_group" "master-kubernetes" {
    name = format("master-%s.masters.%s", var.zone, var.cluster_name)
}

Upvotes: 26

KJH
KJH

Reputation: 2430

Try this:

resource "aws_autoscaling_group" "master-kubernetes" {
  name = "master-${var.zone}.masters.${var.cluster_name}"
  # ... other params ...
}

Upvotes: 22

Related Questions