Уничтожение Terraform не уничтожает созданные точечные экземпляры, когда один и тот же tf-файл выполняется с разными рабочими пространствами
У меня есть требование к моей инфраструктуре CI для создания и уничтожения кластера ECS с точечными экземплярами EC2 для создания ипроверить мой кодДля этого я использую terraform для создания aws_spot_fleet_request с набором конфигураций запуска. Поскольку в репо у меня будет несколько веток, я буду запускать эту terraform с именем рабочей области uniq для каждой ветви. Когда две ветви применяют мою терраформу, она правильно создает уникальные экземпляры на основе рабочей области. Однако, когда один из них подходит к этапу запуска уничтожения terraform, он просто ждет уничтожения и в итоге выдает ошибку ниже
ws_spot_fleet_request.arm_ct_spot_resource: Все еще уничтожается ... (ID:, 3m30s прошло) aws_spot_fleet_requestРесурс: Все еще уничтожается ... (ID: 4m10s прошло) aws_spot_fleet_request.arm_ct_spot_resource: все еще уничтожается ... (ID: 4m20s прошло) aws_spot_fleet_request.arm_ct_spot_resource: по-прежнему уничтожаетсяУничтожение ... (ID: 4m40s прошло) aws_spot_fleet_request.arm_ct_spot_resource: Все еще уничтожается ... (ID: 4m50s прошло) aws_spot_fleet_request.arm_ct_spot_resource: Все еще уничтожается ... (ID:,5m0s прошло) Отпустить блокировку состояния. Это может занять несколько минут ...
Ошибка: ошибка при применении плана:
1 произошла ошибка (и):
aws_spot_fleet_request.arm_ct_spot_resource (уничтожить): произошла 1 ошибка:
aws_spot_fleet_request.arm_ct_spot_resource: ошибка при удалении точечного запроса (): во флоте по-прежнему есть (1) запущенных экземпляров
Terraform не выполняет автоматический откат в случае ошибок. Вместо этого ваш файл состояния Terraform был частично обновлен любыми успешно завершенными ресурсами. Пожалуйста, устраните вышеуказанную ошибку и повторите попытку, чтобы постепенно изменить свою инфраструктуру.
resource "aws_spot_fleet_request" "arm_ct_spot_resource" {
iam_fleet_role = "${aws_iam_role.fleet.arn}"
target_capacity = "${var.instance_count}"
terminate_instances_with_expiration = true
allocation_strategy = "lowestPrice"
wait_for_fulfillment = true
launch_specification {
instance_type = "t3.2xlarge"
ami = "${data.aws_ami.ecs_agent_image.id}"
vpc_security_group_ids = ["${aws_security_group.security_group_sg.id}"]
subnet_id = "${element(data.terraform_remote_state.environment_state.vpc_service_subnet_ids_2, 0)}"
iam_instance_profile = "${aws_iam_instance_profile.arm_iam_profile.name}"
associate_public_ip_address = true
key_name = "${var.key_name}"
weighted_capacity = 1
# Tags defined in locals only.
tags = "${merge(
local.common_tags,
map(
"Name", "aws_instance for ${var.environment_id}"
)
)}"
root_block_device {
volume_size = "${var.disk_size}"
}
user_data = <<EOF
#!/bin/bash
echo ECS_CLUSTER="${aws_ecs_cluster.arm_cluster.name}" >> /etc/ecs/ecs.config
EOF
}
launch_specification {
instance_type = "c5.9xlarge"
ami = "${data.aws_ami.ecs_agent_image.id}"
vpc_security_group_ids = ["${aws_security_group.security_group_sg.id}"]
subnet_id = "${element(data.terraform_remote_state.environment_state.vpc_service_subnet_ids_2, 0)}"
iam_instance_profile = "${aws_iam_instance_profile.arm_iam_profile.name}"
associate_public_ip_address = true
key_name = "${var.key_name}"
weighted_capacity = 4
# Tags defined in locals only.
tags = "${merge(
local.common_tags,
map(
"Name", "aws_instance for ${var.environment_id}"
)
)}"
root_block_device {
volume_size = "${var.disk_size}"
}
user_data = <<EOF
#!/bin/bash
echo ECS_CLUSTER="${aws_ecs_cluster.arm_cluster.name}" >> /etc/ecs/ecs.config
EOF
}
}