【问题标题】:How to remove an AWS Instance volume using Terraform如何使用 Terraform 删除 AWS 实例卷
【发布时间】:2017-03-17 19:47:25
【问题描述】:

我使用自动在 AWS 上创建卷的 AMI 部署 CentOS 7,因此当我使用以下 Terraform 命令删除平台时:

terraform plan -destroy -var-file terraform.tfvars -out terraform.tfplan
terraform apply terraform.tfplan 

卷不会删除,因为它是使用 AMI 自动创建的,而 terraform 不会创建它。是否可以使用 terraform 删除?

我的 AWS 实例是使用下一个 terraform 代码创建的:

resource "aws_instance" "DCOS-master1" {
    ami = "${var.aws_centos_ami}"
    availability_zone = "eu-west-1b"
    instance_type = "t2.medium"
    key_name = "${var.aws_key_name}"
    security_groups = ["${aws_security_group.bastion.id}"]
    associate_public_ip_address = true
    private_ip = "10.0.0.11"
    source_dest_check = false
    subnet_id = "${aws_subnet.eu-west-1b-public.id}"

    tags {
            Name = "master1"
        }
}

【问题讨论】:

    标签: amazon-web-services amazon-ami terraform


    【解决方案1】:

    我添加下一个代码来获取有关 EBS 卷的信息并获取其 ID:

    data "aws_ebs_volume" "ebs_volume" {
      most_recent = true
    
      filter {
        name   = "attachment.instance-id"
        values = ["${aws_instance.DCOS-master1.id}"]
      }
    }
    
    output "ebs_volume_id" {
      value = "${data.aws_ebs_volume.ebs_volume.id}"
    }
    

    然后将 EBS 卷 ID 导入到 terraform 计划中:

    terraform import aws_ebs_volume.data volume-ID
    

    最后,当我运行 terraform destroy 时,所有实例和卷都被销毁了。

    【讨论】:

      【解决方案2】:

      如果 EBS 受到保护,则需要先在控制台上手动删除终止保护,然后才能将其销毁

      【讨论】:

      • 但我可以在 AWS 卷上手动删除它。我使用 terraform 和 ansible 对云上的数据平台进行了完全自动化的部署和销毁。我需要用 terraform 自动删除它。不可能吗?
      • 如果你不保护你的 ebs 这可能要小心
      • 但是,如果我不保护它,任何人都可以访问它吗?还是只有我的 AWS 账户不受保护?
      • 您是否正在创建一个支持 ebs 的实例?有终止保护?
      • 我将用于创建一个实例的 terraform 代码添加到问题中,您可以看到我没有创建任何保护。
      猜你喜欢
      • 1970-01-01
      • 2018-05-06
      • 1970-01-01
      • 2018-07-17
      • 2021-12-26
      • 2018-09-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      相关资源
      最近更新 更多