我仍然是 Terraform 的初学者。我有一个场景,假设只需要重新创建一个 AWS 组件,但它依赖于不需要任何更改的其他组件,例如,如果 AutoScaling 组存在,则无法更改启动配置组件。即使 ASG 被标记为受污染,terraform 仍然会抛出错误“”
aws_launch_configuration.sample-launch-configuration:发生 1 个错误:
aws_launch_configuration.sample-launch-configuration:创建启动配置时出错:AlreadyExists:此名称的启动配置已存在-名称为 sample-lc 状态代码的启动配置已存在:400,请求 ID:3dc2da6d-96e4-11e8-9086- cb6ff2d21a1c
在不破坏整个集群的情况下修复这些依赖关系的方法是什么?
编辑:添加源代码。(部分代码示例)
resource "aws_autoscaling_group" "sample-autoscaling-group" {
name = "sample-asg"
max_size = "${var.max_instance_size}"
min_size = "${var.min_instance_size}"
desired_capacity = "${var.desired_capacity}"
vpc_zone_identifier = ["${var.private-subnets}"]
launch_configuration = "${aws_launch_configuration.sample-launch-configuration.name}"
health_check_type = "EC2"
lifecycle {
create_before_destroy = true
}
}
resource "aws_launch_configuration" "sample-launch-configuration" {
name = "sample-lc"
image_id = "ami-706cca12"
instance_type = "t2.small"
iam_instance_profile = "${aws_iam_instance_profile.ecs-ec2-service-profile.id}"
lifecycle {
create_before_destroy = true
}
security_groups = ["${aws_security_group.test_public_sg.id}"]
associate_public_ip_address = "true"
key_name = "${var.ecs-key-pair-name}"
user_data = "${file("./templates/user_data.sh")}"
}
如果我更改 user_data.sh 文件并尝试执行它会失败。