Задача: распределять инстансы равномерно между подсетями
Решение: Получить остаток от деления. На питоне это выглядит так:
1 2 3 4 5 |
arr = [0,1,2,3,4,5,6,7,8,9,10] arr2 = [0,1,2] for x in arr: print(str(x) + "=" + str(arr2[x % len(arr2)])) |
Каждому значению из первого списка назначается значение из второго списка по кругу
1 2 3 4 5 6 7 8 9 10 11 |
0=0 1=1 2=2 3=0 4=1 5=2 6=0 7=1 8=2 9=0 10=1 |
В Terraform получаем список подсетей. Необходимо указать зависимость от создания этих подсетей.
1 2 3 4 5 6 7 |
data "aws_subnet_ids" "private" { vpc_id = aws_vpc.vpc_clusterName.id tags = { Tier = "Private" } depends_on = [aws_subnet.vpc-sn_clusterName-private] } |
При создании network_interface указать:
1 2 3 4 5 6 7 8 9 |
resource "aws_network_interface" "ni_EC2_clusterName-node" { count = var.node_count #распределяются между subNet subnet_id = element(data.aws_subnet_ids.private.ids[*], count.index % length(data.aws_subnet_ids.private.ids[*])) security_groups = ["${aws_security_group.sg_SSH-me.id}"] tags = { Name = "ni_EC2_clusterName-node-${count.index}" } } |