Laptop jgħaqqad mal-punt tat-tarf Client VPN, u terraform apply għadu jonqos fuq riżorsa tar-rotta. Il-konfigurazzjoni normalment ikollha iktar CIDR tad-destinazzjoni minn subnets assoċjati, u l-blokka tar-rotta tagħżel mira b'indeks. Dan jassumi li ż-żewġ kollezzjonijiet huma paralleli. Mhumiex, u l-falliment jidher fil-ħin tal-applikazzjoni minflok fil-ħin tar-reviżjoni.

Semmi l-oġġett li jonqos

Tliet riżorsi huma involuti u kull wieħed iwieġeb mistoqsija differenti. L-assoċjazzjoni tqiegħed l-interface tan-netwerk tal-punt tat-tarf f'subnet. Ir-rotta tgħid liema prefiss tad-destinazzjoni jingħata lil subnet mira. Ir-regola tal-awtorizzazzjoni tgħid liema utenti jistgħu jaslu għal liema prefiss. Rotta li tindika subnet li qatt ma ġiet assoċjata tonqos ukoll jekk iż-żewġ oġġetti jeżistu, għax il-mira trid tappartjeni għal dan il-punt tat-tarf.

L-ewwel elenka l-assoċjazzjonijiet: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.

Ftakar fir-rotta lokali tal-VPC

L-ewwel assoċjazzjoni żżid rotta lokali għall-VPC kollu, għalhekk kull subnet f'dak il-VPC diġà tista' tinkiseb mingħajr riżorsa tar-rotta. Rotot addizzjonali jeżistu għal VPCs peered, konnessjonijiet Transit Gateway u prefissi on-premises li l-VPC ma jippossjedix. Għalhekk punt tat-tarf bi tliet assoċjazzjonijiet jista' legalment iġorr seba' entrati tad-destinazzjoni.

Għodd id-destinazzjonijiet li jaqgħu barra mill-VPC qabel iżżid rotot. Jekk dak l-għadd huwa inqas mil-lista CIDR, il-lista tiddeskrivi subnets li lanqas biss għandhom bżonn rotta.

Ibdel l-indeks b'mappa

L-iwwikkjar tal-indeks f'operatur modulo jiskot il-errur u jżomm l-iżball tal-immudellar. Destinazzjoni li ma tistax tinkiseb permezz tal-mira magħżula xorta ma ġġorrx traffiku, kemm jekk il-pjan jiġi applikat nadif. Minflok aħżen ir-relazzjoni, u ħalli lil Terraform tiċċekkjaha qabel ma tinħoloq xi ħaġa. Il-blokka hawn taħt hija illustrattiva u tuża l-argumenti tar-rotta tal-punt tat-tarf tal-fornitur.

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."
    }
  }
}

Meta l-mappa tkun ħdejn il-lista tal-assoċjazzjonijiet, iż-żieda ta' destinazzjoni ġġiegħel deċiżjoni dwar liema subnet iġġorrha. Dik hija l-konversazzjoni li l-indeks kien qed jaħbi.

Falliment differenti jipproduċi valuri bla sens minflok żball tal-indeks. Li tgħaddi kostruzzjoni ta' livell baxx fejn hija mistennija interface ta' livell ogħla tħalli l-oqsma li l-API taqra mhux mimlija, u s-CIDR li jirriżulta ma jistax jintuża. Terraform turi l-istess forma meta string tasal fejn hija mistennija oġġett. Iċċekkja l-iskema tal-fornitur għat-tip tal-argument.

Ipprova dan minn klijent

Mexxi terraform validate u pjan kontra stat reali qabel tapplika. Wara, qabbel il-lista tan-netwerks mira tal-punt tat-tarf mal-mappa minflok tafda apply li rnexxa.

It-test ta' aċċettazzjoni huwa klijent konness li jasal għal kull prefiss maħsub.

Ir-regola tal-awtorizzazzjoni hija fejn ħafna setaps jieqfu kmieni. Hija limitata għal CIDR tad-destinazzjoni u grupp, u rotta mingħajr awtorizzazzjoni li taqbel tipproduċi klijent konness li ma jistax jasal għall-prefiss. Iċċekkja ż-żewġ oġġetti għal kull prefiss, għax apply li joħloq ir-rotta u jinsa r-regola jidher komplet. Ittestja b'utent wieħed fil-grupp u wieħed barra minnu.

Meta prefiss wieħed jonqos, qabbel l-entrata tar-rotta tiegħu mar-regola tal-awtorizzazzjoni. Awtorizzazzjoni neqsin u rotta neqsin jidhru simili fil-log tal-klijent u jiġu miġjuba fi riżorsi differenti.

Artikli relatati