Terraform - AWS - Как предотвратить удаление томов EBS?

Я новичок в Terraform, поэтому надеюсь, что проблема в том, что я делаю неправильно.

У меня есть несколько экземпляров, к которым нужно присоединить отдельные тома EBS. Они определены как три отдельных ресурса Terraform:

aws_instance
aws_ebs_volume
aws_volume_attachment

Когда экземпляры загружаются, в консоли AWS тома говорят, что у них есть защита «Удалить при завершении», но Terraform по-прежнему их уничтожает:

скриншот тома aws ebs

Если вы используете отображение block_device в определении ресурса aws_instance, вы можете предотвратить его завершение:

https://www.terraform.io/docs/providers/aws/r/instance.html#delete_on_termination-1

Но эта опция не отображается в ресурсе ebs_volume:

https://www.terraform.io/docs/providers/aws/r/ebs_volume.html

Как мне запретить Terraform удалить мои тома EBS?

Я пробовал это сделать, но это просто останавливает выполнение задания уничтожения терраформ:

  lifecycle = {
    prevent_destroy = true
  }

Спасибо


person TristanP    schedule 22.11.2017    source источник
comment
Пожалуйста, покажите свой terraform plan ... результат.   -  person nickgryg    schedule 22.11.2017
comment
Привет, ты хочешь план: создать, уничтожить, или и то, и другое? Независимо от этого, они представляют собой довольно большие выходные данные и содержат много бизнес-данных (теги, идентификаторы имен), поэтому я пытаюсь отредактировать из них все идентифицируемые бизнес-данные. Пожалуйста, потерпите меня. Спасибо Если вам нужны только определенные разделы, дайте мне знать.   -  person TristanP    schedule 22.11.2017
comment
Пожалуйста, покажите вывод плана уничтожения aws_instance.   -  person nickgryg    schedule 22.11.2017
comment
Вот и все - ›pastebin.com/4B9nf4Bq Спасибо   -  person TristanP    schedule 22.11.2017
comment
Вы поместили мета-параметр lifecycle в блок ресурсов aws_ebs_volume?   -  person KJH    schedule 22.11.2017
comment
@KJH - да в блоке громкости.   -  person TristanP    schedule 23.11.2017


Ответы (3)


Он делает именно то, что говорится в документации, поэтому Terraform не разрешит terraform destroy, если он вам нужен для этого, я предлагаю переместить эти ресурсы в их собственный каталог terraform подальше от других ресурсов.

prevent_destroy (bool) - этот флаг обеспечивает дополнительную защиту от разрушения данного ресурса. Если установлено значение true, любой план, включающий уничтожение этого ресурса, вернет сообщение об ошибке.

person strongjz    schedule 23.11.2017

В общем, terraform destroy уничтожит все ресурсы. Если вы предпочитаете уничтожать только определенные ресурсы, вы можете использовать, например: terraform destroy -target=aws_instance.some_name

Для вашего примера тома EBS вам также придется уничтожить ресурс aws_volume_attachment.

person KJH    schedule 22.11.2017

если вы хотите предотвратить случайное удаление вашего экземпляра ec2, вы можете использовать приведенную ниже команду в разделе ресурсов создания экземпляра ec2,

disable_api_termination = "true"

Пару раз я проверял, что все работает нормально.

Удачного обучения .... !!

person Mahalingamoorthy M    schedule 25.01.2018
comment
Вы можете улучшить этот ответ, связавшись с документацией. Кроме того, мое быстрое исследование показывает, что в Terraform есть открытые ошибки, которые могут привести к тому, что этот параметр не будет работать должным образом - что, вероятно, также следует исправить. - person Rick Moritz; 25.01.2018