У меня есть частная подсеть с маршрутизацией по умолчанию для nat-gateway. Оба были созданы terraform.
Теперь у меня есть другой код для поднятия ec2 для использования в качестве NAT в моем VPC (поскольку cloud-nat-gateway становится очень дорогим). Я пытаюсь изменить маршрут по умолчанию в моем rtb на этот новый ec2 и получаю ошибку ниже:
Ошибка: ошибка при применении плана:
1 произошла ошибка: * module.ec2-nat.aws_route.defaultroute_to_ec2-nat: 1 произошла ошибка: * aws_route.defaultroute_to_ec2-nat: Ошибка создания маршрута: RouteAlreadyExists: маршрут, обозначенный 0.0.0.0/0, уже существует. код состояния: 400, идентификатор запроса: 408deb59-d223-4c9f-9a28-209e2e0478e9
Я знаю, что этот маршрут уже существует, но как изменить этот уже существующий маршрут на новую цель? В этом случае мой новый сетевой интерфейс ec2?
Спасибо за вашу помощь.
Ниже приведен код, который я использую:
#####################
# FIRST TERRAFORM
# create the internet gateway
resource "aws_internet_gateway" "this" {
count = "${var.create_vpc && length(var.public_subnets) > 0 ? 1 : 0}"
vpc_id = "${aws_vpc.this.id}"
tags = "${merge(map("Name", format("%s", var.name)), var.igw_tags, var.tags)}"
}
# Add default route (0.0.0.0/0) to internet gateway
resource "aws_route" "public_internet_gateway" {
count = "${var.create_vpc && length(var.public_subnets) > 0 ? 1 : 0}"
route_table_id = "${aws_route_table.public.id}"
destination_cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.this.id}"
timeouts {
create = "5m"
}
}
#####################
# SECOND TERRAFORM
# Spin EC2 to run as NAT
resource "aws_instance" "ec2-nat" {
count = "${var.instance_qtd}"
ami = "${data.aws_ami.nat.id}"
availability_zone = "${var.region}a"
instance_type = "${var.instance_type}"
key_name = "${var.aws_key_name}"
vpc_security_group_ids = ["${var.sg_ec2}","${var.sg_ops}"]
subnet_id = "${var.public_subnet_id}"
iam_instance_profile = "${var.iam_instance_profile}"
associate_public_ip_address = true
source_dest_check = false
tags = {
Name = "ec2-nat-${var.brand}-${var.role}-${count.index}"
Brand = "${var.brand}"
Role = "${var.role}"
Type = "ec2-nat"
}
}
# Add default route (0.0.0.0/0) to aws_instance.ec2-nat
variable "default_route" {
default = "0.0.0.0/0"
}
resource "aws_route" "defaultroute_to_ec2-nat" {
route_table_id = "${var.private_route_id}"
destination_cidr_block = "${var.default_route}"
instance_id = "${element(aws_instance.ec2-nat.*.id, 0)}"
}