تزويد الموارد

يمكنك تزويد الموارد إما باستخدام Terraform أو Terragrunt. إذا كنت تستخدم Terraform، فيجب أن تطبق التكوينات في كل دليل، بتسلسل محدد. باستخدام Terragrunt، يمكنك تزويد كل الموارد باستخدام أمر واحد.

حول ملفات حالة Terraform

يقوم Terraform بتخزين معلومات الحالة لتتبع موارد البنية الأساسية المدارة، وتخطيط الموارد الموزعة إلى التكوين وتتبع الميتاديتا وتحسين الأداء لعمليات توزيع البنية الأساسية الكبيرة.

بشكل افتراضي، يتم تخزين ملف terraform.tfstate على المضيف المحلي. ويعد هذا السلوك الافتراضي غير الأمثل في بيئات تكنولوجيا المعلومات حيث يلزم على عدة مستخدمين تكوين الموارد المعرفة في تكوين مكون بعينه. للتحكم في توزيع الموارد وإدارتها في بيئة متعددة المستخدمين، وتخزين ملفات الحالة Terraform في Oracle Cloud Infrastructure Object Storage ومشاركة ملفات الحالة وقفل الملفات بين جميع المستخدمين. يرجى الاطلاع على استخدام مخزن الكائنات لملفات حالة Terraform.

تزويد الموارد باستخدام Terragrunt

يمكنك استخدام Terragrunt لتزويد كل الموارد في المنظومة باستخدام أمر واحد. دوليًا، تقوم Terragrunt باستدعاء أوامر Terraform ومعالجة كل التبعيات بين المصادر المعرفة في التكوين.

  1. انتقل إلى دليل examples/full-deployment.
  2. تهيئة الوحدات النمطية Terraform، عبر تشغيل الأمر التالي:
    make init
    يقوم الأمر بتهيئة كل الوحدات النمطية Terraform في التكوين، من خلال تشغيل terraform init في كل دليل.
  3. قم بتزويد الموارد من خلال تشغيل الأمر التالي:
    terragrunt apply-all
    تقوم Terragrunt باستدعاء الأمر terraform apply لكل وحدات Terraform النمطية في التكوين، بتسلسل معرف. يتم توزيع كل الموارد.

تقديم الموارد باستخدام المنطقة

إذا اخترت تزويد الموارد باستخدام Terraform، فيجب تطبيق تكوين Terraform بشكل منفرد في كل دليل على حدة، في تسلسل مضغوط.

  1. انسخ examples/full-deployment/terraform.tfvars إلى كل دليل من الأدلة الفرعية التالية تحت examples/full-deployment:
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    انتقل إلى دليل examples/full-deployment، وأدخل الأمر التالي لنسخ terraform.tfvars إلى جميع الأدلة الفرعية المطلوبة. فيما يخص إمكانية القراءة، يظهر الأمر على عدة سطور بشرطة مائلة إلى الخلف (\) في نهاية كل سطر. نسخ كل السطور بما في ذلك حرف الشرطة المائلة للخلف والصق كأمر مفرد.

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. انتقل إلى دليل examples/full-deployment/common/configuration.
  3. قم بتشغيل الأوامر التالية:
    1. تهيئة التكوين:
      terraform init
    2. قم بمراجعة الموارد المعرفة في التكوين:
      terraform plan
    3. تطبيق التكوين:
      terraform apply
    ويقوم التكوين في دليل common/configuration بحساب عدد وحدات VCNs الخاصة بالعميل وVCNs المناظرة المطلوبة، وحجم CIDR لكل VCN، والتخطيط بين VCNs الخاصة بالعميل وVCNs المناظرة. لا يتم تكوين موارد عند تطبيق هذا التكوين؛ يتم استخدام نتائج العملية الحسابية عند تكوين وحدات Vncn وموارد الشبكات الأخرى.
  4. قم بتشغيل أوامر terraform init وterraform plan وterraform apply في الأدلة التالية ضمن examples/full-deployment، بترتيب التنفيذ المحدد:
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    بعد تشغيل terraform apply في كل أدلة التكوين بالترتيب المحدد، يتم توزيع المنظومة بشكل كامل.

تعديل المنظومة

لتعديل المنظومة، يجب تحديث تعريفات الموارد في إعدادات Terraform المناسبة، ثم تطبيق التكوين الذي تمت مراجعته. يتطلب تعريف تعريفات الموارد التي يلزم تعديلها استيعابًا عشوائيًا لرمز المثال، خاصة الوحدات النمطية Terraform المشار إليها في كل دليل والتبعيات المؤقتة.

الإرشادات الخاصة بتعديل المنظومة تقع خارج نطاق هذا الحل.

إزالة كل الموارد

يمكنك إزالة كل الموارد الموزعة بسهولة باستخدام Terraform أو Terragrunt.

  1. انتقل إلى دليل examples/full-deployment.
  2. قم بعمل أي مما يلي:
    • في حالة تثبيت Terragrunt، قم بتشغيل الأمر التالي:

      terragrunt destroy-all

      تقوم Terragrunt باستدعاء الأمر terraform destroy للموارد في التكوين، بتسلسل محدد.

      إذا حاولت استخدام terragrunt destroy-all لمسح توزيع فاشل أو جزئي، فقد يحدث الخطأ التالي:

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      إذا حدث هذا الخطأ، فقم بإزالة الموارد من خلال تشغيل terraform destroy في كل دليل تكوين، كما هو موضح لاحقًا.

    • لإزالة الموارد من خلال استخدام عنصر CLI Terraform، قم بتشغيل terraform destroy في كل دليل تكوين ضمن examples/full-deployment، بالترتيب التالي.

      ملاحظة:

      انتظر حتى ينتهي الأمر من التشغيل في كل دليل قبل المتابعة إلى الدليل التالي.
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration