Terraform 将弹性 IP 分配给自动缩放组实例
Terraform assigning elastic IPs to auto scaling group instances
我刚刚使用 Terraform 几天了,正在寻求指导。我在一个 vpc 下有两个子网(私有,public)。我想要做的是为自动缩放组创建的每个实例分配弹性 IP,或者在实例被销毁时删除弹性 IP。我试图遵循这个 link:
所以我创建了一个侦听端口 80 的弹性负载均衡器,并将其分配给自动缩放组和 public 子网。我在这里查看了弹性负载平衡的 AWS 文档:https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html 和 AWS 提供的各种其他文档,所以 我可能只是错误地思考了这个问题 。我不确定如何为 public 子网的自动缩放组的 EC2 实例分配一个弹性 IP,所以我唯一能想到的是它通过弹性负载均衡器自动处理吗?
我想到的第一个解决方案(甚至不确定我是否可以在没有 EC2 实例的情况下这样做),第二个来自第一个 link
中的说明
- 将弹性 IP 分配给弹性负载均衡器而不是 EC2 实例,然后将 DNS 记录指向该弹性 IP,然后让负载均衡器处理其余部分
- 做一个DNS记录指向负载均衡器的DNS
如果第二个选项正确,我会再试一次,我的.tf
肯定是不正确的。但是,如果有更好的选择,我想听听人们使用过的任何建议!
任何指南、文档或指南都很棒!
第二个选项正确。您需要将您的 DNS 记录指向您的负载均衡器。在 terraform 中看起来像这样(您的 ELB 或 ALB 资源会有所不同):
# Set up the load balancer
resource "aws_alb" "example" {
name = "example"
internal = false
security_groups = ["${aws_security_group.example.id}"]
subnets = ["${data.aws_subnet_ids.example.ids}"]
}
# Get the zone id for the zone you are setting this in
data "aws_route53_zone" "example" {
name = "example.com"
private_zone = false
}
# Set the record, replace <your dns name> with the name you want to use
resource "aws_route53_record" "build" {
provider = "aws"
zone_id = "${data.aws_route53_zone.example.zone_id}"
name = "<your dns name>"
type = "A"
alias {
name = "${aws_alb.example.dns_name}"
zone_id = "${aws_alb.eaxmple.zone_id}"
evaluate_target_health = false
}
}
我刚刚使用 Terraform 几天了,正在寻求指导。我在一个 vpc 下有两个子网(私有,public)。我想要做的是为自动缩放组创建的每个实例分配弹性 IP,或者在实例被销毁时删除弹性 IP。我试图遵循这个 link:
所以我创建了一个侦听端口 80 的弹性负载均衡器,并将其分配给自动缩放组和 public 子网。我在这里查看了弹性负载平衡的 AWS 文档:https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html 和 AWS 提供的各种其他文档,所以 我可能只是错误地思考了这个问题 。我不确定如何为 public 子网的自动缩放组的 EC2 实例分配一个弹性 IP,所以我唯一能想到的是它通过弹性负载均衡器自动处理吗?
我想到的第一个解决方案(甚至不确定我是否可以在没有 EC2 实例的情况下这样做),第二个来自第一个 link
中的说明- 将弹性 IP 分配给弹性负载均衡器而不是 EC2 实例,然后将 DNS 记录指向该弹性 IP,然后让负载均衡器处理其余部分
- 做一个DNS记录指向负载均衡器的DNS
如果第二个选项正确,我会再试一次,我的.tf
肯定是不正确的。但是,如果有更好的选择,我想听听人们使用过的任何建议!
任何指南、文档或指南都很棒!
第二个选项正确。您需要将您的 DNS 记录指向您的负载均衡器。在 terraform 中看起来像这样(您的 ELB 或 ALB 资源会有所不同):
# Set up the load balancer
resource "aws_alb" "example" {
name = "example"
internal = false
security_groups = ["${aws_security_group.example.id}"]
subnets = ["${data.aws_subnet_ids.example.ids}"]
}
# Get the zone id for the zone you are setting this in
data "aws_route53_zone" "example" {
name = "example.com"
private_zone = false
}
# Set the record, replace <your dns name> with the name you want to use
resource "aws_route53_record" "build" {
provider = "aws"
zone_id = "${data.aws_route53_zone.example.zone_id}"
name = "<your dns name>"
type = "A"
alias {
name = "${aws_alb.example.dns_name}"
zone_id = "${aws_alb.eaxmple.zone_id}"
evaluate_target_health = false
}
}