Bulut altyapısını kod olarak tanımlamak, modern sistem yönetiminin temelini oluşturur. Geliştiriciler artık sadece uygulama kodunu değil, altyapı bileşenlerini de versiyon kontrol sistemlerinde yönetebiliyor. Terraform gibi araçlar sayesinde, AWS EC2 örneği oluşturmak ve üzerinde Python sanal ortamı kurmak tek bir işlemle gerçekleştirilebiliyor. Bu yaklaşım, hem hata riskini azaltıyor hem de farklı ortamlarda tutarlılık sağlıyor.
Terraform ile EC2 Örneğini Tanımlama
Terraform, bulut kaynaklarını açıklayıcı bir dille tanımlamanızı sağlayan bir altyapı oluşturma aracıdır. HCL (HashiCorp Configuration Language) adı verilen yapılandırma diliyle yazılan dosyalar, sisteminizin istenen durumunu kod olarak ifade eder. Bu dosyalar, uygulandığında AWS ile senkronize edilir ve gerçek ortamdaki kaynakların tanımlanan durumla eşleşmesini garanti eder.
Öncelikle, Terraform’un en az 1.5.0 sürümünü sisteminize yükleyin. Kurulum dosyası, işletim sisteminin yerleşik komutlarını kullanarak doğrudan belleğe yüklenir ve AWS API uç noktalarına HTTP istekleri gönderir. Kurulumun doğru şekilde çalıştığını doğrulamak için aşağıdaki komutu çalıştırın:
terraform versionTerraform’un çalıştırılması için gerekli olan main.tf adlı yapılandırma dosyasını oluşturun. Bu dosya, AWS sağlayıcısını tanımlamanın yanı sıra, bir EC2 örneğinin temel yapılandırmasını içerir. Örnek olarak aşağıdaki konfigürasyon kullanılabilir:
terraform {
required_version = ">= 1.5.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.12"
}
}
}
provider "aws" {
region = "us-east-1"
}
resource "aws_instance" "python_environment" {
ami = "ami-0c02fb55956c7d316" # Amazon Linux 2
instance_type = "t3.micro"
tags = {
Name = "python-ec2-instance"
}
}Dosya oluşturulduktan sonra, terraform init komutunu çalıştırarak Terraform’un AWS sağlayıcısını indirmesini ve yerel olarak yapılandırmasını sağlayın. Bu işlem, .terraform dizinini oluşturur ve .terraform.lock.hcl dosyasına indirilen bileşenlerin checksumlarını kaydeder. Bu sayede, gelecekteki çalıştırmalarda aynı bileşen versiyonları kullanılır, tutarlılık sağlanır.
terraform initDaha sonra, terraform plan komutuyla yapılandırma dosyasının doğruluğunu kontrol edin. Bu komut, AWS ile yapılacak değişiklikleri simüle eder ve hata durumunda uyarır. Son olarak, terraform apply komutuyla değişiklikleri uygulayın. Terraform, önce kaynakların bağımlılıklarını analiz eden bir yönlü döngüsel grafik oluşturur. Örneğin, bir VPC’nin EC2 örneğinden önce oluşturulması gerekiyorsa, Terraform bu sırayı otomatik olarak takip eder. Uygulama tamamlandığında, AWS size bir örnek ID’si döndürür ve bu ID, terraform.tfstate dosyasına kaydedilir.
terraform apply -auto-approveÖnemli Not: Terraform’un açıklayıcı modeli, konsolda görüntülenen EC2 örneğinin yapılandırma dosyasındaki tanımlamayla birebir eşleşmesini garanti eder. Bu sayede, sisteminizin durumu her zaman kontrol altında tutulabilir.
AWS Sağlayıcısını Yetkilendirme
AWS Terraform sağlayıcısı, AWS SDK’nın yetkilendirme zincirini takip eder. Bu zincir, ortam değişkenleri, paylaşılan kimlik bilgileri dosyası ve EC2 örnek profilleri gibi çeşitli kimlik doğrulama yöntemlerini destekler. En yaygın yöntem, AWS erişim anahtarlarını ortam değişkenlerine ayarlamaktır:
export AWS_ACCESS_KEY_ID=AKIAEXAMPLE
export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENGbPxRfiCYEXAMPLEKEY
env | grep AWS_Alternatif olarak, AWS CLI’nın da kullandığı ~/.aws/credentials dosyasına kimlik bilgileri eklenebilir. Terraform, bu dosyayı AWS CLI ile aynı şekilde okuyarak tüm araçlar arasında tutarlılık sağlar:
cat ~/.aws/credentialsYetkilendirme başarısız olduğunda, Terraform aşağıdaki gibi bir hata mesajı verir:
Error: Failed to configure provider "aws": No valid credential sources found for AWS Provider.Güvenliği artırmak için, IAM rolüyle yetkilendirme tercih edilebilir. Bu yöntemde, kimlik bilgileri statik olarak saklanmaz ve AWS tarafından otomatik olarak yenilenir.
EC2 Örneğinde Python Sanal Ortamını Kurma
Python projeleri genellikle farklı bağımlılıkları gerektirir. Bu nedenle, her proje için ayrı bir sanal ortam oluşturmak, bağımlılık çatışmalarını önlemenin en etkili yoludur. Amazon Linux 2, varsayılan olarak Python 3.7 ile birlikte gelir, ancak python3-venv paketi yüklü değildir. Bu paketi kurmak için aşağıdaki komutu çalıştırın:
sudo yum install -y python3 python3-venvKurulum tamamlandıktan sonra, sanal ortamı oluşturmak için venv modülünü kullanın. Bu komut, Python ikilisini ve standart kitaplık dosyalarının sembolik bağlantılarını içeren yeni bir dizin oluşturur:
python3 -m venv /home/ec2-user/pyenvSanal ortamı etkinleştirmek için aşağıdaki komutu kullanın:
source /home/ec2-user/pyenv/bin/activateEtkinleştirildikten sonra, Python paketlerini pip komutuyla kurabilirsiniz. Örneğin, Flask kurulumunu gerçekleştirin:
pip install flaskSanal ortamdan çıkmak için deactivate komutunu çalıştırın:
deactivateKullanıcı Verileri ile Kurulumu Otomatikleştirme
Terraform’un user_data özelliği, EC2 örneği oluşturulduğunda çalıştırılacak komutları tanımlamanızı sağlar. Bu özellik, Python ve sanal ortam kurulumunu otomatikleştirmek için ideal bir yöntemdir. Örneğin, aşağıdaki betik kullanılarak kurulum gerçekleştirilebilir:
resource "aws_instance" "python_environment" {
ami = "ami-0c02fb55956c7d316"
instance_type = "t3.micro"
user_data = <<-EOF
#!/bin/bash
sudo yum install -y python3 python3-venv
python3 -m venv /home/ec2-user/pyenv
source /home/ec2-user/pyenv/bin/activate
pip install flask
EOF
tags = {
Name = "python-ec2-instance"
}
}Bu şekilde, EC2 örneği ilk başlatıldığında otomatik olarak gerekli yazılımlar kurulur ve sanal ortam hazırlanır. Bu yaklaşım, hem zaman tasarrufu sağlar hem de insan hatasını en aza indirir.
Sonuç ve Gelecek Adımlar
Terraform ile AWS EC2 örneği oluşturmak ve üzerinde Python sanal ortamını yapılandırmak, altyapı yönetimini basitleştiren ve tekrarlanabilir bir süreç haline getirir. Bu yöntem, hem geliştiricilerin hem de sistem yöneticilerinin iş yükünü azaltırken, sistemlerin güvenilirliğini artırır. Gelecekte, bu yaklaşım, CI/CD borularına entegre edilerek otomatikleştirilebilir ve daha karmaşık altyapı senaryolarına genişletilebilir. Böylece, bulut tabanlı uygulamaların dağıtımı ve yönetimi daha verimli hale getirilebilir.
Yapay zeka özeti
Terraform kullanarak AWS EC2 örneği oluşturun, Python sanal ortamını yapılandırın ve kullanıcı verileriyle kurulumu otomatikleştirin. Adım adım kılavuz.