Terraform Client VPN-rûtes mei mear CIDR's as subnetten
Assosjaasje, rûte en autorisaasje binne aparte objekten. Koppel elk bestimming-CIDR oan in assosjearre subnet ynstee fan in koartere subnetlist te yndeksearjen.
In laptop ferbynt mei it Client VPN-einpunt, en terraform apply mislearret noch altyd op in rûteboarne. De konfiguraasje hat meastentiids mear bestimming-CIDR's as assosjearre subnetten, en it rûteblok kiest in doel mei in yndeks. Dat giet derfan út dat de beide kolleksjes parallel binne. Se binne it net, en de flater komt by apply-tiid nei foaren ynstee fan by de resinsje.
Beneam it objekt dat mislearret
Trije boarnen binne belutsen en elk beantwurdet in oare fraach. De assosjaasje pleatst de netwurkynterface fan it einpunt yn in subnet. De rûte seit hokker bestimmingsprefiks oan in doelsubnet levere wurdt. De autorisaasjeregel seit hokker brûkers hokker prefiks berikke meie. In rûte dy't nei in subnet wiist dat nea assosjearre is, mislearret sels as beide objekten bestean, om't it doel by dit einpunt hearre moat.
List de assosjaasjes earst op: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.
Unthâld de lokale rûte fan 'e VPC
De earste assosjaasje foeget in lokale rûte ta foar de hiele VPC, dus elk subnet yn dy VPC is al berikber sûnder in rûteboarne. Ekstra rûtes besteane foar pearde VPC's, Transit Gateway-oanhechtsels en on-premises prefiksen dy't de VPC net besit. Dêrom kin in einpunt mei trije assosjaasjes legitimaal sân bestimmingsynfieringen drage.
Tel de bestimmingen bûten de VPC foardat jo rûtes tafoegje. As dat oantal lytser is as de CIDR-list, beskriuwt de list subnetten dy't hielendal gjin rûte nedich hawwe.
Ferfange de yndeks troch in kaart
De yndeks yn in modulo-operator wikselje makket de flater stil en behâldt de modellearflater. In bestimming dy't net fia it keazen doel berikber is, draacht noch altyd gjin ferkear, hoe skjin it plan ek tapast wurdt. Bewarje ynstee dêrfan de relaasje, en lit Terraform it kontrolearje foardat der eat oanmakke wurdt. It blok hjirûnder is yllustratyf en brûkt de einpunt-rûte-argumenten fan 'e provider.
variable "client_vpn_destinations" {
description = "Destination CIDR mapped to an associated subnet key"
type = map(string)
}
resource "aws_ec2_client_vpn_route" "this" {
for_each = var.client_vpn_destinations
client_vpn_endpoint_id = aws_ec2_client_vpn_endpoint.this.id
destination_cidr_block = each.key
target_vpc_subnet_id = aws_subnet.private[each.value].id
lifecycle {
precondition {
condition = contains(keys(aws_subnet.private), each.value)
error_message = "Route target must be a subnet key in the associated map."
}
}
}
As de kaart njonken de assosjaasjelist stiet, twingt it tafoegjen fan in bestimming in beslissing oer hokker subnet it draacht. Dat is it petear dat de yndeks ferburch.
In oare flater produsearret ûnsinwearden ynstee fan in yndeksflater. It trochjaan fan in leech-nivo-konstruksje dêr't in hegere-nivo-ynterface ferwachte wurdt, lit de fjilden dy't de API lêst ûnfolle, en de resultearjende CIDR is ûnbrûkber. Terraform lit deselde foarm sjen as in tekenrige dêr't in objekt ferwachte wurdt, oankomt. Kontrolearje it skema fan 'e provider foar it arguminttype.
Bewiis it fan in klant
Fier terraform validate en in plan tsjin echte steat út foardat jo tapasse. Fergelykje dêrnei de doelnetwurklist fan it einpunt mei de kaart ynstee fan te fertrouwen op in slagge apply.
De akseptaasjetest is in ferbûn klant dy't elk bedoeld prefiks berikt.
De autorisaasjeregel is it plak dêr't in protte opsetningen betiid ophâlde. It is beheind ta in bestimming-CIDR en in groep, en in rûte sûnder byhearrende autorisaasje leveret in ferbûn klant op dy't it prefiks net berikke kin. Kontrolearje beide objekten foar elk prefiks, want in apply dy't de rûte oanmakket en de regel ferjit, liket folslein. Test mei ien brûker binnen de groep en ien bûten.
As ien prefiks mislearret, fergelykje dan syn rûte-ynfiering mei de autorisaasjeregel. In ûntbrekkende autorisaasje en in ûntbrekkende rûte lykje opinoar yn it klantlog en wurde yn ferskate boarnen reparearre.