موزع Google Cloud: استخدم أداة Terraform لأتمتة بناء بنية شبكة قياسية على GCP في غضون 10 دقائق
في دائرة التشغيل والصيانة للسحابة العامة ، هناك مقولة شهيرة تعتبر معيارًا:"
إذا قمت بالنقر فوق نفس الزر في وحدة التحكم الخاصة بك أكثر من ثلاث مرات ، يجب عليك رمز ذلك.
”
غالبًا ما يقوم العديد من الأصدقاء الذين اتصلوا للتو بـ Google Cloud (GCP) بتسجيل الدخول بسهولة إلى وحدة التحكم عند مواجهة مشروع تجاري جديد تمامًا ، ويبدأون في النقر على الماوس البشري: إنشاء VPC مخصص ، وتقسيم ثلاث مناطق مختلفة Subnet (شبكة فرعية) ، مع مجموعة من جدار الحماية لعلامات الشبكة ، أخيرًا ، تم تجهيز بوابة NAT داخلية للسماح للأجهزة الافتراضية بالوصول إلى الإنترنت بأمان.
هذه العملية تنزل ، على الأقل نصف ساعة من القذف. الأمر الأكثر إيلامًا هو أنه عندما تريد الشركة أن تكون في بيئة الاختبار ، وبيئة ما قبل الإصدار ، وبيئة الإنتاج ، وحتى مناطق جديدة في الخارج
نسخة مثالية
عندما يكون لديك شبكة متشابهة تمامًا ، يمكنك فقط حمل حفنة من العرق أثناء النظر إلى المستند والصلاة من أجل عدم قراءة قناع IP معين بشكل خاطئ. طالما أن يدك ترتجف في المكان الخطأ ، فإن ما يلي هو البحث الطويل عن الخطأ وحفرة الصيد الكبيرة.
في بيئة DevOps للمصنعين الحديثين ، هناك خدعة قتل نهائية لإنهاء هذا النوع من التشغيل والصيانة الأصلية تمامًا ، والتي تسمى
Terraform
.
يتم تلخيص منطقها الأساسي في أربع كلمات:
البنية التحتية هي الرمز (IaC ، Infrastructure as Code)
. لا تحتاج إلى النقر فوق أي ماوس ، ما عليك سوى كتابة مخطط الشبكة الخاص بك في ملف نصي. سوف يقوم Terraform "بطباعة" بدقة ودفعات لك على GCP في جميع أنحاء العالم في غضون 10 دقائق ، مثل الطابعة. مجموعة من بنية الشبكة القياسية ليست سيئة.
اليوم نرفض أي مفهوم الوعظ ، ونرفض الهراء. تستخدم مباشرة مواصفات الإنتاج للهيكل العابر للحدود للمصنع الكبير كمعيار ، ويأخذك المقبض إلى Terraform لبناء مبنى شاهق في غضون 10 دقائق.
المرحلة الأولى: التفكيك العميق ، "نموذج العالم من منظور الله" لـ IaC
قبل أن تتمكن من كتابة السطر الأول من التعليمات البرمجية ، يجب عليك بناء نموذج العالم المادي في الجزء السفلي من Terraform في عقلك ، وإلا فسوف تكون بالتأكيد في الخلف
. Tf
الملف يعطي هالة.
التفاعل بين Terraform و GCP هو في الأساس عملية حلقة مغلقة "إعلان-> تنفيذ":
طبقات الرسم (ملفات الرسم ،. Tf): رسومات بنية الشبكة التي كتبتها بلغة HCL (لغة تكوين إعلانية سهلة القراءة). تحتاج فقط إلى التصريح "أريد شبكة تسمى prod-vpc" ، بغض النظر عن كيفية جدولة الطبقة السفلية من Google من خلال واجهة برمجة التطبيقات.
موصل (Provider): مترجم GCP رسمي من Terraform. إنه مسؤول عن ترجمة الرسومات التي تكتبها إلى تعليمات RESTful API التي تفهمها Google Cloud الخلفية.
ردود الفعل في العالم الحقيقي (State File, terraform.tfsta
Te): هذا هو "دفتر حساب الذاكرة" من Terraform. سيسجل الموارد الحقيقية الموجودة حاليًا في السحابة وما هو IP في ملف JSON. إنه جوهر Terraform الأساسي لـ "التعديل التدريجي وعدم التداخل".
المرحلة الثانية: عشية القتال الفعلي-فتح مستودع ذخيرة محلي
تأكد من تنزيل Terraform CLI وتثبيته على الكمبيوتر المحلي الخاص بك وتم تكوينه
جي كلاود
أدوات سطر الأوامر.
قم ببناء دليل فارغ على الكمبيوتر المحلي ، واسمه
Gcp-network-automation
. في هذا الكتالوج ، نحتاج إلى إنشاء ثلاث وثائق أساسية تتوافق مع المواصفات المعمارية للمصنع الكبير.
تحظر لوائح المصانع الكبيرة وضع كل شيء في ملف واحد
، يجب علينا فصل وحدات:
Providers. tf: يستخدم لمحاذاة الرمز السري مع سحابة Google ، معلنا عن الموارد التي نستخدمها.
Variables. tf: وحدة التحكم في المتغيرات ، يتم هنا تغيير جميع المناطق ومعرفات المشروع وشظايا شبكة IP بشكل موحد لتحقيق إعادة استخدام مجموعة من التعليمات البرمجية في كل مكان.
Main. tf: مخطط الشبكة الأساسية.
المرحلة الثالثة: التدريبات القتالية الفعلية-الكود اليدوي لبناء شبكة على دفعات
بعد ذلك ، اترك الماوس بكلتا يديك واستعد لبدء حملة الإنترنت السريعة هذه لمدة 10 دقائق في IDE الخاص بك (مثل رمز VS).
1-إعداد الموصلات
Providers. tf
هذه الوثيقة هي المسؤولة عن لحام Terraform بقوة على مشروع GCP الخاص بك.
Terraform {
Required_version = ">= 1.5.0"
Required_providers {
Google = {
Source = "hashicorp/google"
الإصدار = "~> 5.0 "# قفل الإصدار الكبير لمنع الترقيات الرسمية في المستقبل من التسبب في عدم التوافق النحوي
}
}
}
Provider "google" {
Project = var.project_id
Region = var.main_region
}
2-كتابة محطة المتغيرات
Variables. tf
استخرج جميع المعلمات التي قد تتغير. في المستقبل ، تحتاج المنطقة الجديدة فقط إلى تغيير سطر واحد في هذه الوثيقة ، ولا داعي لتحريك المخطط الأساسي.
Variable "project_id" {
Type & n
Bsp؛ = string
Description = "معرف المشروع الخاص بك GCP"
Default = "my-automation-project-2026" # استبدل بمعرف المشروع الحقيقي الخاص بك
}
Variable "main_region" {
Type = string
Description = "منطقة نشر الأعمال الرئيسية"
Default = "asia-east1" # منطقة تايوان ، تأخير الوصول المحلي منخفض
}
Variable "backup_region" {
Type = string
Description = "منطقة الاستعداد للكوارث"
Default = "asia-northeast1" # منطقة طوكيو ، متعددة الجنسيات مزدوجة الحياة عالية المتاحة
}
3-إعداد مخطط للشبكات الأساسية
Main. tf
هذا هو الجزء الأكثر تشددات. نحن هنا لبناء دفعة واحدة:
1 VPC مخصص ، وشبكتين فرعيتين عاديتين ، وجدار حماية أمان داخلي معزول تمامًا ، ومجموعة من بوابات Cloud NAT التي تسمح لأجهزة إنترانت بتنزيل التصحيحات دون أسرار
.
تيرافورم
#1. بناء الجزء الخلفي: شبكة VPC المخصصة
Resource "google_compute_network" "custom_vpc" {
Name = "prod-standard-vpc"
Auto_create_subnetworks = false # مواصفات السلامة على مستوى المصنع الكبير: قم بإيقاف تشغيل الشبكة الذرية الأوتوماتيكية بحزم ، ويجب تقسيم مجال IP للتحكم يدويًا
Routing_mode = "GLOBAL" # افتح التوجيه العالمي ، بحيث يمكن للشبكات الفرعية متعددة الجنسيات الاتصال البيني
}
#2. تقسيم الموقف 1: الشبكة الفرعية للأعمال الرئيسية في تايوان (الواجهة الأمامية والتطبيق)
Resource "google_compute_subnetwork" "subnet_asia_east" {
Name = "subnet-asia-east-prod"
Ip_cidr_range = "10.0.1.0/24" # تقسيم 254 IP متاح على الإنترانت
المنطقة = المتغير.المنطقة_الرئيسية
Network = google_compute_network.custom_vpc.id
Private_ip_google_value = true # حقن الروح: السماح لأجهزة الإنترانت بربط واجهة برمجة تطبيقات Google الرسمية بأمان دون ربط IP العام
}
#3. تقسيم الموقع 2: شبكة طوكيو الفرعية لمواجهة الكوارث (قاعدة البيانات الأساسية والنسخ الاحتياطي)
Resource "google_compute_subnetwork" "subnet_asia_northeast" {
Name = "subnet-asia-tokyo-backup"
Ip_cidr_range = "10.0.2.0/24"
Region = var.backup_region
Network = google_compute_network.custom_vpc.id
Private_ip_google_value = true
}
#4. بوابة أمان اللحام: إنشاء جدار حماية أمان الشبكة الداخلية
Resource "google_compute_firewall" "allow_internal" {
Name = "allow-internal-mesh-traffic"
Network = google_compute_network.custom_vpc.name
Allow {
Protocol = "tcp"
}
Allow {
Protocol = "udp"
}
Allow {
Protocol = "icmp"
}
Source_ranges = ["10.0.0.0/16"] # اسمح فقط للطرق على الأبواب داخل شبكتنا الكبيرة ، ومنع جميع الكشف عن الشبكة العامة تمامًا
Description = "السماح فقط بتبادل الشبكة الأساسية بين أعضاء الشبكة الداخلية VPC"
}
#5-بناء خطوط الأنابيب البحرية: تكوين جهاز التوجيه Cloud Router
Resource "google_compute_router" "nat_router" {
Name = "prod-nat-router"
المنطقة = المتغير.المنطقة_الرئيسية
شبكة = google_compute_network.custom_vpc.id
}
#6. تكوين بوابة Cloud NAT المستضافة بالكامل
Resource "google_compute_router_nat" "nat_gateway" {
Name = "prod-cloud-nat"
Router = google_compute_router.nat_router.name
المنطقة = المتغير.المنطقة_الرئيسية
Nat_ip_allocate_option = "AUTO_ONLY" # تقوم Google تلقائيًا بتعيين IP ثابت مضاد للخارجية
Source_subnetwork_ip_ranges_to_nat = "ALL_SUBNETWORKS_ALL_IP_RANGES"
}
المرحلة الرابعة: لحظة مشاهدة المعجزة-تشغيل خط انسيابي واحد في السحب
تم كتابة الرمز. بعد ذلك ، ننتقل إلى المحطة ، وننفذ "ثلاثية التخليص الجمركي" من Terraform.
الخطوة 1: تجميع القوات (التهيئة)
اكتب تحت جذر المشروع الطرفي:
باش
Terraform init
في هذا الوقت ، سيذهب Terraform تلقائيًا إلى محطة المرآة الرسمية لتنزيل المكون الإضافي Provider المخصص لرسو GCP محليًا ، بحيث يكون لدى الكمبيوتر المحلي القدرة على التحكم في Google Cloud.
الخطوة 2: خصم طاولة الرمل (خطة المعاينة)
هذه هي الخطوة التي لا تقهر من IaC. قبل أن تذهب حقًا إلى السحابة ، قم بتمرين عسكري آمن تمامًا:
باش
Terraform plan
يحدق في تقرير مخرجات المحطة الطرفية ، وسوف تستخدم علامة إضافية خضراء كاملة الشاشة (
) يخبرك بوضوح:
"إذا ضغطت على التأكيد ، فسوف أقوم ببناء 6 منتجات شبكة جديدة تمامًا لك في الخلفية ، 0 تعديل ، 0 إتلاف."
الخطوة 3: القوة النارية الثقيلة مفتوحة بالكامل (نقرة واحدة على السحابة)
بعد التأكد من أن الرسم مثالي ، يتم إصدار أمر الموت النهائي:
باش
Terraform apply -auto-approve
يبدأ شريط التقدم على الشاشة بالتمرير بشكل محموم. يستخدم Terraform ترددًا متزامنًا كثيفًا للغاية في الخلفية ، وفي نفس الوقت يبدأ الاتصال بواجهة برمجة التطبيقات للشبكة الأساسية العالمية من Google.
عادة ما تحتاج فقط
من 15 إلى 30 ثانية
، المحطة النهائية
سوف تظهر مجموعة من النصائح الذهبية:
Apply complete! Resources: 6 added, 0 changed, 0 destroyed.
.
في هذه المرحلة قمت بتسجيل الدخول
وحدة تحكم GCP
بالنظر إلى سوق الشبكة ، فإن الجزء الخلفي المثالي لشبكة المستوى الصناعي مع شبكة فرعية متعددة الجنسيات وبوابات NAT وجدار حماية معزول قد وقف على الشبكة العامة. العملية بأكملها لا تضيع قطرة من البصق ، وسيتم الانتهاء منها في أقل من دقيقة واحدة.
المرحلة الخامسة: تاريخ تجنب الدماء والدموع في تطوير IaC على نطاق واسع على مستوى المؤسسة
هذا الحل الآلي منعش للغاية. ولكن في بيئة إنتاج حقيقية عالية التزامن ومتعددة الفرق على مستوى المؤسسة ، بصفتك المهندس المعماري الرئيسي ، يجب عليك على الفور لحام الفريق بالمواصفات الأساسية التالية:
1. يمنع منعا باتا الاحتفاظ المحلي
Terraform. tfstate
(كارثة تعاون متعدد اللاعبين)
بشكل افتراضي ، سيولد Terraform محليًا بعد تشغيله
Terraform. tfstate
الملف.
حدثت كارثة: إذا قام كل من Zhang Sanhe و Li Si في الفريق بتشغيل قبيلتي terraform على أجهزة الكمبيوتر الخاصة بهما ، لأن دفاتر الحسابات المحلية لشخصين غير متزامنة ، فإن Terraform سيحدد ما يكتبه الطرف الآخر على أنه "غزو غير قانوني" ، وبالتالي سيكون في الخلفية العالمية بشكل محموم. قم بمسح خادم الطرف الآخر وشبكته بزر واحد.
الحل القياسي لـ Dachang: يجب أن تكون مجهزة بـ "Remote Backend". أضف بضعة أسطر من التعليمات البرمجية إلى providers.tf لقفل دفتر حسابات الحالة بالقوة في دلو GCS الخاص بـ Google:
تيرافورم
Terraform {
Backend "gcs" {
Bucket = "My-company-tfstate-bucket" # قفل دفتر الأستاذ في درج آمن في السحابة
Prefix = "terraform/state/network"
}
}
بعد التكوين ، طالما أن Zhang San يقوم بتشغيل الكود ، فسيتم قفل دلو التخزين السحابي تلقائيًا (Lock) ، وسيظل Li Si ثابتًا تمامًا في نفس الوقت ، مما يلغي تمامًا الحوادث المأساوية الناجمة عن تضارب الكود متعدد الفرق.
2. إتقان فن التدمير الذاتي النهائي لـ "تجاوز الفيزياء"
عندما ينتهي المشروع ، أو عندما تكون بيئة التطوير والاختبار خارج العمل يوم الجمعة ، يجب إغلاق الأموال مؤقتًا تمامًا ، لا تذهب إلى وحدة التحكم لحذفها واحدًا تلو الآخر.
توصيات وقف الخسارة الصلبة: مباشرة في المحطة:
يستغرق Basterraform destroy -auto-approve 30 ثانية فقط. سوف يقوم Terraform بمسح منتجات الشبكة الستة الموجودة على الرسومات بشكل نظيف من غرفة الكمبيوتر في Google ، تمامًا مثل الترجيع ، دون ترك أي طريق مسدود ، تمامًا
ضع حداً للفواتير المرتفعة المعطلة في نهاية الشهر بسبب تسرب بوابة معينة.
الخلاصة
باستخدام أدوات Terraform لأتمتة الدُفعات لبناء بنية شبكة GCP ، يكمن جوهر المستوى الصناعي الأساسي في ستة عشر كلمة:
بيان الرسم ، فصل المتغيرات ، قفل السحابة ، التدمير الذاتي بمفتاح واحد
.
لقد تخلصت تمامًا من حالة التشغيل والصيانة الأصلية لوحدة التحكم في نقطة الحظ في الماضي وقلق ضد قناع اللحم البشري. قم بتحويل جميع البنية التحتية إلى رمز نظيف يمكنه التحكم في الإصدار. دع بنية الشبكة تكون قابلة للتكرار إلى أجل غير مسمى مثل البرنامج ، والتراجع بنقرة واحدة ، وهذا هو الموقف الأكثر أصالة وأناقة للتحكم في القرص لمهندسي السحابة الأصليين المعاصرين عندما يذهبون إلى البحر.

