تيرافورم كود البنية التحتية عملياً: الكود والأوامر التي تهم حقاً

Terraform Infrastructure Code : الأساسيات في مقال واحد — كود حقيقي، مخططات وخطوات ملموسة، مقتطفات من دورة تضم 38 درسًا.

تيرافورم كود البنية التحتية عملياً: الكود والأوامر التي تهم حقاً

لا توجد نظرية لا نهاية لها هنا: نفتح الطرفية ونمارس. إليك أساسيات Terraform Infrastructure Code، مستخرجة مباشرة من دورة كاملة تضم 38 درسًا — مع كود حقيقي يمكنك نسخه ولصقه الآن.

tl;dr
  • مقدمة إلى Terraform و IaC
  • التثبيت والخطوات الأولى
  • لغة HCL و Providers و Variables و Ressources
  • الوحدات (Modules) وتنظيم الكود
  • State Backend البعيد و Workspaces
~$ cat ./parcours.md # Terraform Infrastructure Code — 10 فصول
01
مقدمة إلى Terraform و IaC
→ الفصل 00 – الدرس 1 : لماذا IaC ؟ لماذا Terraform ؟→ الفصل 00 – الدرس 2 : دورة حياة Terraform — init، plan، apply، destroy+ 1 دروس أخرى
02
التثبيت والخطوات الأولى
→ الفصل 01 – الدرس 1 : تثبيت Terraform على Windows و Linux و macOS→ الفصل 01 – الدرس 2 : المشروع الأول — نشر مثيل EC2 على AWS+ 1 دروس أخرى
03
لغة HCL و Providers و Variables و Ressources
→ الفصل 02 – الدرس 1a : صيغة HCL و الكتل الأساسية→ الفصل 02 – الدرس 1b : الأنواع و التعبيرات و المتغيرات المحلية+ 4 دروس أخرى
04
الوحدات و تنظيم الكود
→ الفصل 03 – الدرس 1 : إنشاء و استخدام الوحدات المحلية→ الفصل 03 – الدرس 2 : سجل Terraform و الوحدات العامة و الإصدارات+ 2 دروس أخرى
05
الـ State Backend البعيد و Workspaces
→ الفصل 04 – الدرس 1 : إدارة حالة Terraform — terraform.tfstate→ الفصل 04 – الدرس 2 : Backend بعيد — S3 + DynamoDB و Terraform Cloud+ 1 دروس أخرى
06
CI/CD و الأمان و أفضل الممارسات
→ الفصل 05 – الدرس 1a : خط أنابيب Terraform مع GitHub Actions و OIDC→ الفصل 05 – الدرس 1b : خط أنابيب Terraform مع Jenkins+ 3 دروس أخرى
07
مختبرات و أدلة عملية AWS
→ الفصل 06 – Lab 01 : موقع ثابت S3 + CloudFront (خطوة بخطوة)→ الفصل 06 – Lab 02 : وحدة VPC قابلة لإعادة الاستخدام للبيئات المتعددة+ 2 دروس أخرى
08
Terraform مع Microsoft Azure
→ الفصل 07 – الدرس 1 : أساسيات Azure و مصادقة Terraform→ الفصل 07 – الدرس 2 : المشروع الأول على Azure — VNet و NSG و VM Linux+ 2 دروس أخرى
🏁
المشروع النهائي (+ 2 فصول في الطريق)
→ تعود بمشروع ملموس وقابل للعرض

Chapitre 08 – Leçon 2 : Premier Projet GCP — VPC, Firewall et Compute Engine

NOTEالهدف — نشر بنية تحتية أساسية على GCP: VPC بوضع custom-mode مع شبكة فرعية إقليمية، وقواعد جدار ناري (SSH + HTTP)، ومثيل Compute Engine مع خادم Nginx مُعد عبر startup script.

1. المتطلبات الأساسية

قبل البدء، تأكد من توفر جميع العناصر أدناه. بدون هذه المتطلبات، سيفشل terraform apply بسبب أخطاء في المصادقة أو عدم تفعيل واجهات برمجة التطبيقات.

1.1 الحسابات والأدوات

1.2 بيانات اعتماد GCP المطلوب استخراجها

ستحتاج إلى هذه المعلومات لتهيئة موفر Terraform ومصادقة استدعاءات واجهات برمجة التطبيقات:

