gpt4 book ai didi

terraform - 使用启动模板滚动更新 ASG

转载 作者:行者123 更新时间:2023-12-03 21:16:18 24 4
gpt4 key购买 nike

当我更新与 aws_launch_template 关联的 AMI 时,Terraform 按预期创建启动模板的新版本,并更新 aws_autoscaling_group 以指向启动模板的新版本。

但是,没有执行“滚动更新”来使用基于新 AMI 的新实例切换现有实例,我必须手动终止现有实例,然后 ASG 使用新 AMI 启动新实例。

我必须对配置进行哪些更改才能让 Terraform 执行滚动更新?

现有代码如下:

resource "aws_launch_template" "this" {

name_prefix = "my-launch-template-"
image_id = var.ami_id
instance_type = "t3.small"
key_name = "testing"

vpc_security_group_ids = [ aws_security_group.this.id ]

lifecycle {
create_before_destroy = true
}
}


resource "aws_autoscaling_group" "this" {

name_prefix = "my-asg-"
vpc_zone_identifier = var.subnet_ids
target_group_arns = var.target_group_arns

health_check_type = "ELB"
health_check_grace_period = 300
default_cooldown = 10

min_size = 4
max_size = 4
desired_capacity = 4

launch_template {
id = aws_launch_template.this.id
version = aws_launch_template.this.latest_version
}

lifecycle {
create_before_destroy = true
}
}

最佳答案

我最近研究了完全相同的场景。

我们使用 random_pet 资源生成一个人类可读的随机名称,该名称与 AMI 更改相关联。

resource "random_pet" "ami_random_name" {
keepers = {
# Generate a new pet name every time we change the AMI
ami_id = var.ami_id
}
}

然后,您可以在一个变量上使用该 random_pet 名称 ID,该变量将强制重新创建您的自动缩放组。

例如 name_prefix :
resource "aws_autoscaling_group" "this" {

name_prefix = "my-asg-${random_pet.ami_random_name.id}"
vpc_zone_identifier = var.subnet_ids
target_group_arns = var.target_group_arns

health_check_type = "ELB"
health_check_grace_period = 300
default_cooldown = 10

min_size = 4
max_size = 4
desired_capacity = 4

launch_template {
id = aws_launch_template.this.id
version = aws_launch_template.this.latest_version
}

lifecycle {
create_before_destroy = true
}
}

关于terraform - 使用启动模板滚动更新 ASG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60391297/

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