DevOps / الأساسي: الأسس المشتركة / الدرس 6
الحزم والإعدادات والأسرار
افصل هوية الإصدار وإعدادات البيئة والاعتمادات الحساسة مع إتاحة تدقيق العلاقة بينها.
في هذه الصفحة
أهداف الدرس
- صنف الحزم والإعدادات والاعتمادات.
- تحقق من الإعداد قبل الجاهزية.
- خطط التدوير والاستعادة دون كشف الأسرار.
فصل ثلاثة أنواع من المدخلات
تحمل الحزمة البرمجيات المختارة للإصدار، وتختار الإعدادات سلوك البيئة، ويمنح السر وصولا أو يحمي مادة سرية. تتفاعل الفئات لكن تختلف سياسات تخزينها ومراجعتها وتدويرها. عنوان عام إعداد عادة وكلمة مرور القاعدة سر والتطبيق المبني حزمة. لا تعِد بناء الحزمة لتغيير اعتماد فقط. سجل إصدارات الإعداد والسر المصاحبة دون قيم الأسرار. يقلل الفصل غموض الترقية والاستعادة والتحقيق.
التحقق من الإعداد قبل الجاهزية
النص البيئي ليس رقما أو قيمة منطقية أو مضيفا أو مسارا صحيحا تلقائيا. حدد المطلوب والصيغة والحدود والأولوية. ارفض الإعداد المطلوب الغائب قبل الجاهزية بدلا من الاتصال بنظام افتراضي صامت. المثال الأول سجل إصدار اصطناعي والثاني محلل ضيق في الذاكرة. يقبل نصي true وfalse ومهلة صحيحة محدودة. يستقبل كائنات عادية كي لا يقرأ بيئة فعلية أو يغيرها، وتسمي أخطاؤه الحقول دون قيمها.
artifact_id: lab-build-42
config_revision: lab-config-9
credential_version: lab-credential-3
schema_contract: compatible-v2
approval_record: lab-review-21
تُسجل معرفات الإصدارات فقط دون قيمة اعتماد أو ادعاء بوجود الإصدار الخيالي.
تقديم الأسرار بقناة مضبوطة
استخدم وسيلة أسرار معتمدة وامنح الحمل وصوله المحدد فقط. تجنب الاعتمادات في Git وطبقات الصور ومعاملات البناء والروابط والتفريغ. يختلف الحقن البيئي والملفات المركبة في التعرض والتحديث، ولا يضمن أيهما الأمان وحده. قد يبقى السر القديم بالعملية بعد تدوير المخزن ما لم يعِد التطبيق التحميل أو التشغيل بإجراء مختبر. فضّل الهوية القصيرة حيث تدعم المنصة، وميز استرجاع السر عن إدارة نظامه.
def config(values):
flag = values.get("FEATURE", "false")
if flag not in ("true", "false"):
raise ValueError("Invalid FEATURE")
text = values.get("TIMEOUT_MS", "1000")
if not text.isascii() or not text.isdecimal() or not 1 <= int(text) <= 5000:
raise ValueError("Invalid TIMEOUT_MS")
return {"feature": flag == "true", "timeout_ms": int(text)}
print(config({"FEATURE": "false", "TIMEOUT_MS": "800"}))
{'feature': False, 'timeout_ms': 800}
يبقى نص false سلبيا وتصبح المهلة عددا متحققا منه. لا تصل محاكاة Python3 إلى البيئة أو الملفات أو الشبكة.
التدوير دون انقطاع جديد
خطط الاستبدال مع مالك الاعتمادية. عند الدعم اسمح بتداخل قصير للاعتمادين وحدّث المستهلكين وتحقق من الجديد ثم ألغ القديم. قد يتطلب الاختراق إلغاء فوريا ومقايضة مختلفة للإتاحة. اختبر الإجراء باعتمادات اصطناعية في عزلة. يجب ألا يعيد الرجوع لحزمة قديمة سرا ملغى تلقائيا. سجل معرفات الإصدار وأحداث التحقق دون تسجيل القيم كدليل على التدوير.
ضبط الانحراف والأدلة
يحدث الانحراف عند اختلاف الفعلي عن المعتمد المعلن. اكتشفه بحالة مرغوبة ذات إصدار ومقارنات آمنة تعرض المفاتيح والمراجعات لا الأسرار. ميّز تعديل الطوارئ المصرح عن تغير مجهول ثم سوّه بالمسار المعتمد. تتطلب الاستعادة توافق الحزمة والإعداد والمخطط والاعتماد معا. لا يجيب سجل بوسم إصدار فقط عن ذلك. اضبط احتفاظ السجلات ووصولها لأن البيانات غير السرية قد تكشف البنية أو المستأجرين إذا جُمعت بلا حدود.
الأخطاء الشائعة وإصلاحها
يبقى السر بعد حذفه من Git
- لماذا يحدث؟
- تحتفظ به السجلات أو الصور أو النسخ.
- كيف تصلحه؟
- ألغ أو دوّر وقيّم التعرض بالإجراء المعتمد.
- كيف تتجنب تكراره؟
- أبق الاعتمادات خارج المصدر والحزم.
يفعل نص false ميزة
- لماذا يحدث؟
- اعتُبر وجود النص تحليلا منطقيا.
- كيف تصلحه؟
- اقبل قيما صريحة وقارن المحتوى.
- كيف تتجنب تكراره؟
- اختبر الغياب والفراغ والخطأ وtrue وfalse.
يعيد الرجوع اعتمادا منتهيا
- لماذا يحدث؟
- ضُمنت الأسرار في الإصدار القديم.
- كيف تصلحه؟
- اختر اعتمادا حاليا متوافقا عبر قناة الأسرار.
- كيف تتجنب تكراره؟
- أدرج توافق الاعتماد في تجارب الاستعادة.
اختبر فهمك
1. صنف صورة حاوية وعنوان دفع ورمز API. ماذا يسجل الإصدار؟
اعرض الحل المشروح
هي حزمة وإعداد وسر على الترتيب. سجل الهوية الثابتة ومراجعة الإعداد ومرجع إصدار السر ودليل التوافق. لا تنسخ الرمز إلى السجل لتسهيل الفحص.
2. حدّث التدوير المخزن لكن عاملا يستخدم الرمز القديم. ما المطلوب التحقق منه؟
اعرض الحل المشروح
حدد كيفية تلقي المستهلك للاعتماد وتحديثه، واتبع إعادة التحميل أو التشغيل المعتمدة. تحقق من استخدام الجديد دون كشفه قبل إلغاء القديم عند السماح بالتداخل. تحديث المخزن لا يثبت تبني المستهلك.
أهم ما تعلمته
- تحمل الحزمة البرمجيات المختارة للإصدار، وتختار الإعدادات سلوك البيئة، ويمنح السر وصولا أو يحمي مادة سرية.
- استخدم وسيلة أسرار معتمدة وامنح الحمل وصوله المحدد فقط.
- يحدث الانحراف عند اختلاف الفعلي عن المعتمد المعلن.