MODULE 15 - البنية التحتية ككود (CloudFormation)
نظرة عامة
تقدم هذه الأسبوع الأخير البنية التحتية ككود (IaC) باستخدام AWS CloudFormation. ستتعلم كيفية تعريف بنيتك التحتية في ملفات تكوين قابلة للإصدار وإعادة الإنتاج.
المشروع النهائي
يتضمن هذا الوحدة المشروع النهائي (30%): إنشاء قالب CloudFormation كامل.
يدعم LocalStack CloudFormation!
يقوم LocalStack بمحاكاة CloudFormation (الأساسي). يمكنك اختبار قوالبك محليًا!
أهداف التعلم
- فهم مبادئ البنية التحتية ككود
- كتابة قوالب CloudFormation (YAML)
- نشر وإدارة المكدسات
- تشخيص أخطاء النشر
- تطبيق أفضل ممارسات IaC
محتوى الأسبوع
1. لماذا البنية التحتية ككود؟
┌─────────────────────────────────────────────────────────────┐
│ البنية التحتية ككود │
├─────────────────────────────────────────────────────────────┤
│ │
│ قبل (يدوي) بعد (IaC) │
│ ────────────── ────────── │
│ │
│ • نقرات في الكونسول • ملفات كود │
│ • توثيق قديم • الكود = التوثيق │
│ • "كان يعمل بالأمس..." • قابل لإعادة الإنتاج │
│ • بيئات مختلفة • متطابقة │
│ • صعب التدقيق • التحكم في الإصدار │
│ • تراجع يدوي • تراجع تلقائي │
│ │
│ الفوائد: │
│ ✅ قابلية إعادة الإنتاج ✅ التحكم في الإصدار (Git) │
│ ✅ التناسق ✅ مراجعة الكود │
│ ✅ الأتمتة ✅ تراجع سهل │
│ ✅ توثيق حي ✅ اختبارات ممكنة │
│ │
└─────────────────────────────────────────────────────────────┘
2. CloudFormation - المفاهيم
┌─────────────────────────────────────────────────────────────┐
│ AWS CLOUDFORMATION │
├─────────────────────────────────────────────────────────────┤
│ │
│ TEMPLATE (YAML/JSON) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AWSTemplateFormatVersion: '2010-09-09' │ │
│ │ Description: بنيتي التحتية │ │
│ │ │ │
│ │ Parameters: │ │
│ │ Environment: │ │
│ │ Type: String │ │
│ │ │ │
│ │ Resources: │ │
│ │ MyVPC: │ │
│ │ Type: AWS::EC2::VPC │ │
│ │ Properties: │ │
│ │ CidrBlock: 10.0.0.0/16 │ │
│ │ │ │
│ │ Outputs: │ │
│ │ VPCId: │ │
│ │ Value: !Ref MyVPC │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ STACK │ │
│ │ (مجموعة من الموارد المنشأة) │ │
│ │ │ │
│ │ VPC ─── Subnet ─── Security Group ─── EC2 │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
3. هيكل القالب
AWSTemplateFormatVersion: '2010-09-09'
Description: قالب أساسي لدورة AWS
# معلمات الإدخال
Parameters:
EnvironmentName:
Type: String
Default: dev
AllowedValues:
- dev
- staging
- prod
# الموارد المراد إنشاؤها
Resources:
# VPC
MyVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/16
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName}-vpc
# Subnet Public
PublicSubnet:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref MyVPC
CidrBlock: 10.0.1.0/24
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName}-public-subnet
# المخرجات
Outputs:
VPCId:
Description: معرف VPC المنشأ
Value: !Ref MyVPC
Export:
Name: !Sub ${EnvironmentName}-vpc-id
4. الوظائف الداخلية المفيدة
| الوظيفة | الاستخدام | المثال |
|---|---|---|
!Ref | مرجع لمورد/معلمة | !Ref MyVPC |
!Sub | استبدال المتغيرات | !Sub ${AWS::StackName}-vpc |
!GetAtt | خاصية لمورد | !GetAtt MyEC2.PublicIp |
!Join | دمج القيم | !Join ['-', [a, b, c]] |
!If | شرط | !If [IsProd, m5.large, t3.micro] |
5. مختبر مع LocalStack
# نشر مكدس على LocalStack
awslocal cloudformation create-stack \
--stack-name mon-stack \
--template-body file://template.yaml \
--parameters ParameterKey=EnvironmentName,ParameterValue=dev
# عرض الحالة
awslocal cloudformation describe-stacks \
--stack-name mon-stack
# سرد الموارد المنشأة
awslocal cloudformation list-stack-resources \
--stack-name mon-stack
# حذف المكدس
awslocal cloudformation delete-stack \
--stack-name mon-stack
المشروع النهائي (30%)
الهدف
إنشاء قالب CloudFormation ينشر بنية تحتية ويب بسيطة:
- 1 VPC مع subnet عام
- 1 Security Group (HTTP + SSH)
- 1 Instance EC2 مع user-data لتثبيت خادم ويب
التسليمات
-
قالب CloudFormation (YAML)
- منظم بشكل جيد ومعلق عليه
- معلمات للبيئة
- مخرجات مفيدة
-
التوثيق
- وصف للبنية التحتية
- تعليمات النشر
- اختبارات التحقق
-
العرض
- نشر على LocalStack
- إثبات العمل
- أسئلة/إجابات
جدول التقييم
| المعيار | النقاط |
|---|---|
| قالب صالح وعملي | 10 |
| أفضل الممارسات (المعلمات، المخرجات) | 5 |
| توثيق واضح | 5 |
| اختبارات والتحقق | 5 |
| العرض والأسئلة/الإجابات | 5 |
| المجموع | 30 |
التنقل
- مفاهيم IaC وCloudFormation
- اختبار التحقق - 30 سؤال للتحقق من معرفتك
- مختبر: CloudFormation
🎓 تهانينا!
لقد أكملت دورة خدمات الحوسبة AWS!
المهارات المكتسبة
- ✅ مفاهيم السحابة وAWS
- ✅ EC2 وتخزين EBS
- ✅ شبكات VPC والأمان
- ✅ التوافر العالي والتوسع
- ✅ بدون خادم مع Lambda
- ✅ المراقبة والملاحظة
- ✅ FinOps والتحسين
- ✅ البنية التحتية ككود
الخطوات التالية
- 📚 شهادات AWS (Cloud Practitioner، Solutions Architect)
- 🔧 ممارسة على حساب AWS حقيقي (Free Tier)
- 🚀 مشاريع شخصية
- 💼 خبرة عملية
نتمنى لك التوفيق في مسيرتك السحابية!