Terraform Client VPN റൂട്ടുകൾ: സബ്നെറ്റുകളേക്കാൾ കൂടുതൽ CIDR
അസോസിയേഷൻ, റൂട്ട്, അധികാരം എന്നിവ വെവ്വേറെ ഒബ്ജക്റ്റുകളാണ്. ചെറിയ സബ്നെറ്റ് പട്ടിക ഇൻഡക്സ് ചെയ്യുന്നതിന് പകരം ഓരോ ലക്ഷ്യ CIDR-ഉം ബന്ധിപ്പിച്ച സബ്നെറ്റിലേക്ക് മാപ്പ് ചെയ്യുക.
ഒരു ലാപ്ടോപ്പ് Client VPN എൻഡ്പോയിന്റിലേക്ക് കണക്ട് ചെയ്യുന്നു, എന്നിട്ടും terraform apply റൂട്ട് റിസോഴ്സിൽ പരാജയപ്പെടുന്നു. കോൺഫിഗറേഷനിൽ സാധാരണയായി ബന്ധിപ്പിച്ച സബ്നെറ്റുകളേക്കാൾ കൂടുതൽ ലക്ഷ്യ CIDR ഉണ്ട്, റൂട്ട് ബ്ലോക്ക് ഇൻഡക്സ് ഉപയോഗിച്ച് ഒരു ടാർഗെറ്റ് തിരഞ്ഞെടുക്കുന്നു. ഇത് രണ്ട് ശേഖരങ്ങളും സമാന്തരമാണെന്ന് അനുമാനിക്കുന്നു. അവ അല്ല, പരിശോധനയിലല്ല, പ്രയോഗ സമയത്താണ് പരാജയം പ്രത്യക്ഷപ്പെടുന്നത്.
പരാജയപ്പെടുന്ന ഒബ്ജക്റ്റിന് പേര് നൽകുക
മൂന്ന് റിസോഴ്സുകൾ ഉൾപ്പെടുന്നു, ഓരോന്നും വ്യത്യസ്ത ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു. അസോസിയേഷൻ എൻഡ്പോയിന്റിന്റെ നെറ്റ്വർക്ക് ഇന്റർഫേസ് ഒരു സബ്നെറ്റിൽ സ്ഥാപിക്കുന്നു. ഏത് ലക്ഷ്യ പ്രിഫിക്സ് ലക്ഷ്യ സബ്നെറ്റിലേക്ക് എത്തിക്കുന്നു എന്ന് റൂട്ട് പറയുന്നു. ഏത് ഉപയോക്താക്കൾക്ക് ഏത് പ്രിഫിക്സിൽ എത്താമെന്ന് അധികാര നിയമം പറയുന്നു. ഒരിക്കലും ബന്ധിപ്പിക്കാത്ത സബ്നെറ്റിലേക്ക് ചൂണ്ടുന്ന റൂട്ട്, രണ്ട് ഒബ്ജക്റ്റുകളും ഉണ്ടായിരുന്നിട്ടും പരാജയപ്പെടുന്നു, കാരണം ടാർഗെറ്റ് ഈ എൻഡ്പോയിന്റിന് ഉള്ളതായിരിക്കണം.
ആദ്യം അസോസിയേഷനുകൾ പട്ടികപ്പെടുത്തുക: aws ec2 describe-client-vpn-target-networks --client-vpn-endpoint-id cvpn-endpoint-0123456789abcdef0.
VPC-യുടെ ലോക്കൽ റൂട്ട് ഓർക്കുക
ആദ്യ അസോസിയേഷൻ മുഴുവൻ VPC-ക്കും ഒരു ലോക്കൽ റൂട്ട് ചേർക്കുന്നു, അതിനാൽ ആ VPC-യിലെ ഓരോ സബ്നെറ്റും റൂട്ട് റിസോഴ്സ് ഇല്ലാതെ തന്നെ എത്താവുന്നതാണ്. പീയർ ചെയ്ത VPC-കൾ, Transit Gateway കണക്ഷനുകൾ, VPC-ക്ക് ഉടമസ്ഥതയില്ലാത്ത on-premises പ്രിഫിക്സുകൾ എന്നിവയ്ക്ക് അധിക റൂട്ടുകൾ ഉണ്ട്. അതുകൊണ്ടാണ് മൂന്ന് അസോസിയേഷനുകളുള്ള ഒരു എൻഡ്പോയിന്റിന് നിയമപരമായി ഏഴ് ലക്ഷ്യ എൻട്രികൾ വഹിക്കാൻ കഴിയുന്നത്.
റൂട്ടുകൾ ചേർക്കുന്നതിന് മുമ്പ് VPC-ക്ക് പുറത്തുള്ള ലക്ഷ്യങ്ങൾ എണ്ണുക. ആ എണ്ണം CIDR പട്ടികയേക്കാൾ കുറവാണെങ്കിൽ, പട്ടിക ഒരു റൂട്ടും ആവശ്യമില്ലാത്ത സബ്നെറ്റുകളെ വിവരിക്കുന്നു.
ഇൻഡക്സ് ഒരു മാപ്പ് കൊണ്ട് മാറ്റുക
ഇൻഡക്സ് മോഡുലോ ഓപ്പറേറ്ററിൽ പൊതിയുന്നത് പിശക് നിശ്ശബ്ദമാക്കുകയും മോഡലിംഗ് പിശക് നിലനിർത്തുകയും ചെയ്യുന്നു. തിരഞ്ഞെടുത്ത ടാർഗെറ്റിലൂടെ എത്താനാകാത്ത ലക്ഷ്യം, പ്ലാൻ എത്ര വൃത്തിയായി പ്രയോഗിച്ചാലും ഇപ്പോഴും ട്രാഫിക് വഹിക്കുന്നില്ല. പകരം ബന്ധം സംഭരിച്ച്, എന്തെങ്കിലും സൃഷ്ടിക്കുന്നതിന് മുമ്പ് Terraform അത് പരിശോധിക്കട്ടെ. താഴെയുള്ള ബ്ലോക്ക് ഉദാഹരണമാണ്, പ്രൊവൈഡറുടെ എൻഡ്പോയിന്റ് റൂട്ട് ആർഗ്യുമെന്റുകൾ ഉപയോഗിക്കുന്നു.
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."
}
}
}
മാപ്പ് അസോസിയേഷൻ പട്ടികയ്ക്ക് അടുത്തായിരിക്കുമ്പോൾ, ഒരു ലക്ഷ്യം ചേർക്കുന്നത് ഏത് സബ്നെറ്റ് അത് വഹിക്കുമെന്ന തീരുമാനം നിർബന്ധമാക്കുന്നു. ഇൻഡക്സ് മറച്ചുവെച്ച സംഭാഷണമാണത്.
മറ്റൊരു പരാജയം ഇൻഡക്സ് പിശകിന് പകരം അർത്ഥശൂന്യമായ മൂല്യങ്ങൾ ഉണ്ടാക്കുന്നു. ഉയർന്ന തലത്തിലുള്ള ഇന്റർഫേസ് പ്രതീക്ഷിക്കുന്നിടത്ത് താഴ്ന്ന തലത്തിലുള്ള ഘടന നൽകുന്നത് API വായിക്കുന്ന ഫീൽഡുകൾ നിറയാതെ വിടുന്നു, ഫലമായ CIDR ഉപയോഗശൂന്യമാകുന്നു. ഒബ്ജക്റ്റ് പ്രതീക്ഷിക്കുന്നിടത്ത് സ്ട്രിംഗ് എത്തുമ്പോൾ Terraform അതേ രൂപം കാണിക്കുന്നു. ആർഗ്യുമെന്റ് തരത്തിനായി പ്രൊവൈഡർ സ്കീമ പരിശോധിക്കുക.
ഒരു ക്ലയന്റിൽ നിന്ന് അത് തെളിയിക്കുക
പ്രയോഗിക്കുന്നതിന് മുമ്പ് terraform validate ഉം യഥാർത്ഥ അവസ്ഥയ്ക്കെതിരായ പ്ലാനും പ്രവർത്തിപ്പിക്കുക. അതിനുശേഷം വിജയകരമായ apply വിശ്വസിക്കുന്നതിന് പകരം എൻഡ്പോയിന്റിന്റെ ലക്ഷ്യ നെറ്റ്വർക്ക് പട്ടിക മാപ്പുമായി താരതമ്യം ചെയ്യുക.
സ്വീകാര്യതാ പരിശോധന ഓരോ ഉദ്ദേശിത പ്രിഫിക്സിലും എത്തുന്ന കണക്ട് ചെയ്ത ക്ലയന്റാണ്.
അധികാര നിയമം പല സെറ്റപ്പുകളും നേരത്തെ നിർത്തുന്ന സ്ഥലമാണ്. ഇത് ഒരു ലക്ഷ്യ CIDR-ലും ഒരു ഗ്രൂപ്പിലും പരിമിതപ്പെടുന്നു, പൊരുത്തമുള്ള അധികാരമില്ലാത്ത റൂട്ട് പ്രിഫിക്സിൽ എത്താനാകാത്ത കണക്ട് ചെയ്ത ക്ലയന്റ് ഉണ്ടാക്കുന്നു. ഓരോ പ്രിഫിക്സിനും രണ്ട് ഒബ്ജക്റ്റുകളും പരിശോധിക്കുക, കാരണം റൂട്ട് സൃഷ്ടിച്ച് നിയമം മറക്കുന്ന apply പൂർണ്ണമായി തോന്നുന്നു. ഗ്രൂപ്പിനുള്ളിലെ ഒരാളും പുറത്തുള്ള ഒരാളും ഉപയോഗിച്ച് പരീക്ഷിക്കുക.
ഒരു പ്രിഫിക്സ് പരാജയപ്പെടുമ്പോൾ, അതിന്റെ റൂട്ട് എൻട്രി അധികാര നിയമവുമായി താരതമ്യം ചെയ്യുക. അധികാരമില്ലായ്മയും റൂട്ടില്ലായ്മയും ക്ലയന്റ് ലോഗിൽ സമാനമായി കാണപ്പെടുന്നു, വ്യത്യസ്ത റിസോഴ്സുകളിൽ പരിഹരിക്കുന്നു.