WS - 从 worker_groups 获取实例 ID

WS - get instance id from worker_groups

如何从此配置中获取实例 ID?

  worker_groups = [
    {
      name                          = "model-service_worker-group-1"
      instance_type                 = "p3.2xlarge"
      additional_userdata           = "echo foo bar"
      asg_desired_capacity          = 1
      additional_security_group_ids = [aws_security_group.worker_group_mgmt_one.id]
    },

我想重用这个实例并将 EBS 附加到它:

resource "aws_volume_attachment" "this_ec2" {
  count = 1

  device_name = "/dev/sdh"
  volume_id   = "0a7e25357443b6df0"
  instance_id = <INSTANCE ID HERE>
}

resource "aws_ebs_volume" "this" {
  count = 1

  availability_zone = module.eks.availability_zone[count.index]
  size              = 1
}

terraform-aws-eks模块不提供实例id等信息。这是因为它使用 AutoScaling Group (ASG) 来管理您的工作程序实例。 ASG 中的实例不受 TF 控制。因此,您无法获取他们的 ID。

充其量您必须设计一个自定义解决方案 来获取 asg 中的当前实例。这是可能的,因为 terraform-aws-eks 输出 workers_asg_arns。但它的设计仍然很糟糕,因为 ASG 中的实例可以随时替换,而无需您的 TF 代码参与。从长远来看,这将 导致失败 ,如果您依赖于实例始终相同。