【问题标题】:Terraform assigning elastic IPs to auto scaling group instancesTerraform 为 Auto Scaling 组实例分配弹性 IP
【发布时间】:2018-11-01 10:43:01
【问题描述】:

我已经使用 Terraform 几天了,正在寻求指导。我在一个 vpc(私有、公共)下有两个子网。我要做的是为自动伸缩组创建的每个实例分配弹性 IP,或者在实例被销毁时删除弹性 IP。我试图按照这个链接: Auto assign public IPs to my instance created by an austo-scaling group

所以我创建了一个在端口 80 上侦听的弹性负载均衡器,并将其分配给 Auto Scaling 组和公共子网。我在这里浏览了 AWS 文档以进行弹性负载平衡:https://docs.aws.amazon.com/elasticloadbalancing/latest/userguide/how-elastic-load-balancing-works.html 和 AWS 提供的各种其他文档,所以 我可能只是错误地考虑了这个问题。我不确定如何为公共子网的 Auto Scaling 组的 EC2 实例分配弹性 IP,所以我唯一能想到的就是通过弹性负载均衡器自动处理?

我想到的第一个解决方案(甚至不确定我是否可以在没有 EC2 实例的情况下做到这一点),第二个来自第一个链接中的说明

  1. 将弹性 IP 分配给弹性负载均衡器而不是 EC2 实例,然后将 DNS 记录指向该弹性 IP,然后让负载均衡器处理其余部分
  2. 创建 DNS 记录以指向负载平衡器的 DNS

如果第二个选项是正确的,我会再试一次,我的.tf 一定是不正确的。但是,如果有更好的选择,我想听听人们使用过的任何建议!

任何指南、文档或指导都会很棒!

【问题讨论】:

标签: amazon-web-services terraform ip vpc


【解决方案1】:

第二个选项是正确的。您需要将您的 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
  }
}

【讨论】:

    猜你喜欢
    • 2018-03-01
    • 2017-10-07
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2018-09-22
    • 2021-02-09
    • 1970-01-01
    • 2021-08-25
    相关资源
    最近更新 更多