Terraform - AWS - 如何防止删除EBS卷?

时间:2017-11-22 10:25:26

标签: amazon-web-services volume terraform terminate amazon-ebs

我对Terraform相当陌生,所以我希望这个问题是我做错了。

我有一些需要附加单独EBS卷的实例。这些被定义为三个独立的Terraform资源:

aws_instance
aws_ebs_volume
aws_volume_attachment

当实例启动时,在AWS控制台中,卷表示他们在终止时已删除'保护,但Terraform仍在摧毁它们:

aws ebs volume screenshot

如果您使用' 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卷?

我尝试过这样做,但它只是停止了terraform destroy作业的运行:

  lifecycle = {
    prevent_destroy = true
  }

由于

3 个答案:

答案 0 :(得分:1)

它完全按照文档所说的那样做,所以Terraform不会允许terraform destroy,如果你需要它,那么我建议将这些资源移到他们自己的terraform目录远离其他资源。

  

prevent_destroy(bool) - 此标志提供额外保护   破坏给定的资源。当此设置为true时,任何   包含此资源销毁的计划将返回错误   消息。

答案 1 :(得分:0)

通常,terraform destroy会破坏所有资源。如果您只想销毁特定资源,可以使用例如:terraform destroy -target=aws_instance.some_name

对于您的EBS卷示例,您还必须销毁aws_volume_attachment资源。

答案 2 :(得分:0)

如果您想阻止ec2实例被意外删除,可以在create ec2 instance resource部分使用以下命令,

disable_api_termination =“true”

我已经验证了几次工作正常。

快乐学习...... !!