إذا كنت بحاجة إلى إعداد شبكة افتراضية خاصة (VPC) على AWS، فيمكنك القيام بذلك عبر واجهة تحكم إدارة AWS ولكن الأتمتة تجلب المتعة أكثر! في سيناريو DevOps، بناء خدمات AWS عبر أدوات مثل Terraform هو نهج أكثر توسعًا وأتمتة لتوفير موارد السحابة.
في هذا البرنامج التعليمي، ستتعلم كيفية بناء وتشغيل تكوين Terraform لبناء VPC من البداية!
المتطلبات المسبقة
سيكون هذا المنشور برنامجًا تعليميًا خطوة بخطوة. إذا كنت ترغب في متابعة الخطوات، تأكد من وجود ما يلي:
- حساب AWS
- Terraform – سيستخدم هذا البرنامج التعليمي Terraform v0.14.9 يعمل على Ubuntu 18.04.5 LTS، ولكن أي نظام تشغيل يحتوي على Terraform ينبغي أن يعمل.
- A code editor – Even though you can use any text editor to work with Terraform configuration files, you should have one that understands the HCL Terraform language. Try out Visual Studio (VS) Code.
فهم شبكات AWS VPCs
تحتوي خدمة AWS Cloud على العديد من الخدمات المختلفة من الحوسبة والتخزين والشبكات وغيرها. يمكن لكل هذه الخدمات التواصل مع بعضها البعض تمامًا مثل خدمات مركز البيانات الخاص بالموقع. ومع ذلك ، فإن كل خدمة من هذه الخدمات مستقلة عن بعضها البعض ، وليست بالضرورة معزولة عن الخدمات الأخرى. يقوم AWS VPC بتغيير ذلك.
يعد AWS VPC شبكة واحدة تتيح لك تشغيل خدمات AWS داخل شبكة معزولة واحدة. من الناحية التقنية ، يكاد AWS VPC يكون مشابهًا تمامًا لامتلاك مركز بيانات ولكن مع مزايا إضافية مدمجة مثل التوسع القابل للتوسع ، والمرونة ، والتخزين غير المحدود ، وما إلى ذلك.

تقتصر AWS VPC على المنطقة. لا يمكنك أن تمتد VPC واحد عبر المناطق ، مع دعم ما يصل إلى خمسة VPC لكل منطقة.
بناء تكوين Terraform لـ AWS VPC
كفى حديثًا ، دعنا نبدأ في البناء!
1. للبدء ، أنشئ مجلدًا لتخزين ملفات تكوين Terraform الخاصة بك. ستقوم هذه الدروس بإنشاء مجلد يسمى terraform-vpc-demo في دليل المنزل الخاص بك.
2. افتح محرر الكود المفضل لديك وانسخ/الصق التكوين التالي الذي تم إنشاؤه بالفعل لك واحفظ الملف بصيغة main.tf داخل الدليل ~/terraform-vpc-demo. يتم وضع معلومات حول كل مورد يجب إنشاؤه ضمن الملف.
يحتوي ملف main.tf على جميع الموارد التي يجب توفيرها.
يستخدم Terraform عدة أنواع مختلفة من ملفات التكوين. يتم كتابة كل ملف إما بتنسيق نص عادي أو بتنسيق JSON. لديهم تسمية محددة إما بتنسيق .tf أو .tfjson.
تكوين Terraform أدناه:
- ينشئ VPC
- ينشئ بوابة إنترنت ويربطها بـ VPC للسماح لحركة المرور داخل VPC بأن تكون متاحة من قبل العالم الخارجي.
- ينشئ شبكة فرعية عامة وخاصة
الشبكات الفرعية هي شبكات داخل شبكات. تم تصميمها لمساعدة تدفق حركة المرور عبر الشبكة على أن تكون أكثر كفاءة وتوفير “شظايا” أصغر وأكثر إدارة من عناوين IP
- ينشئ جدول توجيه للشبكات الفرعية العامة والخاصة ويقوم بربط الجدول بكل من الشبكات الفرعية
- ينشئ بوابة NAT لتمكين الشبكات الفرعية الخاصة من الوصول إلى الإنترنت دون الحاجة إلى تعيين عنوان IP مسار خارجي لكل مورد.
3. الآن ، أنشئ ملفًا آخر داخل ~/terraform-vpc-demo الدليل ، اسمه vars.tf والصق المحتوى أدناه.
Vars.tf هو ملف متغيرات Terraform يحتوي على جميع المتغيرات التي يشير إليها ملف التكوين.
يمكنك رؤية مراجع المتغيرات في ملف التكوين عن طريق:
var.region
var.main_vpc_cidr
var.public_subnets
var.private_subnets
يمكن تضمين جميع قيم التكوين في ملف تكوين واحد. من أجل الوضوح وتسهيل الأمور على المطورين والمسؤولين ، من المهم تجزئة الأمور.
4. قم بإنشاء ملف إضافي داخل الدليل ~/terraform-vpc-demo، قم بلصق الكود التالي ، وقم بتسميته كـ provider.tf لتعريف مزود AWS. سيقوم البرنامج التعليمي بإنشاء موارد في منطقة us-east-2
.
يعرف ملف المزود مزودين مثل AWS و Oracle أو Azure ، إلخ ، بحيث يمكن لـ Terraform الاتصال بخدمات السحابة الصحيحة.
provider "aws" { region = "us-east-2" }
5. أخيرًا ، أنشئ ملفًا آخر داخل الدليل ~/terraform-vpc-demo ، اسمه terraform.tfvars، وقم بلصق الكود أدناه. يحتوي هذا الملف على القيم التي ستستخدمها Terraform لاستبدال مراجع المتغير داخل ملف التكوين.
الآن ، افتح الطرفية المفضلة لديك (Bash في هذه الحالة) وتحقق من وجود جميع الملفات المطلوبة أدناه في المجلد عن طريق تشغيل أمر tree
.

