UPDATE: State lavorando su questo fuori e su tra le altre cose. Non riesco a ottenere una configurazione funzionante con due sottoreti e un bastione SSH. Posizionamento di bounty per una configurazione completa di file .tf che: * crea due subnet private * crea un bastione * fila un'istanza ec2 su ogni subnet configurata tramite il bastione (eseguire un comando arbitrario della shell tramite il bastione) * ha un Internet gateway configurato * dispone di un gateway NAT per i padroni di casa sulle sottoreti private * ha percorsi e gruppi di protezione configurato di conseguenzaCome effettuare il routing tra due sottoreti in un AWPC VPC con Terraform?
Original post: sto cercando di imparare Terraform e costruire un prototipo. Ho un VPC AWS configurato tramite Terraform. Oltre a una sottorete DMZ, ho una sottorete pubblica "web" che riceve traffico da Internet. Ho una 'sub' sottorete privata che non è accessibile da internet. Sto cercando di configurare un host bastion in modo che terraform possa eseguire il provisioning delle istanze sulla subnet 'app' privata. Non sono ancora riuscito a farlo funzionare.
Quando eseguo l'accesso al bastione, non posso eseguire SSH dall'host del bastione a nessuna istanza all'interno della sottorete privata. Sospetto che ci sia un problema di routing. Ho costruito questo prototipo tramite diversi esempi disponibili e la documentazione. Molti degli esempi utilizzano tecniche leggermente diverse e definizioni di instradamento terraformale tramite il provider aws.
Qualcuno può fornire il modo ideale o appropriato per definire queste tre subnet ("web" pubblico, "dmz" pubblico/un bastione e "app" privata) in modo che le istanze sulla sottorete "Web" possano accedere la sottorete 'app' e che l'host bastion nella DMZ può eseguire il provisioning di istanze nella sottorete 'app' privata?
un elemento di cattura dei miei file di configurazione sono al di sotto:
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}"
}
Se volete più aiuto con questo è necessario espandere il file TF dato per mostrare anche eventuali gruppi di protezione/NACLs ecc come non credo percorsi sono un problema qui (diverso dalla mancanza di uscita accesso web nelle sottoreti private a meno che il tuo bastione non funzioni anche come gateway NAT) – ydaetskcoR