المُطلِق المنتجات Bitnami التوثيقimaxe CLI المدوّنة اتصل بنا

cloud-init وuser-data: هيّئ نسخك عند الإقلاع باحتراف

صورة golden AMI تحلّ الثابت؛ وcloud-init يحلّ المتغيّر. إتقان user-data وcloud-init هو ما يتيح لك استخدام الصورة ذاتها في ألف سيناريو دون إعادة خبزها. إليك الدليل العملي.

حاسوب محمول يعرض تحديث النظام في طرفية
حاسوب محمول يعرض تحديث النظام في طرفية الصورة: Solijon Solayev · CC BY-SA 4.0 · Wikimedia Commons

cloud-init هو المعيار الفعلي لتهيئة النسخ السحابية خلال إقلاعها الأول. فحين تُطلق نسخة وتمرّر إليها نصّ user-data، يكون cloud-init هو من يفسّره وينفّذه: ينشئ المستخدمين ويكتب الملفات ويثبّت الحزم ويركّب الأقراص ويشغّل الخدمات.

المزيج المثالي واضح: صورة golden AMI تحتوي ما لا يتغيّر —نظام التشغيل وبيئة التشغيل والتحصين— بينما يقدّم user-data ما يتغيّر بحسب البيئة أو النسخة: الإعداد والأسرار المحقونة والدور. هكذا تعيد استخدام صورة واحدة في سياقات كثيرة.

طريقتان لكتابة user-data

يقبل user-data صيغًا عدة؛ وأشهرها اثنتان: نصّ الصدفة وcloud-config.

  • نصّ الصدفة: يبدأ بـ #!/bin/bash. بسيط ومباشر للمهام السريعة.
  • cloud-config: يبدأ بـ #cloud-config ويستخدم YAML تصريحيًا. أنظف وأسهل قراءةً وأكثر حيادًا تكراريًا لتهيئة المستخدمين والحزم والملفات والأوامر.

مثال على cloud-config

يعلن ملف #cloud-config النموذجي أقسامًا مثل packages: (الحزم المطلوب تثبيتها) وwrite_files: (ملفات الإعداد) وruncmd: (الأوامر الختامية) وusers: (الحسابات والمفاتيح). ولأنه تصريحي، فمراجعته وصيانته أسهل من نصّ طويل.

ممارسات جيدة

  • أبقِ user-data صغيرًا: إن كبر أكثر من اللازم فالأرجح أن مكانه داخل الصورة مخبوزًا.
  • الحياد التكراري: صمّم الأوامر بحيث لا تُفسد شيئًا عند إعادة تنفيذها.
  • لا تضع أسرارًا بنصّ صريح في user-data أبدًا: فهو مقروء من بيانات النسخة الوصفية. احقنها وقت التشغيل من Secrets Manager أو Parameter Store أو Vault.
  • احمِ الوصول إلى البيانات الوصفية: استخدم IMDSv2 للحدّ من سرقة بيانات الاعتماد عبر SSRF.
  • سجّل وصحّح: سجلات cloud-init (/var/log/cloud-init-output.log) خير صديق لك حين يفشل شيء ما.

الخبز أم الإقلاع: أين يوضع كل شيء

يوضع في الصورة (خبز)يوضع في user-data (إقلاع)
نظام التشغيل والترقيعاتإعداد خاص بالبيئة
بيئة التشغيل والوكلاء والتحصينمتغيّرات ومعاملات لكل نسخة
برمجيات ثابتة وثقيلةالتسجيل في العنقود والاكتشاف
كل ما يطول تثبيتهحقن الأسرار وقت التشغيل

القاعدة الذهبية: الثابت والبطيء يُخبَز؛ والمتغيّر والخفيف يوضع عند الإقلاع.

أخطاء شائعة تكلّف ساعات

  • وضع ما ينبغي أن يكون في الصورة داخل user-data، فتصبح عمليات الإقلاع بطيئة وهشّة.
  • كشف أسرار بنصّ صريح في البيانات الوصفية.
  • افتراض أن user-data يُعاد تنفيذه عند كل إقلاع: افتراضيًا لا يعمل إلا في الأول.
  • إهمال مراجعة سجلات cloud-init حين «لا تفعل النسخة ما ينبغي».

أسئلة شائعة

هل يُنفَّذ user-data عند كل إعادة تشغيل؟

افتراضيًا في الإقلاع الأول فقط. يمكن ضبط cloud-init لتنفيذ أجزاء بعينها عند كل إقلاع، لكن يُستحسن فعل ذلك بوعي وبحياد تكراري.

هل تمرير كلمات المرور في user-data آمن؟

لا. فـ user-data مقروء من بيانات النسخة الوصفية. استخدم مدير أسرار واحقنها وقت التشغيل، واحمِ البيانات الوصفية بـ IMDSv2.

هل يعمل cloud-init في AWS فقط؟

لا. cloud-init متعدّد المنصّات ويعمل في AWS وAzure وGCP وغيرها، ما يجعله مثاليًا لأتمتة الإقلاع بصورة قابلة للنقل.

في imaxe.cloud نصمّم صورًا مهيّأة للاندماج مع cloud-init، بحيث تخدمك صورة واحدة في سيناريوهات كثيرة.

cloud-inituser-dataec2التهيئة الأوليةimdsv2
IM

فريق imaxe

نبني ونصون صور AMI في الكتالوج. عندما ننشر إصدارًا، نستخدمه في الإنتاج قبل الجميع.

من الكتالوج

صور AMI المرتبطة بهذا المقال

تابع القراءة

مقالات ذات صلة