Një laptop lidhet me pikën fundore të Client VPN, dhe terraform apply vazhdon të dështojë në një burim rruge. Konfigurimi zakonisht ka më shumë CIDR destinacioni sesa nënrrjeta të shoqëruara, dhe blloku i rrugës zgjedh një objektiv me një indeks. Kjo supozon se dy koleksionet janë paralele. Nuk janë, dhe dështimi shfaqet në kohën e aplikimit dhe jo në rishikim.

Emërtoni objektin që dështon

Tre burime janë të përfshira dhe secili përgjigjet një pyetjeje tjetër. Shoqërimi vendos ndërfaqen e rrjetit të pikës fundore në një nënrrjet. Rruga tregon cili prefiks destinacioni dorëzohet në një nënrrjet objektiv. Rregulli i autorizimit tregon cilët përdorues mund të arrijnë cilin prefiks. Një rrugë që tregon një nënrrjet që nuk është shoqëruar kurrë dështon edhe kur të dy objektet ekzistojnë, sepse objektivi duhet t'i përkasë kësaj pike fundore.

Së pari listoni shoqërimet: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.

Mbani mend rrugën lokale të VPC-së

Shoqërimi i parë shton një rrugë lokale për të gjithë VPC-në, kështu që çdo nënrrjet në atë VPC është tashmë i arritshëm pa një burim rruge. Rrugë shtesë ekzistojnë për VPC-të e lidhura, lidhjet Transit Gateway dhe prefikset on-premises që VPC nuk i zotëron. Kjo është arsyeja pse një pikë fundore me tre shoqërime mund të mbajë ligjërisht shtatë hyrje destinacioni.

Numëroni destinacionet që janë jashtë VPC-së përpara se të shtoni rrugë. Nëse ky numër është më i vogël se lista e CIDR, lista përshkruan nënrrjeta që nuk kanë nevojë fare për rrugë.

Zëvendësoni indeksin me një hartë

Mbështjellja e indeksit në një operator modulo hesht gabimin dhe ruan gabimin e modelimit. Një destinacion që nuk mund të arrihet përmes objektivit të zgjedhur ende nuk mbart trafik, pavarësisht sa pastër aplikohet plani. Në vend të kësaj ruani marrëdhënien, dhe lërini Terraform ta kontrollojë para se të krijohet ndonjë gjë. Blloku më poshtë është ilustrues dhe përdor argumentet e rrugës së pikës fundore të ofruesit.

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

Kur harta qëndron pranë listës së shoqërimeve, shtimi i një destinacioni detyron një vendim se cili nënrrjet e mbart atë. Ky është biseda që indeksi fshihte.

Një dështim tjetër prodhon vlera të pakuptimta në vend të një gabimi indeksi. Kalimi i një konstruksioni të nivelit të ulët atje ku pritet një ndërfaqe e nivelit më të lartë i lë fushat që lexon API-të të paplotësuara, dhe CIDR-i që rezulton është i papërdorshëm. Terraform shfaq të njëjtën formë kur një varg arrin atje ku pritet një objekt. Kontrolloni skemën e ofruesit për llojin e argumentit.

Provoni atë nga një klient

Ekzekutoni terraform validate dhe një plan kundër gjendjes reale përpara aplikimit. Më pas krahasoni listën e rrjeteve objektiv të pikës fundore me hartën në vend që t'i besoni një apply të suksesshme.

Testi i pranimit është një klient i lidhur që arrin çdo prefiks të synuar.

Rregulli i autorizimit është vendi ku shumë konfigurime ndalen herët. Ai është i kufizuar në një CIDR destinacioni dhe një grup, dhe një rrugë pa autorizimin përkatës prodhon një klient të lidhur që nuk mund të arrijë prefiksin. Kontrolloni të dy objektet për çdo prefiks, sepse një apply që krijon rrugën dhe harron rregullin duket i plotë. Testoni me një përdorues brenda grupit dhe një jashtë tij.

Kur një prefiks dështon, krahasoni hyrjen e rrugës së tij me rregullin e autorizimit. Një autorizim që mungon dhe një rrugë që mungon duken të ngjashme në regjistrin e klientit dhe rregullohen në burime të ndryshme.

Artikuj të ngjashëm