Using Terraform to create multiple copies of instances in multiple regions
I needed to be able create multiple copies of a instance in multiple regions.
For example if I needed to create two copies of this instance in three different regions. This would mean a total of six different instances.
Terraform
local {
regions = ["us-west", "us-east", "eu-central"]
count_per = 2
ssh_public_key = chomp(file(pathexpand("~/.ssh/id_rsa.pub")))
}
resource "linode_instance" "edge" {
label = "edge-${element(local.regions,floor(count.index / local.count_per))}-${format("%02g", (count.index % local.count_per) + 1)}"
region = element(local.regions, floor(count.index / local.count_per))
count = local.count * length(local.regions)
type = "g6-nanode-1"
image = "linode/ubuntu20.04"
root_pass = random_password.root_password.result
authorized_keys = [local.ssh_public_key]
}
Interesting Bits
count
generates to total number of instances to be created.
region
chooses which region to create the instance in by dividing how many instances have been created into the total number of instances per region using the count_per
local variable. The function floor
is used to ensure that whole numbers are given to the element
function.
label
names the instances as edge-us-west-01
, edge-us-west-02
, etc.