Ana içeriğe geç

Terraform kullanarak AWS üzerinde Wallarm dağıtımı

Wallarm, Terraform uyumlu bir ortamdan AWS'ye düğüm dağıtımı için Terraform modülünü sağlar. Modülü keşfetmek ve sağlanan dağıtım örneklerini denemek için bu talimatları kullanın.

Wallarm Terraform modülünü uygulayarak, Wallarm Node'un in-line (bu dağıtım yönteminde proxy) dağıtımını sağlayan bir çözüm sunuyoruz. Dağıtım seçeneği, preset Wallarm modül değişkeniyle kolayca kontrol edilir.

Kullanım senaryoları

Desteklenen tüm Wallarm dağıtım seçenekleri arasında, aşağıdaki kullanım senaryolarında Wallarm dağıtımı için Terraform modülü önerilir:

  • Mevcut altyapınız AWS üzerinde bulunuyorsa.

  • Infrastructure as Code (IaC) pratiğini benimsiyorsanız. Wallarm'ın Terraform modülü, AWS üzerinde Wallarm düğümünün otomatik yönetimi ve sağlanmasını mümkün kılarak verimlilik ve tutarlılığı artırır.

Gereksinimler

  • Yerel olarak kurulu Terraform 1.0.5 veya üzeri

  • US veya EU Cloud içindeki Wallarm Console'da Administrator rolüne sahip hesaba erişim

  • US Wallarm Cloud ile çalışıyorsanız https://us1.api.wallarm.com veya EU Wallarm Cloud ile çalışıyorsanız https://api.wallarm.com adresine erişim. Lütfen erişimin bir güvenlik duvarı tarafından engellenmediğinden emin olun

  • Saldırı tespit kuralları ve API spesifikasyonları güncellemelerini indirmek ve izinli, engelli veya gri listede yer alan ülke, bölge veya veri merkezleriniz için kesin IP'leri almak amacıyla aşağıdaki IP adreslerine erişim

    node-data0.us1.wallarm.com - 34.96.64.17
    node-data1.us1.wallarm.com - 34.110.183.149
    us1.api.wallarm.com - 35.235.66.155
    34.102.90.100
    34.94.156.115
    35.235.115.105
    
    node-data1.eu1.wallarm.com - 34.160.38.183
    node-data0.eu1.wallarm.com - 34.144.227.90
    api.wallarm.com - 34.90.110.226
    

Bu konu, Wallarm'ı dağıtmak için gerekli tüm AWS kaynaklarının (ör. bir VPC kümesi) oluşturulmasına yönelik talimatları içermez. Ayrıntılar için ilgili Terraform rehberine bakın.

Wallarm AWS Terraform Modülü nasıl kullanılır?

AWS Terraform modülünü kullanarak üretimde Wallarm'ı dağıtmak için:

  1. US Cloud veya EU Cloud içinde Wallarm Console'a kaydolun.

  2. Wallarm Console → Nodes bölümünü açın ve Wallarm node türünde bir düğüm oluşturun.

    Bir Wallarm düğümünün oluşturulması

  3. Oluşturulan düğüm token'ını kopyalayın.

  4. Terraform yapılandırmanıza wallarm modül kodunu ekleyin:

    module "wallarm" {
      source = "wallarm/wallarm/aws"
    
      instance_type = "..."
    
      vpc_id     = "..."
    
      preset     = "proxy"
      proxy_pass = "https://..."
      token      = "..."
    
      ...
    }
    
  5. wallarm modül yapılandırmasında değişken değerlerini ayarlayın:

Değişken Açıklama Tür Gerekli mi?
instance_type Wallarm dağıtımı için kullanılacak Amazon EC2 örnek türü, ör.: t3.small. string Evet
vpc_id Wallarm EC2 örneğinin dağıtılacağı AWS Virtual Private Cloud kimliği. string Evet
token Wallarm Console UI'dan kopyalanan Wallarm düğüm token'ı.

Birden fazla kurulum için tek bir token kullanma

Seçilen platformdan bağımsız olarak tek bir token'ı birden çok kurulumda kullanabilirsiniz. Bu, Wallarm Console UI içinde düğüm örneklerini mantıksal olarak gruplamanıza olanak tanır. Örnek: bir geliştirme ortamına birden çok Wallarm düğümü dağıtırsınız; her düğüm, belirli bir geliştiriciye ait kendi makinesindedir.

string Evet
Wallarm'a özgü değişkenler
host Wallarm API sunucusu. Olası değerler:
  • US Cloud için us1.api.wallarm.com
  • EU Cloud için api.wallarm.com
