AKTUALIZACJA: Pracowałem nad tym i między innymi. Nie można uzyskać działającej konfiguracji w/dwóch podsieci i bastionu SSH. Umieszczenie nagrody za pełną konfigurację pliku tt: * tworzy dwie prywatne podsieci * tworzy bastion * obraca instancję ec2 w każdej podsieci skonfigurowanej przez bastion (uruchamiaj dowolne polecenie powłoki przez bastion) * ma Internet bramka skonfigurowany * ma NAT dla gospodarzy na prywatnych podsieci * ma trasy i grupy zabezpieczeń odpowiednio skonfigurowanyJak routować między dwiema podsieciami w AWS VPC w/Terraform?
Original post: próbuję nauczyć Terraform i zbudować prototyp. Posiadam VPC AWS skonfigurowany przez Terraform. Oprócz podsieci DMZ, mam publiczną podsieć "sieć", która odbiera ruch z Internetu. Mam prywatną "aplikację" podsieci, która nie jest dostępna z internetu. Próbuję skonfigurować hosta bastionu, aby terraform mógł dostarczać instancje w prywatnej podsieci aplikacji. Nie udało mi się jeszcze tego uruchomić.
Kiedy wejdę do bastionu, nie mogę SSH od hosta bastionu do żadnych instancji w prywatnej podsieci. Podejrzewam, że istnieje problem z routingiem. Budowałem ten prototyp przez kilka dostępnych przykładów i dokumentację. Wiele przykładów używa nieco innych technik i definicji trasowania terraform za pośrednictwem dostawcy aws.
Czy ktoś może podać idealny lub właściwy sposób zdefiniowania tych trzech podsieci (publiczna "sieć", publiczna "dmz" w/bastion i prywatna "aplikacja"), aby instancje w podsieci internetowej miały dostęp podsieć "app" i czy host bastionu w strefie DMZ może dostarczać instancje w prywatnej podsieci "app"?
wycinek z moich configs są poniżej:
resource "aws_subnet" "dmz" {
vpc_id = "${aws_vpc.vpc-poc.id}"
cidr_block = "${var.cidr_block_dmz}"
}
resource "aws_route_table" "dmz" {
vpc_id = "${aws_vpc.vpc-poc.id}"
route {
cidr_block = "0.0.0.0/0"
gateway_id = "${aws_internet_gateway.gateway.id}"
}
}
resource "aws_route_table_association" "dmz" {
subnet_id = "${aws_subnet.dmz.id}"
route_table_id = "${aws_route_table.dmz.id}"
}
resource "aws_subnet" "web" {
vpc_id = "${aws_vpc.vpc-poc.id}"
cidr_block = "10.200.2.0/24"
}
resource "aws_route_table" "web" {
vpc_id = "${aws_vpc.vpc-poc.id}"
route {
cidr_block = "0.0.0.0/0"
instance_id = "${aws_instance.bastion.id}"
}
}
resource "aws_route_table_association" "web" {
subnet_id = "${aws_subnet.web.id}"
route_table_id = "${aws_route_table.web.id}"
}
resource "aws_subnet" "app" {
vpc_id = "${aws_vpc.vpc-poc.id}"
cidr_block = "10.200.3.0/24"
}
resource "aws_route_table" "app" {
vpc_id = "${aws_vpc.vpc-poc.id}"
route {
cidr_block = "0.0.0.0/0"
instance_id = "${aws_instance.bastion.id}"
}
}
resource "aws_route_table_association" "app" {
subnet_id = "${aws_subnet.app.id}"
route_table_id = "${aws_route_table.app.id}"
}
Jeśli potrzebujesz dodatkowej pomocy, musisz rozwinąć plik TF, aby pokazać również grupy zabezpieczeń/NACL itp., Ponieważ nie uważam, że tutaj problemem są trasy (inne niż brak wychodzących dostęp do sieci w prywatnych podsieciach, chyba że twoja bastionowa skrzynka działa również jako brama NAT) – ydaetskcoR