使用Terraform创建网络负载平衡器时出现问题

时间:2019-06-15 18:40:22

标签: amazon-ec2 terraform

我在多个子网中创建了两个Ec2实例,并为默认的ENI(设备0)分配了4个辅助Ips-现在private_ips属性的aws_network_interface的输出将随机分配所有IP,包括主机-私有ip和其他辅助Ip 。

现在我的问题是我需要从输出中排除“主机专用ip”和我分配给“ windows群集”的一个ip,并提供其余的以创建AWS网络负载平衡器。有没有一种简单的方法可以对输出进行排序,并从列表输出中排除所需的IP?在这里,我正在通过IP创建具有目标的NLB,因此我需要从每个ec2实例中提供一组辅助IP来创建目标组。

代码:

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_ip的整个列表,包括主机私有ip。 从列表中,我需要排除2个ips(一个是主机专用ip,第二个我将用于Windows群集”)在这里我给private_ips_count = 4的代码中说(每个实例的输出将有5 ips)。 因此,如果我排除2个ip,则每个实例剩下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]
    ]
]

此处第一个ec2实例的私有IP为10.170.21.120 ec2第2个实例的私有IP是10.170.151.11

所以从输出中我需要排除10.170.21.120和另外1个IP 从第二组中排除10.170.151.11和另外1 ip。

从剩余的集合 就像从每个实例中一样,我需要将一个IP分配给NLB target_id输入以创建NLB。在这里,我正在通过IP创建具有目标的NLB。

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并将剩余IP传递给参数target_id的想法

0 个答案:

没有答案