DSL

Terraspace supports an optional Ruby DSL. It gives you access to the full power of Ruby, when HCL is not enough for your purposes.

Note: The DSL interface may change.

Examples

app/modules/instance/main.rb

resource("aws_instance", "this",
  ami: "ami-0ded0751341bcc45b", # amazonlinux2
  instance_type: "t2.micro",
)

app/modules/vpc/variables.rb

variable("cidr_block",
  default: "10.10.0.0/16",
  description: "cidr block",
)

app/modules/vpc/main.rb

resource("aws_vpc", "vpc",
  cidr_block: var.cidr_block,
)

app/modules/vpc/outputs.rb

output("vpc_arn",
  description: "VPC arn",
  value: "${aws_vpc.vpc.arn}"
)

More tools: