为 aws_autoscaling_group 个实例获取 public 个 DNS

Get public DNS for aws_autoscaling_group instances

我想输出构成我的自动缩放组的 EC2 的 public DNS:

resource "aws_launch_configuration" "instances" {
  image_id        = "ami-0fad7824ed21125b1"
  instance_type   = "${var.instance_type}"
  security_groups = ["${aws_security_group.security_group_ec2.id}"]
  key_name        = "${var.key_pair_name}"

  user_data = "${data.template_file.user_data.rendered}"

  lifecycle {
    create_before_destroy = true
  }
}

resource "aws_autoscaling_group" "scaling_group" {
  launch_configuration = "${aws_launch_configuration.instances.id}"
  availability_zones   = ["${var.availability_zones_names}"]

  load_balancers    = ["${var.elb_id}"]
  health_check_type = "ELB"

  min_size = "${var.min_size}"
  max_size = "${var.max_size}"

  tags = {
    key                 = "Name"
    value               = "terraformUpAndRunning-${var.cluster_name}"
    propagate_at_launch = true
  }

  wait_for_capacity_timeout = "5m"
}

我已经检查了官方 Terraform 文档中的 auto scaling group attributes,但无法在其中任何一个中思考以实现我的目标...有什么办法吗?

由自动缩放组管理的实例不由 Terraform 管理。因此,Terraform 在其状态文件中跟踪那些短暂的实例是不明智的。短暂的实例会按其性质来来去去。

但是,如果您确实想要为此目的使用 Terraform,可以使用名为 aws_instances 的数据源。这使您能够查询和列出多个实例。

您也可以使用 awscli to print out the instance details. Here's an example of that: Getting a list of instances in an EC2 auto scale group?.