Проблема создания балансировщика сетевой нагрузки с помощью Terraform - PullRequest
1 голос
/ 15 июня 2019

Я создал пару экземпляров Ec2 в нескольких подсетях и назначил 4 вторичных Ips для ENI по умолчанию (устройство 0) - теперь вывод aws_network_interface атрибута private_ips дает все IP-адреса, включая IP-адрес хост-частного и другие вторичные Ip, случайным образом ,

Теперь моя проблема заключается в том, что мне нужно исключить «host private ip» и один ip, который я назначаю «windows cluster», из выходных данных и предоставить остальное для создания балансировщика сетевой нагрузки aws. Есть ли простой способ сортировки вывода и исключения необходимых ip из списка вывода? Здесь я создаю NLB с целевым IP-адресом, поэтому мне нужно предоставить набор вторичных IP-адресов из каждого экземпляра ec2 для создания целевой группы.

код:

resource "aws_instance" "web_servers" {
  count="2"
  ami                         = "ami-0a9ca0496f746e6e0"        # us-west-2
  instance_type               = "${var.instance_type}" # ="t2.medium"

  #associate_public_ip_address = "true"
  #user_data                   = ""

  network_interface {
    network_interface_id = "${element(aws_network_interface.foo.*.id,count.index}"
    device_index         = 0
  }
}

resource "aws_network_interface" "foo" {
  count="${var.instance["count"]}"
  subnet_id = "{aws_subnet.web_subnet.*.id[count.index]}"
  private_ips_count=4  
  security_groups = ["${aws_security_group.web.id}"]
}


output "priviate-ip-list"
{
  value="${list(aws_network_interface.foo.*.private_ips)}"
}

вывод имеет полный список private_ips, включая приватный ip хоста. Из списка мне нужно исключить 2 ips (один из них является ip частного хоста, а второй я буду использовать для кластера Windows "), скажем здесь, в коде, который я дал private_ips_count = 4 (выход будет иметь 5 ips для каждого экземпляра). поэтому, если я исключу 2 ips, у меня останется 3 из каждого экземпляра.

выходы:

private-ip-list=[
  [
    [10.170.20.110,10.170.21.120,10.170.22.177,10.170.18.111,10.170.21.100],
        [10.170.150.10,10.170.152.44,10.170.151.11,10.170.150.11,10.170.155.10]
    ]
]

здесь частный ip первого экземпляра ec2 равен 10.170.21.120 частный ip в ec2 2-й экземпляр - 10.170.151.11

так что из вывода мне нужно исключить 10.170.21.120 и еще 1 IP из второго набора исключите 10.170.151.11 и еще 1 ip.

из оставшегося набора Как и в каждом другом IPS, мне нужно назначить вход NLB target_id для создания NLB. Здесь я создаю NLB с целью по IP.

resource "aws_lb_target_group_attachment" "test" {
  target_group_arn = "${aws_lb_target_group.test.arn}"
  #target_id        = "ipaddress of 1 set [10.170.20.110,10.170.150.10]"

}

Я ищу идеи о том, как сохранить IP-адреса и исключить требуемые IP-адреса, а также передать параметр target_id с оставшимися ips

...