Kompyuta mpakato huunganisha kwenye kituo cha mwisho cha Client VPN, na terraform apply bado inashindikana kwenye rasilimali ya njia. Usanidi kwa kawaida huwa na CIDR za lengo nyingi kuliko subneti zilizounganishwa, na kizuizi cha njia huchagua lengo kwa fahirisi. Hiyo inadhani kwamba makusanyo mawili ni sambamba. Hayawi hivyo, na hitilafu huonekana wakati wa utumiaji badala ya wakati wa ukaguzi.

Taja kitu kinachoshindikana

Rasilimali tatu zinahusika na kila moja hujibu swali tofauti. Uhusiano huweka kiolesura cha mtandao cha kituo cha mwisho kwenye subneti. Njia husema ni kiambishi gani cha lengo kinachowasilishwa kwa subneti lengwa. Kanuni ya idhini husema ni watumiaji gani wanaweza kufikia kiambishi gani. Njia inayoelekeza kwenye subneti ambayo haikuunganishwa kamwe inashindikana hata vitu vyote viwili vikiwepo, kwa sababu lengo lazima liwe la kituo hiki cha mwisho.

Kwanza orodhesha uhusiano: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.

Kumbuka njia ya ndani ya VPC

Uhusiano wa kwanza huongeza njia ya ndani kwa VPC nzima, kwa hiyo kila subneti katika VPC hiyo tayari inafikiwa bila rasilimali ya njia. Njia za ziada zipo kwa VPC zilizooanishwa, viungo vya Transit Gateway na viambishi vya on-premises ambavyo VPC haina. Ndiyo sababu kituo cha mwisho chenye uhusiano tatu kinaweza kubeba kihalali maingizo saba ya lengo.

Hesabu malengo yaliyo nje ya VPC kabla ya kuongeza njia. Ikiwa hesabu hiyo ni ndogo kuliko orodha ya CIDR, orodha inaelezea subneti ambazo hazihitaji njia yoyote.

Badilisha fahirisi na ramani

Kufunga fahirisi kwenye opereta ya modulo hunyamazisha hitilafu na huhifadhi hitilafu ya uundaji. Lengo ambalo haliwezi kufikiwa kupitia lengo lililochaguliwa bado halibebi trafiki, bila kujali mpango unatumika kwa usafi kiasi gani. Badala yake hifadhi uhusiano, na uache Terraform iuangalie kabla ya kuunda chochote. Kizuizi kilicho hapa chini ni kielelezo na kinatumia hoja za njia za kituo cha mwisho za mtoa huduma.

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

Ramani inapokuwa kando ya orodha ya uhusiano, kuongeza lengo hulazimisha uamuzi wa subneti ipi itaibeba. Hiyo ndiyo mazungumzo ambayo fahirisi ilificha.

Hitilafu nyingine hutoa thamani zisizo na maana badala ya hitilafu ya fahirisi. Kupitisha muundo wa ngazi ya chini mahali panapotarajiwa kiolesura cha ngazi ya juu huacha sehemu ambazo API husoma zikiwa hazijajazwa, na CIDR inayotokana haitumiki. Terraform huonyesha umbo lilelile wakati mfuatano unapofika mahali panapotarajiwa kitu. Angalia skema ya mtoa huduma kwa aina ya hoja.

Thibitisha kutoka kwa mteja

Kabla ya kutumia endesha terraform validate na mpango dhidi ya hali halisi. Kisha linganisha orodha ya mitandao lengwa ya kituo cha mwisho na ramani badala ya kuamini apply iliyofanikiwa.

Jaribio la kukubalika ni mteja aliyeunganishwa anayefikia kila kiambishi kilichokusudiwa.

Kanuni ya idhini ni mahali ambapo usanidi mwingi huacha mapema. Imewekewa mipaka kwa CIDR ya lengo na kikundi, na njia isiyo na idhini inayolingana hutoa mteja aliyeunganishwa asiyeweza kufikia kiambishi. Angalia vitu vyote viwili kwa kila kiambishi, kwa sababu apply inayounda njia na kusahau kanuni huonekana kamili. Jaribu na mtumiaji mmoja ndani ya kikundi na mmoja nje yake.

Kiambishi kimoja kinaposhindikana, linganisha ingizo lake la njia na kanuni ya idhini. Idhini inayokosekana na njia inayokosekana huonekana sawa kwenye kumbukumbu ya mteja na hurekebishwa katika rasilimali tofauti.

Makala zinazohusiana