patternterraformMinor
All volumes are deleted when EC2 intance is deleted via terraform
Viewed 0 times
volumesallareec2deletedintanceviawhenterraform
Problem
I am using a terraform template to create AWS resources.
My count is 2, everything gets created as per plan, and, I am attaching a 2nd EBS volume of 1 GB to both machines, which is also happening well.
However, the only issue is when I try to delete one EC2 instance using the command below, both of the 2nd EBS volumes of 1 GB are getting destroyed. I checked they are connected on separate instances.
This is the main.tf:
```
# Define webserver inside the public subnets
resource "aws_instance" "jumpserver" {
count = "${var.num_of_instances}"
ami = "${var.ami}"
instance_type = "t2.micro"
key_name = "${aws_key_pair.ProdKeypair.id}"
subnet_id = "${aws_subnet.public_subnet.id}"
vpc_security_group_ids = ["${aws_security_group.sg_internet_facing.id}"]
associate_public_ip_address = true
source_dest_check = false
# user_data = "${file("install.sh")}"
root_block_device = {
volume_type = "gp2"
volume_size = "8"
delete_on_termination = "${var.d
My count is 2, everything gets created as per plan, and, I am attaching a 2nd EBS volume of 1 GB to both machines, which is also happening well.
However, the only issue is when I try to delete one EC2 instance using the command below, both of the 2nd EBS volumes of 1 GB are getting destroyed. I checked they are connected on separate instances.
$ terraform destroy -target=aws_instance.jumpserver[1]
aws_vpc.main_vpc: Refreshing state... (ID: vpc-06b59734024ad6adc)
aws_key_pair.ProdKeypair: Refreshing state... (ID: ProdKeypair)
aws_security_group.sg_internet_facing: Refreshing state... (ID: sg-05a2739733f4f8a32)
aws_subnet.public_subnet: Refreshing state... (ID: subnet-0a8c6ea2718a44224)
aws_instance.jumpserver[1]: Refreshing state... (ID: i-05646d53baa34a988)
An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
- destroy
Terraform will perform the following actions:
- aws_ebs_volume.vol_generic_data[0]
- aws_ebs_volume.vol_generic_data[1]
- aws_instance.jumpserver[1]
- aws_volume_attachment.generic_data_vol_att[0]
- aws_volume_attachment.generic_data_vol_att[1]This is the main.tf:
```
# Define webserver inside the public subnets
resource "aws_instance" "jumpserver" {
count = "${var.num_of_instances}"
ami = "${var.ami}"
instance_type = "t2.micro"
key_name = "${aws_key_pair.ProdKeypair.id}"
subnet_id = "${aws_subnet.public_subnet.id}"
vpc_security_group_ids = ["${aws_security_group.sg_internet_facing.id}"]
associate_public_ip_address = true
source_dest_check = false
# user_data = "${file("install.sh")}"
root_block_device = {
volume_type = "gp2"
volume_size = "8"
delete_on_termination = "${var.d
Solution
I could see some spelling mistakes in the below mentioned line, rest all are fine i think.
Better you could avoid this line, This might be deleting the EBS when u terminating the ec2 instance. Skip this option and check.
delete_on_termination = "${var.delete_on_termincation}"Better you could avoid this line, This might be deleting the EBS when u terminating the ec2 instance. Skip this option and check.
Code Snippets
delete_on_termination = "${var.delete_on_termincation}"Context
StackExchange DevOps Q#5842, answer score: 3
Revisions (0)
No revisions yet.