Я работаю над настройкой автомасштабирования с использованием Terraform и Jenkins. Если существует существующая ASG, и я запускаю конвейер Jenkins, Terraform создаст новую ASG, подождет, пока экземпляры новой ASG восстановятся, а затем уничтожит старую ASG.
Я использую комбинацию аргументов для достижения этой цели -
Сначала жизненный цикл, так что новый asg создается до того, как старый будет уничтожен
lifecycle { create_before_destroy = true }
, затем я получаю Имя ASG из имени конфигурации запуска для принудительного назначения нового ресурса каждый раз, когда я запускаю конвейер (Мой сценарий terraform создает как конфигурацию asg, так и конфигурацию запуска)
resource "aws_autoscaling_group" "bar" {
name = "$(aws_launc_configuration.lc.name}"
.
.
}
и, наконец, с использованием опции wait_for_capacity
, так что terraform уничтожает более старые asg только если экземпляры из нового asg здоровы. В случае, если экземпляры из новой ASG не сообщают о исправности, конвейер Jenkins завершается сбоем без какого-либо отката или уничтожения новой ASG. Это оставляет меня с двумя ASG, один со здоровыми экземплярами и другой с нездоровым. Я пытался использовать -
terraform destroy -input=false -force -var-file=tfvars_file -target aws_autoscaling_group.my_asg_name -target aws_launch_configuration.my_lc_name
Но он ничего не удаляет и показывает уничтоженные ресурсы: 0 в качестве сообщения. Есть мысли?
Заранее спасибо.