العنصركيفية الحصول عليهمثال
Project ID (سلسلة قصيرة)gcloud config get-value projectmon-projet-tf-prod
Project Number (12 رقمًا)gcloud projects describe PROJECT_ID --format="value(projectNumber)"123456789012
Organization ID (اختياري)gcloud organizations list987654321000
Billing Account IDgcloud billing accounts list0X0X0X-0Y0Y0Y-0Z0Z0Z
Service Account emailالتنسيق القياسي لـ SA Terraformtf-sa@PROJECT_ID.iam.gserviceaccount.com
WARNINGأمان حرج — لا تقم أبدًا بإيداع مفتاح JSON الخاص بـ Service Account في Git. في الإنتاج، يُفضل استخدام Workload Identity Federation (OIDC) الذي يلغي الحاجة تمامًا إلى المفاتيح الثابتة. للتطوير المحلي، يكفي gcloud auth application-default login.

1.3 تهيئة مصادقة gcloud + ADC

مرة واحدة فقط على جهازك: سجّل الدخول بحسابك على Google، حدد المشروع، أنشئ Service Account مخصصًا لـ Terraform، وهيّئ Application Default Credentials (ADC) التي يقرأها Terraform تلقائيًا.

bash
# 1. تسجيل دخول المستخدم (يفتح المتصفح)
gcloud auth login

# 2. تحديد المشروع
gcloud config set project mon-projet-tf-prod

# 3. إنشاء Service Account مخصص لـ Terraform
gcloud iam service-accounts create tf-sa \
    --display-name="Terraform Service Account"

# 4. منح الدور (Editor للتمارين، أكثر تقييدًا في الإنتاج)
gcloud projects add-iam-policy-binding mon-projet-tf-prod \
    --member="serviceAccount:tf-sa@mon-projet-tf-prod.iam.gserviceaccount.com" \
    --role="roles/editor"

# 5. ADC للتطوير المحلي (الطريقة الموصى بها لـ Terraform)
gcloud auth application-default login

# 6. (بديل CI/CD) إنشاء مفتاح JSON — حساس، يجب حمايته!
gcloud iam service-accounts keys create key.json \
    --iam-account=tf-sa@mon-projet-tf-prod.iam.gserviceaccount.com
# export GOOGLE_APPLICATION_CREDENTIALS=$PWD/key.json

# 7. التحقق
gcloud auth list
gcloud config list project

1.4 تفعيل واجهات برمجة التطبيقات المطلوبة على GCP

يتطلب GCP تفعيل كل خدمة صراحة قبل استخدامها. لهذا الدرس، Compute Engine ضروري فقط، لكن من الأفضل تفعيل واجهات برمجة التطبيقات الشائعة دفعة واحدة:

bash
gcloud services enable \
    compute.googleapis.com \
    cloudresourcemanager.googleapis.com \
    iam.googleapis.com \
    iap.googleapis.com

# التحقق من واجهات برمجة التطبيقات المفعّلة
gcloud services list --enabled

1.5 أذونات IAM الدنيا

لهذا التمرين، يجب أن يتمكن Service Account Terraform من إنشاء موارد Compute Engine وقراءة المشروع. الدور roles/editor (المستخدم في 1.3) يغطي الحاجة بشكل كافٍ. في الإنتاج، يُفضل استخدام أدوار مستهدفة مثل roles/compute.admin + roles/iam.serviceAccountUser (أقل امتياز).

1.6 مفتاح SSH لـ Compute Engine

للاتصال عبر SSH بالجهاز الافتراضي (خارج IAP)، يدعم GCP وضعين: OS Login (موصى به، مصادقة عبر IAM — مستخدم في هذا الدرس) أو مفاتيح SSH التقليدية عبر بيانات تعريف المشروع. إليك كيفية إنشاء مفتاح مخصص لـ GCP:

bash
# إنشاء زوج مفاتيح RSA بطول 4096 بت مخصص لـ GCP
ssh-keygen -t rsa -b 4096 -f ~/.ssh/gcp_vm -C "votre-user@gcp"

# الخيار أ: OS Login مفعّل على الجهاز الافتراضي (مستخدم في هذا الدرس)
# → المفتاح العام يُدار بواسطة IAM، لا شيء يُرسل إلى البيانات التعريفية

# الخيار ب: الإضافة عبر بيانات تعريف المشروع (مفتاح SSH تقليدي)
gcloud compute project-info add-metadata \
    --metadata-from-file ssh-keys=~/.ssh/gcp_vm.pub

# تقييد أذونات المفتاح الخاص (إلزامي)
chmod 400 ~/.ssh/gcp_vm
WARNINGمفتاح JSON SA ≠ مفتاح SSH — لا تخلط بين مفتاح JSON الخاص بـ Service Account (مصادقة Terraform لواجهات برمجة تطبيقات GCP) ومفتاح SSH (مصادقة المستخدم على الجهاز الافتراضي). الأول حساس للغاية: تسربه يمنح الوصول إلى جميع موارد المشروع. قم دائمًا بتشفيره عند التخزين، وتدويره بانتظام، وإلغائه فور عدم الحاجة إليه.

2. هيكل المشروع

إليك الهيكل النموذجي لهذا الدرس. يُنظم الكود في عدة ملفات .tf حسب مسؤوليتها، بالإضافة إلى سكريبت Bash خارجي يُحقن في الجهاز الافتراضي عبر metadata_startup_script.

bash
# Structure recommandée pour ce projet
premier-projet-gcp/
├── versions.tf        # Configuration Terraform + provider google
├── variables.tf       # Variables d'entrée (project_id, region, zone, ...)
├── main.tf            # VPC + subnet + firewall rules + VM Compute Engine
├── outputs.tf         # IP publique, commande SSH IAP, URL HTTP
├── startup-script.sh  # Script Bash exécuté au boot de la VM (Nginx)
├── terraform.tfvars   # Valeurs spécifiques (project_id, ...) — NON-COMMITTÉ
└── .gitignore         # Exclure .tfstate, .tfvars, .terraform/, key.json

2.1 دور كل ملف

الملفالدوريقرأه Terraform؟
versions.tfكتلة terraform { required_providers } + كتلة provider "google"نعم
variables.tfمتغيرات الإدخال مع type و default و descriptionنعم
main.tfجميع موارد resource ومصادر data على GCPنعم
outputs.tfالمخرجات المعروضة بعد apply (IP، URL، أمر SSH IAP)نعم
startup-script.shسكريبت Bash يُحقن في الجهاز الافتراضي عبر الدالة file()يُقرأ بواسطة file()
terraform.tfvarsالقيم الفعلية للمتغيرات (project_id = "...")يُحمّل تلقائيًا
.gitignoreاستبعاد *.tfstate و *.tfvars و .terraform/ و key.jsonلا (Git)

2.2 كيف يحمّل Terraform الملفات

Chapitre 08 – Leçon 1 : GCP Fondamentaux et Authentification Terraform

NOTEالهدف — فهم التسلسل الهرمي لـ GCP (Organization، Folder، Project)، تثبيت وتهيئة gcloud CLI، إنشاء Service Account، تفعيل واجهات برمجة التطبيقات المطلوبة، وتهيئة موفر google في Terraform.
TIPالمتطلبات المسبقة — إكمال الفصول من 00 إلى 04. توفر حساب GCP (300 دولار مجانًا لمدة 90 يومًا: cloud.google.com/free).

1. التسلسل الهرمي لـ GCP مقابل AWS و Azure

المستوىAWSAzureGCP
المستوى الأعلىOrganizationTenantOrganization
الحاوية الوسيطةOUManagement GroupFolder
حساب الفوترةAccountSubscriptionProject (مرتبط بحساب فوترة)
المنطقةRegionLocationRegion (us-central1, europe-west1, northamerica-northeast1...)
المنطقة الفرعيةAZAvailability ZoneZone (us-central1-a, -b, -c)
هوية الخدمةIAM RoleService Principal / MIService Account
WARNINGالفرق الرئيسي — على GCP، كل مورد ينتمي إلى Project. المشروع هو الوحدة الأساسية للفوترة وIAM والحصص. تتطلب الغالبية العظمى من موارد GCP تحديد project صراحة.

2. تثبيت gcloud CLI

Windows (PowerShell)

تنزيل وتشغيل مثبت Google Cloud SDK الرسمي لنظام Windows. بمجرد تشغيله، يقوم المثبت بتهيئة gcloud وgsutil وbq، ويعرض تهيئة الاتصال بحساب GCP الخاص بك.

bash
(New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe")
& $env:Temp\GoogleCloudSDKInstaller.exe

macOS

تثبيت gcloud عبر Homebrew (مدير الحزم الأكثر استخدامًا على macOS). يقوم cask بتثبيت SDK الكامل وإضافته تلقائيًا إلى PATH.

bash
brew install --cask google-cloud-sdk

Linux (apt)

الإجراء الرسمي لـ Debian/Ubuntu: إضافة مستودع Google APT، استيراد مفتاح GPG الموقّع، ثم تثبيت google-cloud-cli. تتيح هذه الطريقة الحصول على التحديثات التلقائية عبر apt.

bash
echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" \
    | sudo tee /etc/apt/sources.list.d/google-cloud-sdk.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg \
    | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg

sudo apt update && sudo apt install -y google-cloud-cli

التحقق السريع من التثبيت: يعرض الأمر إصدارات SDK وbq (BigQuery) وgsutil (Storage). إذا كان الإخراج فارغًا، فهناك مشكلة في PATH يجب تصحيحها قبل المتابعة.

bash
# التحقق
gcloud --version
# Google Cloud SDK 488.x.x
# bq 2.x.x
# gsutil 5.x.x

3. إنشاء وتهيئة مشروع GCP

الإعداد الكامل لمشروع GCP عبر CLI:

bash
# 1. تسجيل الدخول (يفتح المتصفح)
gcloud auth login

# 2. إنشاء مشروع (يجب أن يكون project_id فريدًا عالميًا)
PROJECT_ID="monprojet-tf-$(date +%s)"
gcloud projects create $PROJECT_ID --name="Mon Projet Terraform"

# 3. ربطه بحساب الفوترة (إلزامي لمعظم الموارد)
BILLING_ID=$(gcloud billing accounts list --format="value(ACCOUNT_ID)" --limit=1)
gcloud billing projects link $PROJECT_ID --billing-account=$BILLING_ID

# 4. تعيين المشروع النشط
gcloud config set project $PROJECT_ID
gcloud config set compute/region us-central1
gcloud config set compute/zone us-central1-a

# 5. التحقق
gcloud config list
# [compute]
# region = us-central1
# zone = us-central1-a
# [core]
# project = monprojet-tf-1714234567

4. تفعيل واجهات برمجة التطبيقات اللازمة

WARNINGيتطلب GCP تفعيل واجهات برمجة التطبيقات صراحة — على عكس AWS حيث تكون الخدمات متاحة فورًا، يجب على GCP تفعيل كل واجهة برمجة تطبيقات قبل الاستخدام. معظم أخطاء Terraform الأولى تكون بسبب واجهة برمجة تطبيقات غير مفعّلة.

تفعيل دفعة واحدة لـ واجهات برمجة التطبيقات الأكثر شيوعًا على GCP اللازمة لـ Compute وStorage وIAM وCloud SQL وCloud Run وSecret Manager. يتيح الأمر الثاني (gcloud services list --enabled) التحقق مما هو مفعّل بالفعل على المشروع.

bash
# Activer les APIs courantes
gcloud services enable \
    compute.googleapis.com           `# Compute Engine` \
    storage.googleapis.com           `# Cloud Storage` \
    cloudresourcemanager.googleapis.com `# Resource Manager` \
    iam.googleapis.com               `# IAM` \
    iamcredentials.googleapis.com    `# IAM Credentials (pour SA tokens)` \
    sqladmin.googleapis.com          `# Cloud SQL Admin` \
    run.googleapis.com               `# Cloud Run` \
    secretmanager.googleapis.com     `# Secret Manager` \
    --project=$PROJECT_ID

# Lister les APIs activées
gcloud services list --enabled --project=$PROJECT_ID

Chapitre 03 – Leçon 4 : Projet Serverless — Lambda, API Gateway et VPC avec Modules

NOTEالهدف — نشر بنية serverless كاملة على AWS باستخدام Terraform: VPC ودالة Lambda وAPI Gateway — كل ذلك منظم في وحدات قابلة لإعادة الاستخدام. يوضح هذا المشروع كيف تتجمع وحدات Terraform لتشكيل بنية تحتية إنتاجية.

1. المتطلبات الأساسية

ينشر هذا المشروع 3 وحدات Terraform تعمل معًا لتنسيق VPC ودالة Lambda وAPI Gateway. قبل تشغيل terraform apply، تحقق من توفر جميع العناصر أدناه — وإلا ستحصل على أخطاء IAM أو مهلات في استدعاء Lambda أو أخطاء 500 على الAPI.

1.1 الحسابات والأدوات

1.2 بيانات اعتماد AWS المطلوب استخراجها

ستحتاج إلى هذه المعلومات الثلاث من وحدة تحكم AWS لمصادقة Terraform:

العنصرمكان العثور عليهمثال
Account ID (12 رقمًا)وحدة تحكم AWS → أعلى اليمين، انقر على اسمك → حسابي123456789012
Access Key IDIAM → Users → مستخدمك → Security credentials → Create access keyAKIAIOSFODNN7EXAMPLE
Secret Access Keyيُعرض مرة واحدة فقط عند الإنشاء (وإلا أعد إنشاء مفتاح جديد)wJalrXUt...EXAMPLEKEY
WARNINGأمان حرج — لا تقم أبدًا بإيداع هذه المفاتيح في Git. قم دائمًا بتهيئتها عبر aws configure (مخزنة في ~/.aws/credentials) أو متغيرات البيئة. أضف *.tfvars و*.tfstate* و.terraform/ وdist/ إلى .gitignore.

1.3 تهيئة مصادقة AWS CLI

مرة واحدة فقط على جهازك: نفّذ aws configure والصق مفاتيحك. يُنشأ الملف ~/.aws/credentials، وسيقرأه Terraform تلقائيًا (لا يحتاج موفر AWS وموفر archive إلى أي رمز مميز محدد).

bash
aws configure
# AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
# AWS Secret Access Key [None]: wJalrXUt...EXAMPLEKEY
# Default region name [None]: ca-central-1
# Default output format [None]: json

# التحقق من أنه يعمل
aws sts get-caller-identity
# {
#   "UserId": "AIDA...EXAMPLE",
#   "Account": "123456789012",        ← معرّف حسابك
#   "Arn": "arn:aws:iam::123456789012:user/votre-user"
# }

1.4 أذونات IAM الدنيا

يجب أن يتمكن المستخدم (أو الدور) المستخدم من إنشاء Lambda وAPI Gateway وIAM (أدوار التنفيذ) وVPC وسجلات CloudWatch. لهذا التمرين، اربط السياسات المُدارة التالية بالمستخدم IAM:

السياسة المُدارة من AWSالسبب
AWSLambda_FullAccessإنشاء/تعديل دالة Lambda وaws_lambda_permission
AmazonAPIGatewayAdministratorإنشاء REST API والطرق والتكاملات والنشر
IAMFullAccessإنشاء دور تنفيذ Lambda وربط السياسات به
AmazonVPCFullAccessإنشاء VPC والشبكات الفرعية ومجموعة الأمان لوحدة vpc
CloudWatchLogsFullAccessإنشاء aws_cloudwatch_log_group للـ Lambda
TIPفي الإنتاج — سيتم تقييد هذه الأذونات وفق مبدأ أقل امتياز (انظر الفصل 05). لحساب تعليمي، يكفي أيضًا PowerUserAccess + IAMFullAccess.

1.5 كود مصدر Lambda

تقوم الوحدة data "archive_file" (المستخدمة في main.tf الجذري) بضغط كود Python الخاص بك تلقائيًا في كل plan. يجب إنشاء مجلد المصدر قبل أول terraform plan، وإلا سيفشل Terraform مع رسالة « source_dir does not exist »:

bash
# Créer la structure attendue par data "archive_file"
mkdir -p src/lambda
touch src/lambda/index.py        # Le contenu sera vu en section 8

# Pas de SSH/.pem nécessaire ici — la Lambda s'invoque via API Gateway, pas en SSH
NOTEالفرق مع EC2 — على عكس مشروع EC2 في الفصل 01، لا يتطلب هذا المختبر أي زوج مفاتيح SSH. Lambda خدمة مُدارة: ننشر الكود، وتتولى AWS الخادم.

2. هيكل المشروع

إليك الهيكل الكامل للمشروع، مصمم للنمطية. يلعب main.tf الجذري دور المنسق الرئيسي: ينشئ الوحدات الثلاث ويربط مخرجاتها/مدخلاتها. كل وحدة في modules/ هي مكتفية ذاتيًا (لها variables.tf وoutputs.tf الخاصة بها) ويمكن إعادة استخدامها في مشروع آخر.

bash
# Structure complète du projet serverless
project-serverless/
├── providers.tf               # Versions Terraform + provider AWS + archive
├── variables.tf               # Variables globales (project_name, environment, region)
├── main.tf                    # Orchestration : appels module.vpc, module.lambda, module.api_gateway
├── outputs.tf                 # Outputs racines (api_url, lambda_name, lambda_arn)
├── terraform.tfvars           # Valeurs concrètes (NON-COMMITTÉ)
├── .gitignore                 # *.tfstate, *.tfvars, .terraform/, dist/
├── README.md
│
├── src/
│   └── lambda/
│       └── index.py           # Code Python de la Lambda
│
├── dist/                      # ZIP généré par data "archive_file" (NON-COMMITTÉ)
│   └── lambda.zip
│
├── environments/              # Valeurs spécifiques par environnement
│   ├── dev.tfvars
│   └── prod.tfvars
│
└── modules/
    ├── vpc/                   # Module réseau réutilisable
    │   ├── main.tf            # aws_vpc, aws_subnet, aws_security_group
    │   ├── variables.tf       # prefix, cidr, environment
    │   └── outputs.tf         # vpc_id, private_subnets, lambda_sg_id
    │
    ├── lambda/                # Module fonction Lambda + IAM
    │   ├── main.tf            # aws_lambda_function, aws_cloudwatch_log_group
    │   ├── iam.tf             # Rôle d'exécution + policy attachments
    │   ├── variables.tf       # function_name, runtime, handler, vpc_id...
    │   └── outputs.tf         # function_name, function_arn, invoke_arn
    │
    └── api_gateway/           # Module API REST
        ├── main.tf            # aws_api_gateway_rest_api, methods, deployment
        ├── variables.tf       # api_name, lambda_arn, lambda_name
        └── outputs.tf         # api_id, api_url, stage

2.1 دور كل ملف

الملفالدورالمستوى
providers.tfإصدارات Terraform + الموفرين (aws، archive)الجذر
variables.tfالمتغيرات العامة المشتركة بين جميع الوحداتالجذر
main.tf (الجذر)ينشئ الوحدات وينقل مخرجات إحداها كمدخلات للأخرىالجذر
outputs.tf (الجذر)يعيد عرض مخرجات الوحدات على مستوى المشروع (مثل api_url)الجذر
modules/<m>/main.tfمنطق العمل للوحدة (موارد AWS)الوحدة
modules/<m>/variables.tfالواجهة العامة للوحدة — ما يمكن للمستهلك تهيئتهالوحدة
modules/<m>/outputs.tfالقيم المعروضة من الوحدة (قابلة للاستهلاك من الجذر أو وحدة أخرى)الوحدة
src/lambda/index.pyكود تطبيق Python — يُضغط تلقائيًا بواسطة data "archive_file"التطبيق
environments/*.tfvarsالقيم الفعلية لكل بيئة (تُمرر عبر -var-file)التهيئة

2.2 كيف يحمّل Terraform الملفات — لا يوجد "نقطة دخول"

NOTEالمفهوم الرئيسي — Terraform لا يقرأ main.tf أولاً. بل يدمج تلقائيًا جميع ملفات .tf في المجلد الحالي في مجموعة واحدة. أسماء main.tf وiam.tf وvariables.tf هي اصطلاح وليست إلزامًا تقنيًا. في وحدة lambda/، فصل iam.tf عن main.tf يحسن القراءة — أما Terraform فهو مكافئ تمامًا لملف واحد كبير.
va-plus-loin

يغطي هذا المقال المقتطفات الأكثر فائدة — الدورة الكاملة Terraform Infrastructure Code (10 فصول، 38 درسًا، تمارين مصححة ومشروع نهائي) تأخذك إلى النهاية.

./acceder-au-cours-complet cours gratuit : Maîtriser Claude Code

FAQ

كم من الوقت يستغرق تعلم Terraform Infrastructure Code؟
مع تقدم منظم (10 فصول، 38 درسًا قصيرًا وعمليًا)، يمكن الوصول إلى مستوى تشغيلي في غضون أسابيع قليلة بمعدل 30 إلى 60 دقيقة يوميًا. المهم هو ممارسة كل مفهوم فورًا.
هل هناك متطلبات مسبقة؟
من الأفضل أن تكون مرتاحًا مع أساسيات المجال: هذا المحتوى يتعمق، مع حالات حقيقية.
من أين نبدأ عمليًا؟
أعد إنتاج الأوامر في هذا المقال، ثم تابع الدورة الكاملة Terraform Infrastructure Code: تتسلسل فيها الـ 38 درسًا بالترتيب، مع تمارين ومشروع نهائي.

📬 هل تريد تلقي هذا النوع من الأدلة كل أسبوع؟ اشترك مجانًا — كود حقيقي، بدون كلام فارغ.