Terraform:如何附加服务器计数并将服务器分配给多个可用区?



main.tf

resource "aws_instance" "service" {
ami           = "${lookup(var.aws_winamis, var.awsregion)}"
count         = "${var.count}"
key_name      = "${var.key_name}"
instance_type = "t2.medium"
subnet_id     = "${aws_subnet.private.id}"
# private_ip    = "${lookup(var.server_instance_ips, count.index)}"
vpc_security_group_ids = ["${aws_security_group.private-sg.id}"]
associate_public_ip_address = false
availability_zone           = "${var.awsregion}a"
tags {
Name        = "${format("server-%01d", count.index + 1)}"
Environment = "${var.environment}"
}
}

Variable.tf

variable "awsregion" {default =""}
variable "count" {default = ""}
variable "server_instance_ips" {default = ""}

dev.tfvars

server_instance_ips = ["10.0.2.25", "10.0.2.26"] #doesn't work as a list but works with single IP address
count = "4"
awsregion = "us-east-1"

我希望服务器在创建后有标签 -dla-server-1/2/3/4,但使用我上面的代码,我只能做server-1/2/3/4但不能dla/sla/pla具体取决于环境;IP 地址是随机分配给服务器的,因为我无法传递 IP 列表,最后,我如何在不同的可用区中创建服务器,即 AZ1a 中的 2 台服务器和 AZ1b 中的 2 台服务器?

第一个答案很简单:在标签名称中添加前缀。

tags {
Name        = "${var.environment}-${format("server-%01d", count.index + 1)}"
Environment = "${var.environment}"
}

您需要将变量的类型指定为列表:

variable "server_instance_ips"
{
type = "list"
default = []
}

最后一个问题可以通过多种方式解决,我会选择类似的东西

availability_zone = "${data.aws_availability_zones.available.names[count.index]}"

最新更新