Terraform Client VPN-útvonalak több CIDR-rel, mint alhálózattal
A társítás, az útvonal és az engedélyezés külön objektumok. Minden cél-CIDR-t rendeljen egy társított alhálózathoz ahelyett, hogy egy rövidebb alhálózatlistát indexelne.
Egy laptop csatlakozik a Client VPN végponthoz, és a terraform apply továbbra is meghiúsul egy útvonal-erőforráson. A konfigurációban általában több cél-CIDR van, mint társított alhálózat, és az útvonalblokk indexszel választ célpontot. Ez azt feltételezi, hogy a két gyűjtemény párhuzamos. Nem azok, és a hiba alkalmazáskor jelentkezik, nem felülvizsgálatkor.
Nevezze meg a meghiúsuló objektumot
Három erőforrás vesz részt, és mindegyik más kérdésre válaszol. A társítás a végpont hálózati interfészét egy alhálózatba helyezi. Az útvonal megmondja, melyik cél-előtag kerül egy cél-alhálózathoz. Az engedélyezési szabály megmondja, mely felhasználók melyik előtagot érhetik el. Egy olyan alhálózatra mutató útvonal, amelyet soha nem társítottak, akkor is meghiúsul, ha mindkét objektum létezik, mert a célpontnak ehhez a végponthoz kell tartoznia.
Először sorolja fel a társításokat: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.
Ne feledje a VPC helyi útvonalát
Az első társítás helyi útvonalat ad a teljes VPC-hez, így a VPC minden alhálózata már útvonal-erőforrás nélkül elérhető. További útvonalak léteznek társított VPC-khez, Transit Gateway-csatlakozásokhoz és olyan on-premises előtagokhoz, amelyek nem a VPC tulajdonában vannak. Ezért egy három társítással rendelkező végpont jogosan hordozhat hét célbejegyzést.
Az útvonalak hozzáadása előtt számolja meg a VPC-n kívül eső célokat. Ha ez a szám kisebb a CIDR-listánál, a lista olyan alhálózatokat ír le, amelyeknek egyáltalán nincs szükségük útvonalra.
Cserélje az indexet térképre
Az index modulo-operátorba csomagolása elnémítja a hibát, és megtartja a modellezési hibát. Egy cél, amely a választott célponton keresztül nem érhető el, továbbra sem hordoz forgalmat, bármilyen tisztán is alkalmazódik a terv. Inkább tárolja a kapcsolatot, és hagyja, hogy a Terraform ellenőrizze, mielőtt bármit létrehoz. Az alábbi blokk szemléltető, és a szolgáltató végpont-útvonal argumentumait használja.
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."
}
}
}
Ha a térkép a társításlistánál van, egy cél hozzáadása döntést kényszerít ki arról, melyik alhálózat hordozza. Ez az a beszélgetés, amelyet az index elrejtett.
Egy másik hiba értelmetlen értékeket eredményez indexhiba helyett. Egy alacsony szintű konstrukció átadása ott, ahol magasabb szintű interfészt várnak, üresen hagyja az API által olvasott mezőket, és az eredményül kapott CIDR használhatatlan. A Terraform ugyanezt a formát mutatja, amikor karakterlánc érkezik oda, ahol objektumot várnak. Ellenőrizze a szolgáltató sémáját az argumentum típusához.
Bizonyítsa egy kliensből
Futtassa a terraform validate parancsot és egy tervet valós állapot ellen az alkalmazás előtt. Ezután hasonlítsa össze a végpont célhálózati listáját a térképpel, ahelyett hogy egy sikeres apply-ban bízna.
Az átvételi teszt egy csatlakozott kliens, amely eléri az összes tervezett előtagot.
Az engedélyezési szabály az a pont, ahol sok beállítás korán megáll. Egy cél-CIDR-re és egy csoportra korlátozódik, és egy megfelelő engedélyezés nélküli útvonal olyan csatlakozott klienst hoz létre, amely nem éri el az előtagot. Minden előtaghoz ellenőrizze mindkét objektumot, mert az apply, amely létrehozza az útvonalat és elfelejti a szabályt, teljesnek tűnik. Teszteljen egy csoporton belüli és egy azon kívüli felhasználóval.
Ha egy előtag meghiúsul, hasonlítsa össze az útvonalbejegyzését az engedélyezési szabállyal. A hiányzó engedélyezés és a hiányzó útvonal hasonlónak tűnik a kliensnaplóban, és különböző erőforrásokban javítják.