تجهيز مثيلات EC2
اكتبوا إعدادات Terraform لنشر وإدارة الأجهزة الافتراضية Amazon EC2، بما في ذلك إعدادات الشبكة ومجموعات الأمان.
تجهيز مثيلات EC2 درس مجاني في Terraform Infrastructure as Code على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Terraform Infrastructure as Code، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.
مثيلات EC2 باستخدام Terraform
مرحبًا! ستتعلم في هذا الدرس كيفية توفير وإدارة الأجهزة الافتراضية Amazon EC2 باستخدام Terraform.
توفر EC2 (Elastic Compute Cloud) خوادم افتراضية قابلة للتوسع في السحابة. ويعني استخدام البنية الأساسية كتعليمة برمجية (IaC) مع Terraform لـ EC2 أنك تستطيع تعريف خوادمك في صورة تعليمات برمجية، مما يضمن عمليات نشر متسقة وقابلة للتكرار.
تعريف مثيل EC2
المورد الأساسي لمثيل EC2 في Terraform هو aws_instance. ويجب تحديد وسيطتين أساسيتين على الأقل:
ami: صورة Amazon Machine Image، بما تتضمنه من نظام تشغيل وبرامج، لاستخدامها.instance_type: إعداد الأجهزة، مثلt2.microللمثيلات المؤهلة للمستوى المجاني.
إليك شكل كتلة aws_instance الأساسية:
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyWebServer"
}
}إطلاق أول مثيل EC2
لنجمع كل ذلك لإطلاق مثيل EC2 بسيط. يعرّف هذا الإعداد AWS provider ومثيل EC2.
لنشره، احفظه في ملف .tf، ثم شغّل terraform init وterraform plan وterraform apply في الطرفية.
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Amazon Linux 2 AMI for us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyBasicWebServer"
}
}تأمين EC2: مجموعات الأمان
تعمل مجموعات الأمان كجدران حماية افتراضية لمثيلات EC2. فهي تتحكم في حركة مرور الشبكة الواردة (ingress) والصادرة (egress) المسموح لها بالوصول إلى مثيلك أو مغادرته.
من الضروري إعدادها بشكل صحيح لحماية خوادمك من الوصول غير المصرح به، مع السماح بالخدمات اللازمة مثل SSH أو HTTP.
إنشاء مجموعة أمان
تعرّف مجموعة الأمان باستخدام مورد aws_security_group. سنضيف قاعدة ingress للسماح بالوصول عبر SSH، المنفذ 22، من أي مكان (0.0.0.0/0).
ستحتاج إلى تحديد vpc_id موجود لتكون مجموعة الأمان ضمنه.
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
description = "SSH from anywhere"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1" # All protocols
cidr_blocks = ["0.0.0.0/0"]
}
tags = {
Name = "allow_ssh_sg"
}
}إرفاق مجموعة أمان بـ EC2
لنحدّث الآن aws_instance لاستخدام مجموعة الأمان الجديدة هذه. ونشير إلى معرّف مجموعة الأمان باستخدام aws_security_group.allow_ssh.id.
تذكّر استبدال vpc_id في مجموعة الأمان بمعرّف VPC فعلي من حساب AWS لديك حتى يصبح الإعداد قابلًا للتشغيل.
provider "aws" {
region = "us-east-1"
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_traffic_example"
description = "Allow SSH inbound traffic"
vpc_id = "vpc-0123456789abcdef0" # IMPORTANT: Replace with YOUR VPC ID!
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
tags = {
Name = "WebServerWithSSH"
}
}شبكات EC2: VPC والشبكات الفرعية
يعيش كل مثيل EC2 داخل سحابة خاصة افتراضية (VPC) وشبكة فرعية محددة ضمن تلك السحابة. وVPC هي شبكة افتراضية معزولة، بينما الشبكات الفرعية تقسيمات منطقية لـ VPC، مثل الشبكات العامة أو الخاصة.
قد يُطلِق EC2 افتراضيًا المثيل في VPC أو شبكة فرعية افتراضية. وللحصول على تحكم وتنظيم أكبر، غالبًا ما تحدد الشبكة الفرعية التي يجب أن يستخدمها المثيل.
إنشاء شبكة أساسية
للتحكم الكامل في شبكة EC2، لنعرّف VPC وشبكة فرعية عامة بالحد الأدنى. ويتطلب ذلك أيضًا بوابة إنترنت للوصول العام وجدول توجيه لتوجيه حركة المرور.
يضمن هذا الإعداد الكامل قدرة EC2 على التواصل مع الإنترنت.
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Name = "main-vpc-lesson"
}
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true # Instances in this subnet get a public IP
tags = {
Name = "public-subnet-lesson"
}
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = {
Name = "main-gw-lesson"
}
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0" # Traffic to the internet
gateway_id = aws_internet_gateway.gw.id
}
tags = {
Name = "public-rt-lesson"
}
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}EC2 في شبكتك المخصصة
سنجمع الآن كل الأجزاء: VPC مخصصة، وشبكة فرعية، ومجموعة أمان، ومثيل EC2. سيُطلَق EC2 في شبكتنا الفرعية العامة المحددة وسيحصل تلقائيًا على عنوان IP عام.
يمنحك هذا الإعداد الكامل تحكمًا دقيقًا في نشر EC2، ويجعله متاحًا عبر SSH.
provider "aws" {
region = "us-east-1"
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = { Name = "main-vpc-lesson" }
}
resource "aws_subnet" "public" {
vpc_id = aws_vpc.main.id
cidr_block = "10.0.1.0/24"
availability_zone = "us-east-1a"
map_public_ip_on_launch = true
tags = { Name = "public-subnet-lesson" }
}
resource "aws_internet_gateway" "gw" {
vpc_id = aws_vpc.main.id
tags = { Name = "main-gw-lesson" }
}
resource "aws_route_table" "public_rt" {
vpc_id = aws_vpc.main.id
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.gw.id
}
tags = { Name = "public-rt-lesson" }
}
resource "aws_route_table_association" "public_rt_assoc" {
subnet_id = aws_subnet.public.id
route_table_id = aws_route_table.public_rt.id
}
resource "aws_security_group" "allow_ssh" {
name = "allow_ssh_lesson"
description = "Allow SSH inbound traffic"
vpc_id = aws_vpc.main.id
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
egress {
from_port = 0
to_port = 0
protocol = "-1"
cidr_blocks = ["0.0.0.0/0"]
}
}
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e"
instance_type = "t2.micro"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [
aws_security_group.allow_ssh.id
]
associate_public_ip_address = true
tags = {
Name = "FullWebServerLesson"
}
}التحقق من إعدادات EC2
أيّ من الوسائط التالية ضرورية لتعريف مورد aws_instance أساسي في Terraform؟
مراجعة: EC2 باستخدام Terraform
أحسنتم! لقد تعلمتم كيفية إنشاء مثيلات Amazon EC2 باستخدام Terraform.
- عرّفنا مثيلات EC2 باستخدام مورد
aws_instance. - أمّنّاها باستخدام
aws_security_groupللتحكم في حركة مرور الشبكة. - أعددنا شبكة مخصصة أساسية (VPC والشبكة الفرعية وبوابة الإنترنت وجدول التوجيه) لاستضافة EC2.
- أصبح لديكم الآن الأساس اللازم لنشر خوادمكم الافتراضية وإدارتها باعتبارها تعليمات برمجية!
الأسئلة الشائعة
هل درس «تجهيز مثيلات EC2» مجاني؟
نعم — نص درس «تجهيز مثيلات EC2» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Terraform Infrastructure as Code، انتقل إلى CoddyKit PRO. تتضمن دورة Terraform Infrastructure as Code 4 دروس في المجموع.
ماذا ستتعلم في «تجهيز مثيلات EC2»؟
اكتبوا إعدادات Terraform لنشر وإدارة الأجهزة الافتراضية Amazon EC2، بما في ذلك إعدادات الشبكة ومجموعات الأمان. تتمرن على Terraform Infrastructure as Code مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Terraform Infrastructure as Code؟
لا تُشترط خبرة سابقة. Terraform Infrastructure as Code على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «تجهيز مثيلات EC2»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Terraform Infrastructure as Code هذا؟
نعم. كل درس في Terraform Infrastructure as Code يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- إعداد موفّر AWS
- تجهيز مثيلات EC2
- إدارة حاويات S3 وIAM
- إعداد VPC والشبكات