تشغيل Terraform لإنشاء VPC AWS
الآن بعد أن لديك ملف تكوين Terraform وملفات المتغيرات جاهزة للاستخدام، حان الوقت لبدء Terraform وإنشاء الشبكة الخاصة الظاهرية! لتوفير تكوين Terraform، يستخدم Terraform عادة نهجًا يتألف من ثلاث مراحل terraform init → terraform plan → terraform apply. دعونا نمشي خلال كل مرحلة الآن.
1. افتح نافذة الأوامر وانتقل إلى الدليل ~\terraform-vpc-demo.
2. قم بتشغيل الأمر terraform init
في نفس الدليل. يقوم الأمر terraform init
بتهيئة المكونات الإضافية ومزودي الخدمة اللازمين للعمل مع الموارد.
إذا كانت جميع الأمور على ما يرام، يجب أن ترى الرسالة تمت تهيئة Terraform بنجاح
في الناتج، كما هو موضح أدناه.

3. الآن، قم بتشغيل الأمر terraform plan
. هذا إجراء اختياري، ولكنه إجراء موصى به للتأكد من صحة بنية تكوينك وللحصول على نظرة عامة على الموارد التي سيتم توفيرها في بنيتك التحتية. terraform plan
إذا نجحت، يجب أن ترى رسالة مثل خطة: "X" للإضافة، "Y" للتغيير، أو "Z" للتدمير
في الإخراج للإشارة إلى نجاح الأمر. سترى أيضًا كل مورد AWS ينوي Terraform إنشاءه.

4. بعد ذلك، قل لـ Terraform بالفعل تقديم VPC والموارد الخاصة به باستخدام terraform apply
. عند استدعاء terraform apply
، سيقرأ Terraform التكوين (main.tf) والملفات الأخرى لتجميع تكوين. ثم سيُرسل هذا التكوين إلى AWS كتعليمات لبناء VPC وغيرها من المكونات.

لاحظ الهويات المعرفة في إخراج Terraform. ستحتاج إلى هذه الهويات لربط الموارد التي تم إنشاؤها في القسم التالي.
تم تنفيذ أمر Terraform بنجاح، لنتحول الآن إلى واجهة تحكم إدارة AWS للتحقق من أن VPC والمكونات تم إنشاؤها بنجاح.
التحقق من AWS Terraform VPC
بحلول الآن، يجب أن تكون قد قمت بإنشاء VPC باستخدام Terraform. لنتحقق يدويًا من ذلك من خلال التحقق من وجود VPC في واجهة تحكم إدارة AWS.
1. افتح متصفح الويب المفضل لديك وانتقل إلى واجهة تحكم إدارة AWS وقم بتسجيل الدخول.
2. أثناء التواجد في الواجهة، انقر على شريط البحث في الأعلى، ابحث عن “vpc”، وانقر على عنصر القائمة VPC.

3. بمجرد الوصول إلى صفحة VPC، انقر على Your VPCs. يجب أن ترى VPC الذي تم إنشاؤه بنفس الهوية التي أعادتها Terraform في وقت سابق.

4. منذ أن قام Terraform بإنشاء أكثر من مجرد مورد VPC ولكن جميع الموارد المطلوبة لـ VPC، يجب عليك بعد ذلك العثور على كل مورد في هذه الصفحة أيضًا.




مع إنشاء جميع المكونات بنجاح، باستخدام Terraform، فإن هذا VPC جاهز للتشغيل!
الختام
في هذا البرنامج التعليمي، لقد تعلمت كيفية استخدام Terraform لنشر VPC AWS ومكوناتها باستخدام Terraform.
إن بناء Amazon Virtual Private Cloud بواسطة Terraform يتيح لك إنشاء الموارد بسرعة وسهولة وبشكل متوقع. أنت الآن جاهز لاستخدام هذه المعرفة مع خدمات AWS الأخرى وبناء خدمات قوية فوقها.