Varsayılan olarak api.wallarm.com.
string Hayır
upstream Dağıtılacak Wallarm düğüm sürümü. Desteklenen en düşük sürüm 4.0.

Varsayılan olarak 4.8.
string Hayır
preset Wallarm dağıtım şeması. Olası değerler: proxy (varsayılan). string Hayır
proxy_pass Proxy'lenen sunucu protokolü ve adresi. Wallarm düğümü belirtilen adrese gönderilen istekleri işleyip meşru olanları bu adrese proxy'ler. Protokol olarak 'http' veya 'https' belirtilebilir. Adres bir alan adı veya IP adresi ve isteğe bağlı bir port olarak belirtilebilir. string Evet, preset proxy ise
mode Trafik filtreleme modu. Olası değerler: off, monitoring, safe_blocking, block.

Varsayılan olarak monitoring.
string Hayır
libdetection Trafik analizi sırasında libdetection kütüphanesinin kullanılıp kullanılmayacağı.

Varsayılan olarak true.
bool Hayır
global_snippet NGINX genel yapılandırmasına eklenecek özel yapılandırma. Yapılandırmayı içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.

Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz.
string Hayır
http_snippet NGINX'in http yapılandırma bloğuna eklenecek özel yapılandırma. Yapılandırmayı içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.

Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz.
string Hayır
server_snippet NGINX'in server yapılandırma bloğuna eklenecek özel yapılandırma. Yapılandırmayı içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.

Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz.
string Hayır
post_script Wallarm düğümü başlatma betiğinden (cloud-init.py) sonra çalıştırılacak özel betik. İstediğiniz betiği içeren dosyayı Terraform kod dizinine koyup bu değişkende dosya yolunu belirtebilirsiniz.

Değişken yapılandırma örneğini proxy gelişmiş çözüm dağıtımı örneğinde bulabilirsiniz.
string Hayır
AWS dağıtım yapılandırması
app_name Wallarm modülünün oluşturacağı AWS kaynak adları için ön ek.

Varsayılan olarak wallarm.
string Hayır
app_name_no_template Wallarm modülünün oluşturacağı AWS kaynak adlarında büyük harflerin, sayıların ve özel karakterlerin kullanılıp kullanılmayacağı. false ise, kaynak adları yalnızca küçük harfleri içerir.

Varsayılan olarak false.
bool Hayır
lb_subnet_ids Application Load Balancer'ın dağıtılacağı AWS Virtual Private Cloud alt ağ kimliklerinin listesi. Önerilen değer, internet ağ geçidine rotası olan bir yönlendirme tablosuyla ilişkilendirilmiş genel alt ağlardır. list(string) Hayır
instance_subnet_ids Wallarm EC2 örneklerinin dağıtılacağı AWS Virtual Private Cloud alt ağ kimliklerinin listesi. Önerilen değer, yalnızca çıkış bağlantılarına göre yapılandırılmış özel alt ağlardır. list(string) Hayır
lb_enabled Bir AWS Application Load Balancer oluşturulup oluşturulmayacağı. custom_target_group değişkeninde özel bir hedef grup belirtilmediği sürece bu değişkende verilen herhangi bir değerle bir hedef grup oluşturulacaktır.

Varsayılan olarak true.
bool Hayır
lb_internal Bir Application Load Balancer'ın dahili yük dengeleyici yapılıp yapılmayacağı. Varsayılan olarak, bir ALB internet-facing türündedir. Bağlantıları eşzamansız yaklaşımla ele alıyorsanız önerilen değer true'dur.

Varsayılan olarak false.
bool Hayır
lb_deletion_protection Bir Application Load Balancer'ın yanlışlıkla silinmeye karşı korunmasının etkinleştirilip etkinleştirilmeyeceği. Üretim dağıtımları için önerilen değer true'dur.

Varsayılan olarak true.
bool Hayır
lb_ssl_enabled Bir istemci ile Application Load Balancer arasında SSL bağlantılarının müzakere edilip edilmeyeceği. true ise lb_ssl_policy ve lb_certificate_arn değişkenleri gereklidir. Üretim dağıtımları için önerilir.

Varsayılan olarak false.
bool Hayır
lb_ssl_policy Application Load Balancer için güvenlik politikası. string lb_ssl_enabled true ise Evet
lb_certificate_arn AWS Certificate Manager (ACM) sertifikasının Amazon Resource Name (ARN) değeri. string lb_ssl_enabled true ise Evet
custom_target_group Oluşturulan Auto Scaling grubuna eklenecek mevcut hedef grubun adı. Varsayılan olarak yeni bir hedef grup oluşturulup eklenir. Değer varsayılan dışındaysa AWS ALB oluşturma devre dışı bırakılır. string Hayır
inbound_allowed_ip_ranges Wallarm örneklerine gelen bağlantılara izin verilecek kaynak IP ve ağların listesi. AWS'nin, trafik genel alt ağlardan başlasa bile yük dengeleyici trafiğinin kaynağını maskelediğini unutmayın.

Varsayılan olarak:
  • "10.0.0.0/8",
  • "172.16.0.0/12",
  • "192.168.0.0/16"
list(string) Hayır
outbound_allowed_ip_ranges Wallarm örneklerinden giden bağlantılara izin verilecek kaynak IP ve ağların listesi.

Varsayılan olarak: "0.0.0.0/0".
list(string) Hayır
extra_ports Wallarm örneklerine gelen bağlantılara izin verilecek, dahili ağ için ek portların listesi. Yapılandırma bir güvenlik grubuna uygulanacaktır. list(number) Hayır
extra_public_ports Wallarm örneklerine gelen bağlantılara izin verilecek, genel ağ için ek portların listesi. list(number) Hayır
extra_policies Wallarm yığınıyla ilişkilendirilecek AWS IAM ilkeleri. Amazon S3'ten veri isteyen bir betiği çalıştıran post_script değişkeniyle birlikte kullanmak faydalı olabilir. list(string) Hayır
source_ranges Bir AWS Application Load Balancer'dan gelen trafiğe izin verilecek kaynak IP ve ağların listesi.

Varsayılan olarak "0.0.0.0/0".
list(string) Hayır
https_redirect_code HTTP isteklerinin HTTPS'e yönlendirilmesi için kod. Olası değerler:
  • 0 - yönlendirme devre dışı
  • 301 - kalıcı yönlendirme
  • 302 - geçici yönlendirme
Varsayılan olarak 0.
number Hayır
asg_enabled AWS Auto Scaling grubu oluşturulup oluşturulmayacağı.

Varsayılan olarak true
bool Hayır
min_size Oluşturulan AWS Auto Scaling grubundaki minimum örnek sayısı.

Varsayılan olarak 1.
number Hayır
max_size Oluşturulan AWS Auto Scaling grubundaki maksimum örnek sayısı.

Varsayılan olarak 3.
number Hayır
desired_capacity Oluşturulan AWS Auto Scaling grubundaki başlangıç örnek sayısı. min_size değerine eşit veya ondan büyük ve max_size değerine eşit veya ondan küçük olmalıdır.

Varsayılan olarak 1.
number Hayır
autoscaling_enabled Wallarm kümesi için Amazon EC2 Auto Scaling'in etkinleştirilip etkinleştirilmeyeceği.

Varsayılan olarak false.
bool Hayır
autoscaling_cpu_target AWS Auto Scaling grubunun korunacağı ortalama CPU kullanım yüzdesi. Varsayılan olarak 70.0. string Hayır
ami_id Wallarm örneği dağıtımı için kullanılacak Amazon Machine Image kimliği. Varsayılan olarak (boş dize), en güncel imaj üst kaynaktan kullanılır. Wallarm düğümüne dayalı özel bir AMI oluşturabilirsiniz. string Hayır
key_name Wallarm örneklerine SSH ile bağlanmak için kullanılacak AWS anahtar çiftinin adı. Varsayılan olarak SSH bağlantısı devre dışıdır. string Hayır
tags Wallarm modülünün oluşturacağı AWS kaynakları için etiketler. map(string) Hayır

Örneklerle Wallarm Terraform Modülünü denemek

Wallarm modülünü üretime dağıtmadan önce denemeniz için farklı kullanım şekillerine ait örnekler hazırladık:

Wallarm ve Terraform hakkında daha fazla bilgi

Terraform, birçok sağlayıcı (provider) ve kullanıma hazır yapılandırmaya (module) sahip olup, çeşitli üreticiler tarafından doldurulan herkese açık kayıt üzerinden kullanıcılara sunulur.

Wallarm bu kayıt defterine şunları yayımladı:

  • Terraform uyumlu ortamdan AWS'ye düğüm dağıtımı için Wallarm modülü. Bu makalede açıklanmıştır.

  • Terraform aracılığıyla Wallarm'ı yönetmek için Wallarm provider.

Bunlar, farklı amaçlar için kullanılan bağımsız öğelerdir; birbirlerini gerektirmezler.

Sınırlamalar