AWS Landing Zone Accelerator ile Terraform Kullanımı

Giriş

Amazon Web Services (AWS) ekosistemini yönetmek için AWS Control Tower ve Landing Zone Accelerator on AWS (LZA) kullanımı giderek yaygınlaşmaktadır. Bu yazımızda, LZA kullanarak AWS altyapınızı yönetirken HashiCorp Terraform’u nasıl entegre edebileceğinizi detaylı bir şekilde inceleyeceğiz. LZA, AWS en iyi uygulamalarına ve küresel uyumluluk çerçevelerine uygun olarak mimari temelleri hazırlar ve çok hesaplı AWS ortamlarını yönetmek için kapsamlı bir çözüm sunar.

AWS Landing Zone Accelerator (LZA) Nedir?

LZA, AWS müşterilerine çoklu hesap yönetimi, güvenlik, uyumluluk ve operasyonel yetenekler açısından güçlü bir temel sağlar. Kamu sektörü ve sıkı düzenlemelere tabi endüstriler için özel olarak tasarlanan bu çözüm, AWS Control Tower ile birlikte kullanıldığında merkezi bir yönetişim sunar. AWS Control Tower, AWS hesaplarını merkezi olarak yönetmek için standartlaştırılmış bir yapı sunarken, LZA ile ek işlevsellikler ve güvenlik servisleri sağlanabilir.

LZA, YAML yapılandırma dosyaları kullanarak aşağıdaki bileşenlerin yönetilmesini sağlar:

  • Ağ kaynakları (Amazon VPC, AWS Transit Gateway vb.)
  • Şifreleme yönetimi (AWS KMS anahtarları)
  • Ortam parametreleri (Geliştirme, Test, Üretim)

Terraform ile LZA altyapısını kullanarak nasıl genişletebileceğimizi ve yönetebileceğimizi inceleyelim.

Kullanım Senaryoları

Bir organizasyon, LZA kullanarak merkezi bir bulut platformu oluşturduktan sonra, farklı ekiplerin Terraform ile altyapıyı genişletmesi gerekebilir. Örneğin, bir altyapı ekibi aşağıdaki üç temel kullanım senaryosuna odaklanabilir:

  1. Ağ Yönetimi: Mevcut Amazon VPC altyapısının Terraform ile kullanılması
  2. Şifreleme Yönetimi: AWS KMS anahtarlarının kullanımı
  3. Ortam Parametreleri: Farklı ortamlara (Geliştirme, Test, Üretim) özgü yapılandırmaların uygulanması

Bu senaryoları adım adım inceleyelim.

1. Ağ Yönetimi

Bir AWS Organizasyonu’nda ağ kaynakları merkezi olarak yönetildiğinde, Terraform kullanıcıları mevcut ağ altyapısını kendi dağıtımları için kullanabilirler. Aşağıdaki örnekte, LZA tarafından oluşturulmuş bir Amazon VPC içinde Terraform ile bir EC2 Auto Scaling grubu oluşturacağız.

LZA Konfigürasyonu ile VPC Tanımlama

Aşağıdaki YAML yapılandırması, bir VPC’nin nasıl oluşturulduğunu gösterir:

vpcs:
  - name: lza-managed-vpc
    account: Sandbox
    region: eu-west-2
    cidrs:
      - 10.0.0.0/16
    enableDnsHostnames: true
    enableDnsSupport: true

Terraform ile VPC’yi Kullanma

LZA tarafından sağlanan VPC’yi Terraform kodu ile kullanabiliriz:

data "aws_vpc" "this" {
  tags = {
    Name = "lza-managed-vpc"
  }
}

data "aws_subnets" "this" {
  filter {
    name = "vpc-id"
    values = [data.aws_vpc.this.id]
  }
}

Bu bilgiler ışığında, aşağıdaki Terraform kodu ile EC2 Auto Scaling grubu oluşturabiliriz:

resource "aws_autoscaling_group" "this" {
  name = "autoscaling-group"
  max_size = 5
  min_size = 2
  desired_capacity = 4
  vpc_zone_identifier = data.aws_subnets.this.ids[*]
  launch_template {
    id = aws_launch_template.this.id
    version = "$Latest"
  }
}

2. Şifreleme Yönetimi

LZA, AWS KMS anahtarlarını merkezi olarak yöneterek tüm organizasyon için şifreleme sağlar. Aşağıdaki örnekte, mevcut AWS KMS anahtarını kullanarak bir S3 bucket oluşturacağız.

Terraform ile AWS KMS Kullanımı

Öncelikle AWS KMS anahtarına erişiyoruz:

data "aws_kms_alias" "s3" {
  name = "alias/accelerator/kms/s3/key"
}

Şimdi bu anahtarı kullanarak S3 bucket’ı şifreleyelim:

resource "aws_s3_bucket_server_side_encryption_configuration" "this" {
  bucket = aws_s3_bucket.this.bucket
  rule {
    apply_server_side_encryption_by_default {
      kms_master_key_id = data.aws_kms_alias.s3.target_key_arn
      sse_algorithm = "aws:kms"
    }
  }
}

3. Ortam Parametreleri

Farklı ortamlar için (Geliştirme, Test, Üretim) özelleştirilmiş yapılandırmalar oluşturmak için AWS Systems Manager Parameter Store’u kullanabiliriz.

LZA YAML Konfigürasyonu

customizations:
  cloudFormationStacks:
    - name: DevelopmentEnvironment
      parameters:
        - name: Environment
          value: Development

Terraform ile Ortam Parametrelerini Kullanma

data "aws_ssm_parameter" "environment" {
  name = "/accelerator/environment"
}

resource "aws_s3_bucket" "this" {
  bucket = "bucket-${data.aws_ssm_parameter.environment.value}-${data.aws_caller_identity.current.account_id}"
}

Bu yapı, oluşturulan S3 bucket’in ortam adına göre farklılık göstermesini sağlar.

Sonuç

Bu makalede, Terraform’un AWS Landing Zone Accelerator ile nasıl entegre edilebileceğini detaylı bir şekilde ele aldık.

  • Ağ yönetimi için LZA tarafından sağlanan VPC’leri nasıl kullanabileceğimizi gördük.
  • Şifreleme yönetimi ile AWS KMS anahtarlarını Terraform’da nasıl kullanacağımızı inceledik.
  • Ortam parametreleri ile farklı ortamlar için özelleştirilmiş yapılandırmalar oluşturduk.

Bu yöntemleri kullanarak, LZA’nın sunduğu güçlü altyapıyı Terraform ile daha esnek ve yönetilebilir hale getirebilirsiniz. AWS ortamınızın güvenliğini ve yönetişimini sağlamak için LZA ve Terraform’un sağladığı avantajları bir araya getirmek, hem ölçeklenebilir hem de uyumlu bir bulut altyapısı oluşturmanıza yardımcı olacaktır.

Bir yanıt yazın

Your email address will not be published. Required fields are marked *.

*
*