Awọn ipa-ọna Terraform Client VPN pẹlu CIDR diẹ sii ju subnet lọ
Ìsopọ̀, ipa-ọ̀nà àti àṣẹ jẹ́ ohun ọ̀tọ̀ọ̀tọ̀. Ṣàpèjúwe gbogbo CIDR ibi-afẹ́de sí subnet tí ó so pọ̀ dípò ṣíṣe àtọ́ka àtẹ subnet kúkúrú.
Laptop kan so mọ́ ibi-ìparí Client VPN, terraform apply sì ṣì kùnà lórí orísun ipa-ọ̀nà. Ìṣètò máa ń ní CIDR ibi-afẹ́de púpọ̀ ju subnet tí ó so pọ̀ lọ, blọ́ọ̀kù ipa-ọ̀nà sì yan ibi-afẹ́de pẹ̀lú àtọ́ka. Ìyẹn gbà pé àwọn àkójọ méjèèjì wà ní ìlà kan. Wọn kò rí bẹ́ẹ̀, ìkùnà sì farahàn ní àkókò ìfilọ́lẹ̀ dípò àkókò àyẹ̀wò.
Dárúkọ ohun tí ó kùnà
Orísun mẹ́ta ló kópa, ọ̀kọ̀ọ̀kan sì dáhùn ìbéèrè ọ̀tọ̀ọ̀tọ̀. Ìsopọ̀ gbé ìkànnì nẹ́tíwọ́kì ibi-ìparí sí subnet kan. Ipa-ọ̀nà sọ irú àkọ́kọ́ ibi-afẹ́de tí a fi ń fi sí subnet ibi-afẹ́de. Òfin àṣẹ sọ àwọn olùlò tí wọ́n lè dé àkọ́kọ́ wo. Ipa-ọ̀nà tí ó tọ́ka sí subnet tí a kò so mọ́ rí rárá yóò kùnà bí àwọn ohun méjèèjì bá wà, nítorí ibi-afẹ́de gbọdọ̀ jẹ́ ti ibi-ìparí yìí.
Kọ́kọ́ ṣe àtẹ àwọn ìsopọ̀: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.
Rántí ipa-ọ̀nà àdúgbò VPC
Ìsopọ̀ àkọ́kọ́ fi ipa-ọ̀nà àdúgbò kún fún gbogbo VPC, nítorí náà gbogbo subnet nínú VPC yẹn ti dé ọ̀nà láìsí orísun ipa-ọ̀nà. Àwọn ipa-ọ̀nà àfikún wà fún VPC alábàákẹ́gbẹ́, ìsopọ̀ Transit Gateway àti àkọ́kọ́ on-premises tí VPC kò ní. Ìdí niyẹn tí ibi-ìparí pẹ̀lú ìsopọ̀ mẹ́ta lè gbé àwọn àkọsílẹ̀ ibi-afẹ́de méje lọ́nà tó tọ́.
Ka àwọn ibi-afẹ́de tí ó wà ní ẹ̀yìn VPC kí o tó fi ipa-ọ̀nà kún. Bí iye yẹn bá kéré ju àtẹ CIDR lọ, àtẹ náà ń ṣàpèjúwe àwọn subnet tí kò nílò ipa-ọ̀nà rárá.
Rọ́pò àtọ́ka pẹ̀lú àwòrán ilẹ̀
Yíyí àtọ́ka mọ́ oníṣe modulo ń pa ìṣòro mọ́ ẹnu, ó sì pa àṣìṣe àwòṣe mọ́. Ibi-afẹ́de tí a kò lè dé ọ̀nà rẹ̀ nípasẹ̀ ibi-afẹ́de tí a yàn kò gbé ìrìnnà lọ rárá, bí ètò náà bá ti ní ìmọ́ tó. Dípò bẹ́ẹ̀, tọ́jú ìbáṣepọ̀, kí Terraform lè yẹ̀wò rẹ̀ kí ó tó dá ohunkóhun. Blọ́ọ̀kù tí ó wà nísàlẹ̀ jẹ́ àpẹẹrẹ, ó sì ń lo àwọn àríyànjiyàn ipa-ọ̀nà ibi-ìparí ti olùpèsè.
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."
}
}
}
Nígbà tí àwòrán ilẹ̀ bá wà lẹ́gbẹ̀ẹ́ àtẹ ìsopọ̀, fífi ibi-afẹ́de kún ń fipá mú ìpinnu nípa subnet tí yóò gbé e. Ìyẹn ni ìjíròrò tí àtọ́ka fi pamọ́.
Ìkùnà mìíràn ń mú àwọn iye tí kò ní ìtumọ̀ jáde dípò ìṣòro àtọ́ka. Fífi ìkọ́lé ìpele kéré sí ibi tí a ti ń retí ìkànnì ìpele gíga ń fi àwọn pápá tí API ń kà sílẹ̀ láìkún, CIDR tí ó jáde kò sì lè lò. Terraform ń fi irú ọ̀nà kan náà hàn nígbà tí okun bá dé ibi tí a retí ohun. Ṣàyẹ̀wò àwòṣe olùpèsè fún irú àríyànjiyàn.
Fi ẹ̀rí hàn láti ọ̀dọ̀ alákòóso
Ṣe terraform validate àti ètò lòdì sí ipò gidi kí o tó fi wá. Lẹ́yìn náà, fi àtẹ nẹ́tíwọ́kì ibi-afẹ́de ibi-ìparí wé àwòrán ilẹ̀ dípò gbígbẹ́kẹ̀lé apply tí ó lélẹ̀.
Ìdánwò ìtẹ́wọ́gbà ni alákòóso tí ó so pọ̀ tí ó ń dé gbogbo àkọ́kọ́ tí a pinnu.
Òfin àṣẹ ni ibi tí ọ̀pọ̀ ìṣètò ti dáwọ́ dúró ní kutukutu. Ó ní ìlà sí CIDR ibi-afẹ́de àti ẹgbẹ́ kan, ipa-ọ̀nà tí kò ní àṣẹ tí ó bá a mu ń dá alákòóso tí ó so pọ̀ tí kò lè dé àkọ́kọ́. Ṣàyẹ̀wò àwọn ohun méjèèjì fún gbogbo àkọ́kọ́, nítorí apply tí ó dá ipa-ọ̀nà tí ó gbàgbé òfin dàbí ẹni tí ó pé. Dánwò pẹ̀lú olùlò kan nínú ẹgbẹ́ àti ọ̀kan ní ẹ̀yìn rẹ̀.
Nígbà tí àkọ́kọ́ kan bá kùnà, fi àkọsílẹ̀ ipa-ọ̀nà rẹ̀ wé òfin àṣẹ. Àṣẹ tí ó ṣáku àti ipa-ọ̀nà tí ó ṣáku dàbí ara wọn nínú àkọsílẹ̀ alákòóso, a sì ń tún wọn ṣe ní àwọn orísun ọ̀tọ̀ọ̀tọ̀.