انتقل إلى المحتوى

نشر Wallarm على AWS باستخدام Terraform

تقدم Wallarm وحدة Terraform لنشر العقدة على AWS من بيئة متوافقة مع Terraform. استخدم هذه التعليمات لاستكشاف الوحدة وتجربة أمثلة النشر المقدمة.

من خلال تنفيذ وحدة Terraform الخاصة بـ Wallarm ، قدمنا الحل الذي يتيح خيارين رئيسيين لنشر Wallarm: خيارات الأمان داخل الخط (التي تعتبر proxy في هذه الطريقة النشر) و خارج النطاق (mirror). يتم التحكم بسهولة في خيار النشر بواسطة متغير الوحدة preset الخاص بـ Wallarm.

حالات الاستخدام

من بين جميع خيارات نشر Wallarm المدعومة Wallarm deployment options، يُنصح بوحدة Terraform لنشر Wallarm في هذه حالات الاستخدام:

  • البنية التحتية الحالية لك تقع على AWS.

  • تستفيد من ممارسة البنية كشفرة (IaC). تسمح وحدة Wallarm's Terraform بالإدارة التلقائية والتوفير للعقدة Wallarm على AWS ، مما يعزز الكفاءة والاتساق.

المتطلبات

  • تثبيت Terraform 1.0.5 أو أعلى على المستوى المحلي

  • الوصول إلى الحساب بـ الدور المشرف في Wallarm Console في الولايات المتحدة أو السحابة الأوروبية Cloud

  • الوصول إلى https://us1.api.wallarm.com إذا كنت تعمل مع US Wallarm Cloud أو إلى https://api.wallarm.com إذا كنت تعمل مع EU Wallarm Cloud. يرجى التأكد من أن الوصول غير محظور بواسطة جدار الحماية

لا يتضمن هذا الموضوع تعليمات لإنشاء جميع موارد AWS اللازمة لنشر Wallarm ، مثل مجموعة VPC. للحصول على التفاصيل، راجع الدليل ذو الصلة دليل Terraform.

كيفية استخدام وحدة Wallarm AWS Terraform؟

لنشر Wallarm للإنتاج باستخدام وحدة AWS Terraform:

  1. اشترك في Wallarm Console في US Cloud أو EU Cloud.

  2. افتح Wallarm Console → Nodes وأنشئ العقدة من نوع Wallarm node.

إنشاء عقدة Wallarm

  1. انسخ رمز العقدة المُستخدم.

  2. أضف كود الوحدة wallarm إلى تكوين Terraform الخاص بك:

    module "wallarm" {
      source = "wallarm/wallarm/aws"
    
      instance_type = "..."
    
      vpc_id     = "..."
    
      preset     = "proxy"
      proxy_pass = "https://..."
      token      = "..."
    
    
    }
    
  3. قم بتعيين قيم المتغير في تكوين الوحدة wallarm:

المتغير الوصف النوع مطلوب؟
instance_type نوع العينة Amazon EC2 المستخدم لنشر Wallarm، مثلاً: t3.small. string نعم
vpc_id ID of the AWS Virtual Private Cloud لنشر Wallarm EC2 العينة. string نعم
token رمز عقدة Wallarm تم نسخه من واجهة UI لوحة تحكم Wallarm.

استخدام رمز واحد لعدد من التثبيتات

يمكنك استخدام هذا الرمز في عدة تثبيتات بغض النظر عن المنصة المختارة. يسمح ذلك بتجميع منطقي لعينات العقدة في واجهة UI لوحة تحكم Wallarm. مثال: يمكنك نشر عدة عقد Wallarm إلى بيئة التطوير، كل عقدة على جهازها الخاص المملوكة لمطور معين.

string نعم
متغيرات Wallarm ذات الصلة
host سيرفر API لـ Wallarm. القيم الممكنة:
  • us1.api.wallarm.com لـ US Cloud
  • api.wallarm.com لـ EU Cloud
بشكل افتراضي، api.wallarm.com.
string لا
upstream إصدار عقدة Wallarm التي ستُنشر. الحد الأدنى المدعوم هو 4.0.

بشكل افتراضي, 4.8.
string لا
preset مخطط نشر Wallarm. القيم الممكنة:
  • proxy
  • mirror
بشكل افتراضي، proxy.
string لا
proxy_pass بروتوكول الخادم الذي تم توجيهه والعنوان. ستعالج العقدة Wallarm الطلبات المرسلة إلى العنوان المحدد وستكون شرعية لتوجيهها إلى. يمكن تحديد 'http' أو 'https' كبروتوكول. يمكن تحديد العنوان بواسطة اسم النطاق أو عنوان IP، ومنفذ اختياري. string نعم، إذا كان preset هو proxy
mode وضع تصفية حركة المرور. القيم الممكنة: off, monitoring, safe_blocking, block.

