EC2 Örneklerini Hazırlama
Ağ ve güvenlik grubu ayarları dâhil olmak üzere Amazon EC2 sanal makinelerini dağıtıp yönetmek için Terraform yapılandırmaları yazın.
EC2 Örneklerini Hazırlama, CoddyKit'te ücretsiz bir DevOps Bootcamp dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, DevOps Bootcamp öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
Terraform ile EC2 Örnekleri
Hoş geldiniz! Bu derste Terraform kullanarak Amazon EC2 sanal makinelerini oluşturmayı ve yönetmeyi öğreneceksiniz.
EC2 (Elastic Compute Cloud), bulutta ölçeklenebilir sanal sunucular sağlar. EC2 için Terraform ile Kod Olarak Altyapı (IaC) kullanmak, sunucularınızı kodla tanımlayabilmenizi ve tutarlı, tekrarlanabilir dağıtımlar sağlayabilmenizi mümkün kılar.
EC2 Örneği Tanımlama
Terraform'da bir EC2 örneği için temel kaynak aws_instance kaynağıdır. En az iki temel bağımsız değişken belirtmeniz gerekir:
ami: Kullanılacak Amazon Machine Image (işletim sistemi, yazılım).instance_type: Donanım yapılandırması (ör. ücretsiz katmana uygun örnekler içint2.micro).
Temel bir aws_instance bloğu şöyledir:
resource "aws_instance" "web_server" {
ami = "ami-053b04dcd42d5397e" # Example: Amazon Linux 2 in us-east-1
instance_type = "t2.micro"
tags = {
Name = "MyWebServer"
}
}İlk EC2'nizi Başlatın
Basit bir EC2 örneği başlatmak için her şeyi bir araya getirelim. Bu yapılandırma AWS sağlayıcısını ve EC2 örneğini tanımlar.
Dağıtmak için bunu bir .tf dosyası olarak kaydedin, ardından terminalinizde terraform init, terraform plan ve terraform apply komutlarını çalıştırın.
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'nizi Güvence Altına Alın: Güvenlik Grupları
Güvenlik grupları, EC2 örnekleriniz için sanal güvenlik duvarları görevi görür. Örneğinize ulaşmasına veya örneğinizden ayrılmasına izin verilen gelen (ingress) ve giden (egress) ağ trafiğini denetler.
SSH veya HTTP gibi gerekli hizmetlere izin verirken sunucularınızı yetkisiz erişime karşı korumak için bunları doğru yapılandırmak çok önemlidir.
Güvenlik Grubu Oluşturma
Bir güvenlik grubunu aws_security_group kaynağını kullanarak tanımlarsınız. Her yerden (0.0.0.0/0) SSH erişimine (22 numaralı bağlantı noktası) izin vermek için bir ingress kuralı ekleyeceğiz.
Güvenlik grubunun içinde bulunacağı mevcut bir vpc_id belirtmeniz gerekir.
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"
}
}Güvenlik Grubunu EC2'ye Bağlama
Şimdi aws_instance kaynağımızı bu yeni güvenlik grubunu kullanacak şekilde güncelleyelim. Güvenlik grubunun kimliğine aws_security_group.allow_ssh.id kullanarak başvuruyoruz.
Çalıştırılabilir olması için güvenlik grubundaki vpc_id değerini AWS hesabınızdaki gerçek bir VPC kimliğiyle değiştirmeyi unutmayın.
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 Ağı: VPC'ler ve Alt Ağlar
Her EC2 örneği bir Virtual Private Cloud (VPC) içinde ve bu VPC'ye ait belirli bir alt ağda bulunur. VPC yalıtılmış bir sanal ağdır; alt ağlar ise VPC'nizin mantıksal bölümleridir (ör. genel veya özel).
Varsayılan olarak EC2, varsayılan bir VPC/alt ağ içinde başlatılabilir. Daha fazla denetim ve düzen için genellikle örneğinizin hangi alt ağı kullanacağını belirtirsiniz.
Temel Ağ Oluşturma
EC2 ağımızı tamamen denetlemek için en küçük kapsamda bir VPC ve genel bir alt ağ tanımlayalım. Bunun için genel erişim sağlayan bir Internet Gateway ve trafiği yönlendiren bir Route Table da gerekir.
Bu eksiksiz kurulum, EC2'nizin internetle iletişim kurabilmesini sağlar.
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
}Özel Ağınızda EC2
Şimdi tüm parçaları birleştireceğiz: özel bir VPC, alt ağ, güvenlik grubu ve EC2 örneğimiz. EC2, belirlediğimiz genel alt ağda başlatılacak ve otomatik olarak genel bir IP alacaktır.
Bu eksiksiz yapılandırma, EC2 dağıtımınız üzerinde ayrıntılı denetim sağlar ve SSH erişimine olanak tanır.
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 Yapılandırma Denetimi
Terraform'da temel bir aws_instance kaynağı tanımlamak için aşağıdaki bağımsız değişkenlerden hangileri gereklidir?
Özet: Terraform ile EC2
Harika iş çıkardınız! Terraform kullanarak Amazon EC2 örneklerinin nasıl sağlanacağını öğrendiniz.
- EC2 örneklerini
aws_instancekaynağını kullanarak tanımladık. - Ağ trafiğini denetleyerek bunları
aws_security_groupile güvenli hâle getirdik. - EC2 örneklerimizi barındırmak için temel bir özel ağ (VPC, alt ağ, internet ağ geçidi, yönlendirme tablosu) oluşturduk.
- Artık sanal sunucularınızı kod olarak dağıtıp yönetmek için gereken temele sahipsiniz!
Sıkça Sorulan Sorular
“EC2 Örneklerini Hazırlama” dersi ücretsiz mi?
Evet — “EC2 Örneklerini Hazırlama” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve DevOps Bootcamp kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. DevOps Bootcamp kursu toplamda 4 dersten oluşur.
“EC2 Örneklerini Hazırlama” dersinde ne öğreneceğim?
Ağ ve güvenlik grubu ayarları dâhil olmak üzere Amazon EC2 sanal makinelerini dağıtıp yönetmek için Terraform yapılandırmaları yazın. DevOps Bootcamp ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
DevOps Bootcamp öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te DevOps Bootcamp, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“EC2 Örneklerini Hazırlama” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu DevOps Bootcamp dersinde kod yazıp çalıştırabilir miyim?
Evet. Her DevOps Bootcamp dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- AWS Sağlayıcı Yapılandırması
- EC2 Örneklerini Hazırlama
- S3 Paketlerini ve IAM'i Yönetme
- VPC ve Ağ Yapılandırması