gpt4 book ai didi

amazon-web-services - 由 Terraform 启动的 AWS EC2 实例的动态命名 aws_autoscaling_group

转载 作者:行者123 更新时间:2023-12-04 23:13:12 25 4
gpt4 key购买 nike

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

对于 aws_instance类型,它可以通过以下方式轻松完成:

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}"
}
}

这将导致 3 个实例命名为:

1) 节点 1

2)节点2

3)节点3

然而作为 aws_autoscaling_group是动态配置的(用于扩展和缩减情况)如何控制配置实例的命名约定?
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
},
]
}

最佳答案

AWS 自动扩展组可以标记为许多资源并使用 propagate_at_launch flag 这些标签也将传递给它创建的实例。

不幸的是,这些是完全静态的,ASG 本身无法以不同的方式标记实例。最重要的是 default scale in policy不会首先删除最新的实例,因此即使您确实将实例标记为 Node1 , Node2 , Node3然后,当自动缩放组扩展时,最有可能(取决于标准)删除 Node1留给你 Node2Node3 .虽然可以将终止策略更改为 NewestInstance以便删除 Node3这不太可能是最佳的政策规模。

我会质疑为什么你觉得你需要以不同的方式使用 ASG 实例,也许重新考虑如何管理你的实例,因为它们在现代云中通常是短暂的,但在使用自动缩放组时更是如此。

如果您确实出于某些特定原因确实想以不同方式标记实例,则可以让 ASG 不传播 Name在启动时标记到实例,然后在扩展事件(通过生命周期 Hook 或 Cloudwatch 事件)上触发 Lambda 函数以确定要使用的标记值,然后用它标记实例。

关于amazon-web-services - 由 Terraform 启动的 AWS EC2 实例的动态命名 aws_autoscaling_group,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50502919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com