Terraform Client VPN මාර්ග: උපජාලාවලට වඩා CIDR සහිතව
සම්බන්ධතාව, මාර්ගය සහ අවසරය වෙන වෙනම වස්තු වේ. කෙටි උපජාලා ලැයිස්තුවක් index කිරීම වෙනුවට සෑම ගමනාන්ත CIDR එකක්ම සම්බන්ධිත උපජාලාවකට map කරන්න.
ලැප්ටොප් පරිගණකයක් Client VPN අන්ත ලක්ෂ්යයට සම්බන්ධ වන අතර, terraform apply තවමත් මාර්ග සම්පත්යක් මත අසාර්ථක වේ. වින්යාසයේ සාමාන්යයෙන් සම්බන්ධිත උපජාලාවලට වඩා ගමනාන්ත CIDR ඇති අතර, මාර්ග කොටස index එකක් සමඟ ඉලක්කයක් තෝරයි. එය උපකල්පනය කරන්නේ එකතු දෙක සමාන්තර බවයි. ඒවා එසේ නොවේ, සහ අසාර්ථකත්වය සමාලෝචනයේදී නොව යෙදවීමේදී දිස්වේ.
අසාර්ථක වන වස්තුව නම් කරන්න
සම්පත් තුනක් සම්බන්ධ වන අතර එක් එකක් වෙනස් ප්රශ්නයකට පිළිතුරු දෙයි. සම්බන්ධතාව අන්ත ලක්ෂ්යයේ ජාල අතුරුමුහුණත උපජාලාවක තබයි. මාර්ගය පවසන්නේ කුමන ගමනාන්ත පෙරනිමියක් ඉලක්ක උපජාලාවකට ලබා දෙන්නේද යන්නයි. අවසර නීතිය පවසන්නේ කුමන පරිශීලකයින්ට කුමන පෙරනිමියට ළඟා විය හැකිද යන්නයි. කිසිදා සම්බන්ධ නොකළ උපජාලාවක් වෙත යොමු වන මාර්ගයක්, වස්තු දෙකම තිබුණද අසාර්ථක වේ, මන්ද ඉලක්කය මෙම අන්ත ලක්ෂ්යයට අයත් විය යුතුය.
පළමුව සම්බන්ධතා ලැයිස්තුගත කරන්න: 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 ලැයිස්තුවට වඩා අඩු නම්, ලැයිස්තුව මාර්ගයක් කිසිසේත් අවශ්ය නොවන උපජාලා විස්තර කරයි.
index එක සිතියමකින් ප්රතිස්ථාපනය කරන්න
index එක modulo ක්රියාකරුවක ඔතා තැබීම දෝෂය නිහඬ කරන අතර ආකෘතිකරණ දෝෂය රඳවා ගනී. තෝරාගත් ඉලක්කය හරහා ළඟා විය නොහැකි ගමනාන්තයක්, සැලැස්ම කෙතරම් පිරිසිදුව යෙදුවත් තවමත් රථවාහන රැගෙන නොයයි. ඒ වෙනුවට සම්බන්ධතාව ගබඩා කර, යමක් සෑදීමට පෙර 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."
}
}
}
සිතියම සම්බන්ධතා ලැයිස්තුව අසල ඇති විට, ගමනාන්තයක් එකතු කිරීම එය කුමන උපජාලාවක් රැගෙන යන්නේද යන්න පිළිබඳ තීරණයක් බල කරයි. එය index එක සඟවා තිබූ සංවාදයයි.
වෙනත් අසාර්ථකත්වයක් index දෝෂයක් වෙනුවට අර්ථ විරහිත අගයන් නිපදවයි. ඉහළ මට්ටමේ අතුරුමුහුණතක් අපේක්ෂා කරන විට පහළ මට්ටමේ ඉදිකිරීමක් ලබා දීම API කියවන ක්ෂේත්ර පිරවීමකින් තොරව තබන අතර, ප්රතිඵලයක් ලෙස ලැබෙන CIDR භාවිතයට නුසුදුසු වේ. වස්තුවක් අපේක්ෂා කරන විට තන්තුවක් පැමිණෙන විට Terraform එම හැඩයම පෙන්වයි. තර්ක වර්ගය සඳහා සැපයුම්කරුගේ ක්රමලේඛය පරීක්ෂා කරන්න.
සේවා ග්රාහකයෙකුගෙන් එය ඔප්පු කරන්න
යෙදවීමට පෙර terraform validate සහ සැබෑ තත්ත්වයට එරෙහි සැලැස්මක් ධාවනය කරන්න. පසුව සාර්ථක apply එකක් විශ්වාස කිරීම වෙනුවට අන්ත ලක්ෂ්යයේ ඉලක්ක ජාල ලැයිස්තුව සිතියම සමඟ සසඳන්න.
පිළිගැනීමේ පරීක්ෂණය යනු අපේක්ෂිත සෑම පෙරනිමියකටම ළඟා වන සම්බන්ධිත ග්රාහකයෙකි.
අවසර නීතිය බොහෝ වින්යාස ඉක්මනින් නතර වන තැනයි. එය ගමනාන්ත CIDR එකකට සහ කණ්ඩායමකට සීමා වේ, සහ ගැළපෙන අවසරයක් නොමැති මාර්ගයක් පෙරනිමියට ළඟා විය නොහැකි සම්බන්ධිත ග්රාහකයෙකු නිපදවයි. සෑම පෙරනිමියකටම වස්තු දෙකම පරීක්ෂා කරන්න, මන්ද මාර්ගය සාදා නීතිය අමතක කරන apply එකක් සම්පූර්ණ ලෙස පෙනේ. කණ්ඩායම තුළ එක් අයෙකු සහ ඉන් පිටත එක් අයෙකු සමඟ පරීක්ෂා කරන්න.
එක් පෙරනිමියක් අසාර්ථක වූ විට, එහි මාර්ග සටහන අවසර නීතිය සමඟ සසඳන්න. නොමැති අවසරය සහ නොමැති මාර්ගය ග්රාහක ලොගයේ සමාන ලෙස පෙනෙන අතර විවිධ සම්පත්වල නිවැරදි කෙරේ.