0Pricing
DevOps Bootcamp · درس

بناء موفّرات مخصصة

وسّعوا Terraform إلى ما يتجاوز عمليات التكامل الحالية بفهم كيفية عمل الموفّرات وتأليف موفّر مخصص باستخدام Terraform Plugin Framework.

بناء موفّرات مخصصة درس مجاني في DevOps Bootcamp على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في DevOps Bootcamp، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

عندما لا تكفي المزوّدات الموجودة

يغطي السجل معظم المنصات، لكن المؤسسات غالبًا ما تشغّل واجهات API داخلية لا يتوفر لها مزوّد. ويتيح المزوّد المخصص لـ Terraform إدارة تلك الموارد باستخدام دورة حياة plan/apply نفسها.

كيفية عمل المزوّدات

المزوّد هو ملف إضافة ثنائي مستقل يشغّله Terraform ويتواصل معه عبر gRPC. ويحوّل ملف الإضافة عمليات CRUD في Terraform إلى استدعاءات API للنظام المستهدف.

إطار Plugin Framework

يُعد Terraform Plugin Framework الحديث من HashiCorp، والمكتوب بلغة Go، الطريقة الموصى بها لبناء المزوّدات، إذ يحل محل SDKv2 الأقدم. وتُكتب المزوّدات بلغة Go.

import (
  "github.com/hashicorp/terraform-plugin-framework/provider"
)

تعريف المزوّد

يصرّح نوع المزوّد باسمه وبالموارد ومصادر البيانات التي يوفرها.

type widgetProvider struct{}

func (p *widgetProvider) Metadata(_ context.Context, _ provider.MetadataRequest, resp *provider.MetadataResponse) {
  resp.TypeName = "widget"
}

مخطط المورد

يصرّح كل مورد بمخطط للسمات يتضمن الأنواع والبيانات الوصفية. وهذا ما يحدده المستخدمون في HCL الخاص بهم.

resp.Schema = schema.Schema{
  Attributes: map[string]schema.Attribute{
    "name": schema.StringAttribute{Required: true},
    "id":   schema.StringAttribute{Computed: true},
  },
}

تنفيذ CRUD

ينفّذ المورد Create وRead وUpdate وDelete. وتستدعي كل طريقة API الخاص بك وتكتب النتيجة مرة أخرى في حالة Terraform.

func (r *widgetResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
  // call API, then save state
}

تحافظ Read على صحة الحالة

تحدّث طريقة Read الحالة من API الفعلي. وإذا اختفى المورد البعيد، فأزله من الحالة حتى يخطط Terraform لإعادة إنشائه.

اختبارات القبول

تستخدم المزوّدات اختبارات قبول تشغّل دورات plan/apply حقيقية في بيئة اختبار، ويُتحكم فيها عبر متغير بيئي حتى لا تُشغّل عرضيًا.

TF_ACC=1 go test ./... -v

تجاوز التطوير المحلي

لاختبار المزوّد قبل نشره، استخدم dev override في إعدادات CLI حتى يحمّل Terraform الملف الثنائي المحلي بدلًا من تنزيله من سجل.

provider_installation {
  dev_overrides {
    "acme/widget" = "/home/dev/go/bin"
  }
  direct {}
}

نشر المزوّد

انشر المزوّد في السجل من خلال وضع وسم لإصدار وتوقيع الملفات الثنائية باستخدام مفتاح GPG. ثم يصرّح المستهلكون به في required_providers.

terraform {
  required_providers {
    widget = {
      source  = "acme/widget"
      version = "~> 1.0"
    }
  }
}

اعتبارات الصيانة

المزوّد التزام طويل الأمد: فتغييرات API، والتوافق بين الإصدارات، والتوثيق، كلها تحتاج إلى صيانة. أما الاحتياجات المؤقتة، فقد يكون مصدر البيانات external أو نص برمجي أبسط من مزوّد متكامل.

تحقق سريع

اختبر معرفتك بالمزوّدات المخصصة.

مراجعة: توسيع Terraform

تعلّمت كيفية بناء مزوّدات مخصصة:

  • المزوّدات إضافات Go تتواصل عبر gRPC مع النواة.
  • يحدد Plugin Framework المخططات وطرائق CRUD.
  • تتيح تجاوزات التطوير الاختبار المحلي، وتتحقق اختبارات القبول من السلوك.
  • يتطلب النشر وسومًا وملفات ثنائية موقّعة.

الأسئلة الشائعة

هل درس «بناء موفّرات مخصصة» مجاني؟

نعم — نص درس «بناء موفّرات مخصصة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة DevOps Bootcamp، انتقل إلى CoddyKit PRO. تتضمن دورة DevOps Bootcamp 4 دروس في المجموع.

ماذا ستتعلم في «بناء موفّرات مخصصة»؟

وسّعوا Terraform إلى ما يتجاوز عمليات التكامل الحالية بفهم كيفية عمل الموفّرات وتأليف موفّر مخصص باستخدام Terraform Plugin Framework. تتمرن على DevOps Bootcamp مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ DevOps Bootcamp؟

لا تُشترط خبرة سابقة. DevOps Bootcamp على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «بناء موفّرات مخصصة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس DevOps Bootcamp هذا؟

نعم. كل درس في DevOps Bootcamp يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنماط السحابة المتعددة والسحابة الهجينة
  2. سياسات Sentinel للحوكمة
  3. Terraform Cloud وEnterprise
  4. بناء موفّرات مخصصة
← العودة إلى DevOps Bootcamp