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ọ̀.

Àwọn àpilẹ̀kọ tó jọra