ಲ್ಯಾಪ್ಟಾಪ್ 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 ಪೂರ್ಣವಾಗಿ ಕಾಣುತ್ತದೆ. ಗುಂಪಿನೊಳಗಿನ ಒಬ್ಬ ಮತ್ತು ಹೊರಗಿನ ಒಬ್ಬ ಬಳಕೆದಾರರೊಂದಿಗೆ ಪರೀಕ್ಷಿಸಿ.

ಒಂದು ಪೂರ್ವಪ್ರತ್ಯಯ ವಿಫಲವಾದಾಗ, ಅದರ ರೂಟ್ ನಮೂದನ್ನು ಅಧಿಕಾರ ನಿಯಮದೊಂದಿಗೆ ಹೋಲಿಸಿ. ಕಾಣೆಯಾದ ಅಧಿಕಾರ ಮತ್ತು ಕಾಣೆಯಾದ ರೂಟ್ ಕ್ಲೈಂಟ್ ಲಾಗ್ನಲ್ಲಿ ಹೋಲುತ್ತವೆ ಮತ್ತು ಬೇರೆ ಬೇರೆ ಸಂಪನ್ಮೂಲಗಳಲ್ಲಿ ಸರಿಪಡಿಸಲಾಗುತ್ತದೆ.

ಸಂಬಂಧಿತ ಲೇಖನಗಳು