我在多个子网中创建了两个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的想法