بشكل افتراضي، monitoring.
string لا
libdetection سواء كانت النية هي استخدام مكتبة الكشف خلال تحليل حركة المرور.

بشكل افتراضي، true.
bool لا
global_snippet التكوين المخصّص الذي سيتم إضافته إلى التكوين العالمي لـ NGINX. يمكنك وضع الملف الذي يحتوي على التكوين في دليل كود Terraform وتحديد المسار إلى هذا الملف في هذا المتغير.

ستجد مثالاً على تكوين المتغير في المثال على نشر الحل الأكثر تقدمًا للـ proxy.
string لا
http_snippet التكوين المخصص الذي سيتم إضافته إلى القسم http في تكوين NGINX. يمكنك وضع الملف الذي يحتوي على التكوين في دليل كود Terraform وتحديد المسار إلى هذا الملف في هذا المتغير.

ستجد مثالاً على تكوين المتغير في المثال على نشر الحل الأكثر تقدمًا للـ proxy.
string لا
server_snippet التكوين المخصّص الذي سيتم إضافته إلى القسم server في تكوين NGINX. يمكنك وضع الملف الذي يحتوي على التكوين في دليل كود Terraform وتحديد المسار إلى هذا الملف في هذا المتغير

ستجد مثالاً على تكوين المتغير في المثال على نشر الحل الأكثر تقدمًا للـ proxy.
string لا
post_script البرنامج النصي المخصص الذي سيتم تشغيله بعد سكريبت تهيئة العقدة Wallarm (cloud-init.py). يمكنك وضع الملف الذي يحتوي على أي سكريبت في دليل كود Terraform وتحديد المسار إلى هذا الملف في هذا المتغير.

ستجد مثالاً على تكوين المتغير في المثال على نشر الحل الأكثر تقدمًا للـ proxy.
string لا
تكوين النشر على AWS
app_name بادئة لأسماء موارد AWS التي ستنشئها وحدة Wallarm.

بشكل افتراضي، wallarm.
string لا
app_name_no_template سواء أم لا استخدام أحرف كبيرة، أرقام وأحرف خاصة في أسماء الموارد AWS التي ستنشئها وحدة Wallarm. إذا كان false، فإن أسماء الموارد ستتضمن فقط أحرف صغيرة.

بشكل افتراضي، false.
bool لا
lb_subnet_ids قائمة أرقام تعريف فرعيات شبكة الخصوصية الافتراضية AWS لنشر موزع الحمولة التطبيقي في. القيمة المستحسنة هي الفرعيات العامة المرتبطة بجدول الطرق الذي يحتوي على طريق إلى بوابة الإنترنت. list(string) لا
instance_subnet_ids قائمة أرقام تعريف فرعيات شبكة الخصوصية الافتراضية AWS لنشر عينات Wallarm EC2 في. القيمة المستحسنة هي الفرعيات الخاصة المكونة للاتصالات الخروج فقط. list(string) لا
lb_enabled سواء كان من المقرر إنشاء موزع حمولة تطبيق AWS. ستتم إنشاء مجموعة هدف مع أي قيمة ممرة في هذا المتغير إلا إذا تم تحديد مجموعة هدف مخصصة في المتغير custom_target_group.

بشكل افتراضي، true.
bool لا
lb_internal سواء كان من المقرر جعل موزع الحمولة التطبيقي موزع حمولة داخلي. بشكل افتراضي، ALB لديه نوع يواجه الإنترنت. إذا كنت تستخدم النهج غير المتزامن للتعامل مع الاتصالات، فالقيمة الموصى بها هي true.

بشكل افتراضي، false.
bool لا
lb_deletion_protection سواء كان من المقرر تمكين الحماية لـ موزع الحمولة التطبيقي ليتم منع حذفه بطريق الخطأ. لنشرات التطبيقات الإنتاجية، القيمة المستحسنة هي true.

بشكل افتراضي، true.
bool لا
lb_ssl_enabled سواء كان من المقرر تفاوض اتصالات SSL بين عميل وموزع حمولة التطبيق. إذا كان true، فإن المتغيرات lb_ssl_policy و lb_certificate_arn مطلوبة. يُنصح بذلك للنشرات الإنتاجية.

