首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由Terraform aws_autoscaling_group启动的AWS aws_autoscaling_group实例的动态命名

由Terraform aws_autoscaling_group启动的AWS aws_autoscaling_group实例的动态命名
EN

Stack Overflow用户
提问于 2018-05-24 06:59:09
回答 2查看 6.5K关注 0票数 13

我已经成功地使用Terraform创建了一个自动标度组。现在,我想找到一种基于索引值动态命名配置实例的方法。

对于aws_instance类型,可以很容易地通过以下方法完成:

代码语言:javascript
复制
resource "aws_instance" "bar" {
  count = 3

  tags {
    Name     = "${var.instance_name_gridNode}${count.index + 1}"
    App-code = "${var.app-code}"
    PC-code  = "${var.pc-code}"
  }
}

这将导致三个实例名为:

1) Node1

2) Node2

3) Node3

但是,由于aws_autoscaling_group是动态配置的(无论是在扩展的情况下还是在向外扩展的情况下),如何控制所提供实例的命名约定?

代码语言:javascript
复制
resource "aws_autoscaling_group" "gridrouter_asg" {
  name                      = "mygridrouter"
  launch_configuration      = "${aws_launch_configuration.gridGgr_lcfg.id}"
  min_size                  = 1
  max_size                  = 2
  health_check_grace_period = 150
  desired_capacity          = 1
  vpc_zone_identifier       = ["${var.subnet_id}"]
  health_check_type         = "EC2"

  tags = [
    {
      key                 = "Name"
      value               = "${var.instance_name_gridGgr_auto}"
      propagate_at_launch = true
    },
  ]
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-24 08:58:51

可以像许多资源一样对AWS自动标度组进行标记,并使用propagate_at_launch标志将这些标记传递给它创建的实例。

不幸的是,这些都是静态的,ASG本身没有方法对实例进行不同的标记。最重要的是,政策中的默认比例不会首先删除最新的实例,因此即使您确实将实例标记为Node1Node2Node3,那么当自动标度组在其中缩放时,最有可能(取决于标准)删除Node1,而只剩下Node2Node3。虽然可以将终止策略更改为NewestInstance,以便删除Node3,但这不太可能是策略的最佳规模。

我会问,为什么您认为您需要对ASG实例进行不同的对待,并可能会重新考虑如何管理您的实例时,它们是短暂的,在现代云中通常是如此,但在使用自动标度组时则更为如此。

如果出于某些特定原因,您确实希望对实例进行不同的标记,则可以让ASG在启动时不将Name标记传播到实例,然后在扩展事件(通过生命周期钩子或Cloudwatch事件)上有一个Lambda函数触发器来确定要使用的标记值,然后用它标记实例。

票数 14
EN

Stack Overflow用户

发布于 2019-09-12 14:37:24

一种方法是将用户数据脚本传递给实例或自动标注组。PFB与一个类似问题的答案的链接。

https://stackoverflow.com/a/44613778/3304632

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50502919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档