تخطَّ إلى المحتوى

نشر العرض التوضيحي

  • Terraform بالحد الأدنى للإصدار المذكور في terraform/versions.tf>= 1.8، من أجل الدوال المُعرَّفة من الموفر وكتلة check التي تحمي عنوان VIP.
  • موفر xcsh. لا شيء يثبّت إصداراً بعينه: الملف .terraform.lock.hcl مُستثنى من git والقيد مجرد حد أدنى مفتوح، لذا فإن كل عملية init تجلب أحدث إصدار منشور. هذا مقصود لمشروع في مرحلة ما قبل الإصدار — يجب أن يفشل العرض التوضيحي عند وجود انحدار في الموفر بدلاً من البقاء على إصدار قديم يخفيه.
  • بيانات اعتماد API لـ F5 XC للمستأجر المحدد في var.expected_xc_tenant، مُصدَّرة باسم XCSH_API_TOKEN (أو زوج P12/PEM). صدِّر بيانات الاعتماد فقط، ولا تصدّر عنواناً أبداً — انظر أدناه.
  • بيانات اعتماد Azure بصلاحيات إنشاء مجموعة موارد وشبكة VNet وRoute Server وأجهزة افتراضية.
  • مساحة أسماء موجودة مسبقاً في F5 XC لطبقة التطبيق. النشر يقرأها ولا يُنشئها أو يدمّرها أبداً، لذا لا يمكن أبداً أن تنتهي مساحة أسماء تحتوي على عروض توضيحية غير ذات صلة في قائمة الحذف الخاصة بهذه الحزمة.

قدّم القيمتين اللتين لا توجد لهما قيمة افتراضية

Section titled “قدّم القيمتين اللتين لا توجد لهما قيمة افتراضية”

لكل متغير آخر قيمة افتراضية عملية، وكل اسم كائن مُشتق من var.component. اثنان تُركا بقصد بلا قيمة افتراضية:

Terminal window
cd terraform
cp terraform.tfvars.example terraform.tfvars
المتغيرسبب عدم وجود قيمة افتراضية
origin_ipأي قيمة افتراضية تعني جهازاً محدداً بعينه. قيمة قديمة ستُرسل حركة مرور نشر جديد إلى مضيف شخص آخر بدلاً من الفشل.
lb_domainيطابق موازن التحميل على Host، لذا هذا ما يجب أن يرسله كل طلب. وهو ملك لمن يشغّل النشر.

كلتاهما تُتحقق صيغتهما، لذا يؤدي خطأ إملائي إلى فشل الخطة بدلاً من فشل العرض التوضيحي.

الملف terraform.tfvars مُستثنى من git، ويجب أن يبقى كذلك: فهو يحمل معرّف اشتراك وقيماً خاصة بكل مهندس.

المستأجر إعداد، وليس ما تصدّره بيئة الطرفية لديك

Section titled “المستأجر إعداد، وليس ما تصدّره بيئة الطرفية لديك”

يحدد var.expected_xc_tenant اسم المستأجر وهو المكان الوحيد الذي يُسمّى فيه. يستنبط providers.tf قيمة api_url لموفر xcsh منه، وهو ما يتجاوز بقصد أي XCSH_API_URL في البيئة، وتُفشل كتلة postcondition في terraform/main.tf عملية التخطيط عندما تُحدد البيئة مستأجراً مختلفاً.

اقرأ أي من الشقين دون تشغيل أي شيء يغيّر الحالة:

Terminal window
terraform output -raw xc_tenant # what the deployment targets
terraform output -raw xc_env_tenant # what your shell claims — diagnostic only
f5-sales-demo
f5-sales-demo
  1. التهيئة. إعداد الواجهة الخلفية غير مُضمَّن في المستودع؛ قدّم إعدادك الخاص.

    Terminal window
    terraform init -backend-config=backend.hcl
  2. التطبيق الأول. يبني هذا Azure ومواقع CE ورمز التسجيل، ويُشغّل أجهزة CE.

    Terminal window
    terraform apply
  3. طبّق مرة أخرى بعد أن تُسجّل أجهزة CE. هذا ليس اختيارياً، والسبب موضّح أدناه بدلاً من أن يكون شيئاً تكتشفه بنفسك.

    Terminal window
    terraform apply

ثم انتقل إلى إثبات سلامته قبل عرضه على أي شخص.

موافقة التسجيل مُؤتمتة، ومع ذلك يبقى التطبيق على مرحلتين

Section titled “موافقة التسجيل مُؤتمتة، ومع ذلك يبقى التطبيق على مرحلتين”

لم تعد موافقة التسجيل تحتاج إلى شخص في وحدة التحكم: يقوم بها المورد xcsh_registration_approval، وتحدد وحدة الموقع أي تسجيل يجب الموافقة عليه.

لكن ذلك لا يجعل النشر عملية apply واحدة بلا تدخّل، والسبب يستحق الفهم قبل أن تشاهد التشغيل الأول وتستنتج أنه فشل:

  • يُسمّى كائن تسجيل CE r-<uuid>. ولا يُسمّى أبداً باسم الموقع، لذا لا يمكن لأي شيء التنبؤ بالاسم في وقت التخطيط.
  • لا يوجد التسجيل إلا بعد أن يُشغّل الجهاز الافتراضي ويقوم vpm بالتسجيل.
  • لذلك لا يخطط التطبيق الأول لأي موافقة على الإطلاق. أعد التطبيق بعد أن تُسجّل أجهزة CE فتُنشأ الموافقات.

يوثّق terraform/main.tf هذا الترتيب في أعلى الملف، وهو النسخة المرجعية — فتسلسل النشر يعيش مع الشيفرة التي تنفّذه.

وصول SSH للمشغّل قرار يُتخذ وقت البناء

Section titled “وصول SSH للمشغّل قرار يُتخذ وقت البناء”

يكتب النشر مفتاح مشغّل إلى حساب admin على الجهاز، والذي تكون واجهة تسجيل الدخول له هي Site CLI. ويُكتب عبر write_files في cloud-init، الذي يُنفَّذ مرة واحدة عند أول تشغيل.

Terminal window
terraform destroy

تبقى مساحة أسماء التطبيق: فهي مقروءة وليست مُدارة أبداً، لذا لا يمكن لأمر destroy أن يأخذ معه مساحة أسماء تحتوي على عروض توضيحية غير ذات صلة. أما كل شيء آخر في مجموعة الموارد فسيزول.