如何使用Terraform删除AWS实例卷

时间:2017-03-14 07:07:38

标签: amazon-web-services ami terraform

我使用自动在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"
        }
}

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我添加下一个代码以获取有关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时,所有实例和卷都被销毁。