بشكل افتراضي، false.
bool لا
lb_ssl_policy سياسة الأمان لموزع الحمولة التطبيقي. string نعم، إذا كان lb_ssl_enabled هو true
lb_certificate_arn اسم المورد الأمازون (ARN) من الشهادة ACM (AWS Certificate Manager) . string نعم، إذا كان lb_ssl_enabled هو true
custom_target_group اسم المجموعة الهدف الحالي لـ مرفق للمجموعة المتمددة تلقائيًا المُنشأة. بشكل افتراضي، ستتم إنشاء مجموعة هدف جديدة والمرفقة. إذا كانت القيمة غير الافتراضية، سيتم تعطيل إنشاء ALB. string لا
inbound_allowed_ip_ranges قائمة عناوين IP المصدر والشبكات للسماح باتصالات الداخلية إلى عينات Wallarm من. يرجى مراعاة أن AWS تقنع بحركة مرور موزع الحمولة حتى لو كان مصدرها من الفرعيات العامة.

بشكل افتراضي:
  • "10.0.0.0/8",
  • "172.16.0.0/12",
  • "192.168.0.0/16"
list(string) لا
outbound_allowed_ip_ranges قائمة عناوين IP المصدر والشبكات للسماح باتصالات الخروج من عينة Wallarm.

بشكل افتراضي: "0.0.0.0/0".
list(string) لا
extra_ports قائمة أرقام البرامج النصية الإضافية داخل الشبكة للسماح باتصالات الداخلية إلى عينات Wallarm من. سيتم تطبيق التكوين على مجموعة الأمان. list(number) لا
extra_public_ports قائمة أرقام البرامج النصية الإضافية في الشبكة العامة للسماح باتصالات الداخلية إلى عينات Wallarm من. list(number) لا
extra_policies سياسات IAM AWS التي سيتم ربطها بستك Wallarm. يمكن أن يكون من المفيد استخدامها مع متغير post_script والذي يعمل سكريبت يطالب ببيانات من Amazon S3. list(string) لا
source_ranges قائمة عناوين IP المصدر والشبكات للسماح بحركة مرور موزع حمولة التطبيق AWS من.

بشكل افتراضي، "0.0.0.0/0".
list(string) لا
https_redirect_code كود لإعادة توجيه الطلب HTTP إلى HTTPS. القيم الممكنة:
  • 0 - التوجيه معطل
  • 301 - إعادة توجيه دائمة
  • 302 - إعادة توجيه مؤقتة
بشكل افتراضي، 0.
number لا
asg_enabled سواء كان من المقرر إنشاء مجموعة توسيع تلقائي AWS.

بشكل افتراضي، true
bool لا
min_size العدد الأدنى من العينات في المجموعة المتمددة تلقائياً المنشأة AWS.

بشكل افتراضي، 1.
number لا
max_size العدد الأقصى من العينات في المجموعة المتمددة تلقائياً المنشأة AWS.

بشكل افتراضي، 3.
number لا
desired_capacity العدد الأولي من العينات في المجموعة المتمددة تلقائياً المنشأة AWS. يجب أن يكون أكبر من أو مساويًا لـ min_size وأقل من أو مساويًا لـ max_size.

بشكل افتراضي، 1.
number لا
autoscaling_enabled سواء كان من المقرر تمكين Amazon EC2 Auto Scaling لكتلة Wallarm.

بشكل افتراضي، false.
bool لا
autoscaling_cpu_target النسبة المئوية المتوسطة لاستخدام الوحدة المركزية للمعالجة للحفاظ على المجموعة المتمددة تلقائياً AWS عند. بشكل افتراضي، 70.0. string لا
ami_id رمز تعريف الصورة الأمازون الذي سيُستخدم لنشر Wallarm. بشكل افتراضي (سلسلة فارغة)، يتم استخدام الصورة الأخيرة من المصدر. أنت مدعو لإنشاء AMI مخصصة على أساس العقدة Wallarm. string لا
key_name اسم زوج مفاتيح AWS الذي سيُستخدم للاتصال بـ Wallarm عبر SSH. بشكل افتراضي، الاتصال عبر SSH معطل. string لا
tags الوسوم لموارد AWS التي ستنشئها وحدة Wallarm. map(string) لا

تجربة وحدة Wallarm Terraform مع الأمثلة

لقد أعددنا أمثلة لطرق مختلفة لاستخدام وحدة Wallarm، حتى تتمكن من تجربتها قبل النشر على الإنتاج:

معلومات إضافية حول Wallarm و Terraform

يدعم Terraform عدد من التكاملات (المزودين) والتكوينات الجاهزة للاستخدام (الوحدات) المتاحة للمستخدمين عبر الـ سجلتها العامة، التي تكونت بواسطة العديد من البائعين.

إلى هذا السجل، نشرت Wallarm:

  • وحدة Wallarm لنشر العقدة على AWS من البيئة المتوافقة مع Terraform. موضحة في المقالة الحالية.

  • المزود Wallarm provider لإدارة Wallarm عبر Terraform.

هذين الاثنين هما عناصر مستقلة تستخدم لأغراض مختلفة، ولا يتطلبان بعضهما البعض.

القيود