Terraform: Как добавить количество серверов и назначить серверы нескольким AZ? - PullRequest
0 голосов
/ 03 июля 2018

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-адресов и, наконец, как я могу создать серверы на разных AZ, то есть 2 сервера в AZ1a и 2 сервера в AZ1b?

1 Ответ

0 голосов
/ 04 июля 2018

Первый ответ прост: добавьте префикс в имя тега.

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]}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...