अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ ACE परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आप सादे टेराफ़ॉर्म के साथ, सबसे छोटे यथार्थवादी ACE-स्वाद वाले GCP एडमिन सबस्ट्रेट को प्रावधानित कर चुके होंगे — एक कस्टम-मोड VPC जिसमें एक क्षेत्रीय सबनेट, दो फ़ायरवॉल नियम (आंतरिक + IAP SSH की अनुमति दें), सबसे कम विशेषाधिकार वाले IAM के साथ एक सेवा खाता चलाने वाला एक Compute Engine VM, और एक Cloud Logging अलर्ट नीति जो कोटा त्रुटियों पर पेज करती है। यह पहले दिन का IaaS एडमिन लोडआउट है।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply को चरण-दर-चरण चलाएँ।
>= 1.5 या ओपनटोफू >= 1.6।gcloud auth application-default login।your-project-id को अपनी वास्तविक प्रोजेक्ट ID से बदलें।gcloud compute ssh certlabpro-ace-vm --tunnel-through-iap।e2-micro: us-central1 में ~$6.50/माह (यदि योग्य हो तो प्रति खाते में 1 हमेशा-मुफ़्त टियर)।VM चलने के दौरान ~$6.50/माह। जब सक्रिय रूप से उपयोग न कर रहे हों तो VM को रोकें या नष्ट करें — चल रहे VM GCP पर लैब-लागत का #1 आश्चर्य हैं।
Compute Engine, IAM, और Cloud Logging API को सक्षम करें। ACE परीक्षा इस प्रति-संसाधन API सक्षम करें पैटर्न का बार-बार परीक्षण करती है।
terraform {
required_version = ">= 1.5"
required_providers {
google = { source = "hashicorp/google", version = "~> 6.0" }
}
}
provider "google" {
project = "your-project-id" # REPLACE
region = "us-central1"
zone = "us-central1-a"
}
locals {
labels = {
project = "certlabpro-ace"
managed_by = "terraform"
}
}
resource "google_project_service" "compute" {
service = "compute.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "iam" {
service = "iam.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "logging" {
service = "logging.googleapis.com"
disable_on_destroy = false
}
resource "google_project_service" "monitoring" {
service = "monitoring.googleapis.com"
disable_on_destroy = false
}GCP नेटवर्क वैश्विक होते हैं — एक एकल VPC सभी क्षेत्रों में फैला होता है, और सबनेट इससे निकले हुए क्षेत्रीय प्रिमिटिव होते हैं। यह एक आवर्ती ACE परीक्षा-प्रश्न का स्वरूप है: AWS में क्षेत्रीय VPC होते हैं; Azure में क्षेत्रीय VNets होते हैं; GCP में क्षेत्रीय सबनेट के साथ एक वैश्विक VPC होता है।
हम auto_create_subnetworks (कस्टम-मोड VPC, ACE-अनुशंसित डिफ़ॉल्ट) को अक्षम करते हैं और us-central1 में Private Google Access सक्षम करके एक एकल /24 सबनेट बनाते हैं ताकि बाहरी IP के बिना VMs भी GCP API तक पहुंच सकें।
resource "google_compute_network" "main" {
name = "certlabpro-ace-vpc"
auto_create_subnetworks = false
routing_mode = "REGIONAL"
depends_on = [google_project_service.compute]
}
resource "google_compute_subnetwork" "main" {
name = "certlabpro-ace-subnet"
ip_cidr_range = "10.10.1.0/24"
region = "us-central1"
network = google_compute_network.main.id
private_ip_google_access = true
}GCP फ़ायरवॉल नियम VPC-स्कोपेड (प्रति-सबनेट नहीं) होते हैं और इनमें स्पष्ट दिशा होती है: इनग्रेस (डिफ़ॉल्ट) या एग्रेस। डिफ़ॉल्ट इनग्रेस सभी को अस्वीकार करें होता है; डिफ़ॉल्ट एग्रेस सभी को अनुमति दें होता है। ACE परीक्षा इस दिशा + डिफ़ॉल्ट-अस्वीकृति अपरिवर्तनीयता का अथक परीक्षण करती है।
हम जोड़ते हैं:
10.10.1.0/24 सबनेट में VMs के बीच TCP/UDP/ICMP।35.235.240.0/20) से TCP/22 ताकि आप VM को इंटरनेट पर उजागर किए बिना SSH कर सकें।IAP-SSH नियम ACE-अनुशंसित पैटर्न है — इसके लिए VM पर roles/iap.tunnelResourceAccessor की आवश्यकता होती है (स्टेप 4 में बाइंडिंग संभाला गया)।
resource "google_compute_firewall" "allow_internal" {
name = "certlabpro-ace-allow-internal"
network = google_compute_network.main.name
direction = "INGRESS"
source_ranges = ["10.10.1.0/24"]
allow {
protocol = "tcp"
}
allow {
protocol = "udp"
}
allow {
protocol = "icmp"
}
}
resource "google_compute_firewall" "allow_iap_ssh" {
name = "certlabpro-ace-allow-iap-ssh"
network = google_compute_network.main.name
direction = "INGRESS"
source_ranges = ["35.235.240.0/20"] # IAP gateway range
allow {
protocol = "tcp"
ports = ["22"]
}
}Compute Engine VMs एक संलग्न सेवा खाते के साथ चलते हैं — यह AWS EC2 इंस्टेंस प्रोफ़ाइल या Azure VM प्रबंधित पहचान के GCP समकक्ष है। ACE-अनुशंसित पैटर्न: डिफ़ॉल्ट Compute सेवा खाते (अति-विशेषाधिकार प्राप्त) का कभी उपयोग न करें; हमेशा प्रति-कार्यभार सेवा खाता बनाएँ जिसमें केवल वही IAM भूमिकाएँ हों जिनकी कार्यभार को आवश्यकता है।
हम एक सेवा खाता बनाते हैं, इसे roles/logging.logWriter + roles/monitoring.metricWriter (ऑप्स एजेंट को लॉग/मेट्रिक्स भेजने के लिए न्यूनतम) प्रदान करते हैं, और इसे बाहरी IP के बिना एक e2-micro डेबियन VM से जोड़ते हैं। स्टेप 3 से IAP-SSH फ़ायरवॉल नियम आपको सुरंग के माध्यम से इस तक पहुँचने की अनुमति देता है।
resource "google_service_account" "vm" {
account_id = "certlabpro-ace-vm-sa"
display_name = "ACE lab VM service account"
}
resource "google_project_iam_member" "vm_log_writer" {
project = data.google_project.current.project_id
role = "roles/logging.logWriter"
member = "serviceAccount:${google_service_account.vm.email}"
}
resource "google_project_iam_member" "vm_metric_writer" {
project = data.google_project.current.project_id
role = "roles/monitoring.metricWriter"
member = "serviceAccount:${google_service_account.vm.email}"
}
data "google_project" "current" {}
resource "google_compute_instance" "vm" {
name = "certlabpro-ace-vm"
machine_type = "e2-micro"
zone = "us-central1-a"
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
}
}
network_interface {
subnetwork = google_compute_subnetwork.main.id
# No access_config block = no external IP. SSH via IAP only.
}
service_account {
email = google_service_account.vm.email
scopes = ["cloud-platform"] # API scope; IAM does the real gating
}
labels = local.labels
}ACE-अनुशंसित अवलोकनशीलता आकार: एक लॉग-आधारित मेट्रिक क्लाउड लॉगिंग फ़िल्टर के मिलानों की गणना करती है, फिर मेट्रिक एक सीमा पार करने पर एक क्लाउड मॉनिटरिंग अलर्ट नीति सक्रिय होती है। हम इस प्रोजेक्ट में किसी भी GCE VM से severity >= ERROR लॉग लाइनों की निगरानी करते हैं, उन्हें प्रति मिनट गिनते हैं, और 5 मिनट की विंडो में 5 से अधिक होने पर अलर्ट करते हैं।
सूचना चैनल को निहित छोड़ दिया गया है — अलर्ट नीतियों को notification_channels सरणी की आवश्यकता होती है, लेकिन चैनल स्वयं (ईमेल, स्लैक, पेजड्यूटी) आमतौर पर कंसोल में प्रति प्रोजेक्ट एक बार कॉन्फ़िगर किया जाता है। ACE परीक्षा इस लॉग-मेट्रिक → अलर्ट नीति → सूचना चैनल त्रिकोण का मानक अवलोकनशीलता प्रिमिटिव के रूप में परीक्षण करती है।
resource "google_logging_metric" "vm_errors" {
name = "certlabpro_ace_vm_errors"
filter = "resource.type=\"gce_instance\" AND severity >= ERROR"
metric_descriptor {
metric_kind = "DELTA"
value_type = "INT64"
}
depends_on = [google_project_service.logging]
}
resource "google_monitoring_alert_policy" "vm_error_burst" {
display_name = "ACE lab — VM error burst"
combiner = "OR"
conditions {
display_name = "More than 5 ERROR lines per 5 minutes"
condition_threshold {
filter = "metric.type=\"logging.googleapis.com/user/${google_logging_metric.vm_errors.name}\" AND resource.type=\"gce_instance\""
duration = "300s"
comparison = "COMPARISON_GT"
threshold_value = 5
aggregations {
alignment_period = "60s"
per_series_aligner = "ALIGN_DELTA"
}
}
}
# notification_channels = [] # add channels via the console or as a separate TF resource
depends_on = [google_project_service.monitoring]
}terraform destroy सब कुछ हटा देता है। नष्ट होने पर VM की बिलिंग तुरंत बंद हो जाती है (डिस्क भी उसके साथ चली जाती है)। सेवा खाता नष्ट हो जाता है; IAM बाइंडिंग अलग हो जाती हैं। VPC + सबनेट + फ़ायरवॉल साफ़-सुथरे ढंग से नष्ट हो जाते हैं। लॉग-आधारित मेट्रिक + अलर्ट नीति साफ़-सुथरे ढंग से अलग हो जाते हैं। प्रोजेक्ट सेवाएँ सक्षम रहती हैं (चालू रखना मुफ़्त है)।
ACE कई GCP एडमिन सतहों को कवर करता है जिन्हें यह लैब शामिल नहीं कर सकती — Cloud Load Balancing (वैश्विक HTTP(S) LB, क्षेत्रीय आंतरिक LB, नेटवर्क LB), Managed Instance Groups + ऑटोस्केलिंग, Cloud Run, GKE क्लस्टर, Cloud Storage ([[gcp-cdl]] में कवर किया गया), Cloud SQL, Cloud Spanner, Cloud Bigtable, Pub/Sub, Cloud Functions, Cloud Scheduler, Cloud Tasks, Cloud KMS, VPC Peering / Shared VPC ([[gcp-pcne]]), Cloud NAT, Cloud VPN / Interconnect, Cloud DNS, Cloud Armor, IAM कस्टम भूमिकाएँ, Resource Manager पदानुक्रम (फ़ोल्डर + संगठन), Cloud Asset Inventory, Cloud Deployment Manager (टेराफ़ॉर्म के पक्ष में बहिष्कृत)।
हम VPC + GCE + IAM + Logging प्रिमिटिव्स पर टिके रहते हैं क्योंकि वे हर अधिक-उन्नत GCP एडमिन पैटर्न के ऊपर आधार बनाते हैं। MIG GCE इंस्टेंस को स्केल करते हैं; LB MIG को फ्रंट करते हैं; GKE / Cloud Run कंप्यूट के ऊपर चलते हैं; सब कुछ Cloud Logging में लिखता है।
सेवा-दर-सेवा वैचारिक कवरेज के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।