لانچر مصنوعات Bitnami دستاویزاتimaxe CLI بلاگ رابطہ

cloud-init اور user-data: بوٹ پر اپنے انسٹینس ماہرانہ انداز میں ترتیب دیں

گولڈن AMI مستقل چیزیں سنبھالتی ہے؛ cloud-init وہ سنبھالتا ہے جو بدلتا ہے۔ user-data اور cloud-init میں مہارت ہی آپ کو ایک ہی امیج ہزار منظرناموں میں، بغیر دوبارہ پکائے، استعمال کرنے دیتی ہے۔ یہ رہی عملی رہنما۔

ٹرمینل میں سسٹم اپ ڈیٹ دکھاتا لیپ ٹاپ
ٹرمینل میں سسٹم اپ ڈیٹ دکھاتا لیپ ٹاپ تصویر: Solijon Solayev · CC BY-SA 4.0 · Wikimedia Commons

cloud-init کلاؤڈ انسٹینسز کو اُن کے پہلے بوٹ پر تیار کرنے کا عملی معیار ہے۔ جب آپ کوئی انسٹینس چلاتے ہیں اور اسے user-data اسکرپٹ دیتے ہیں تو cloud-init ہی اسے پڑھ کر چلاتا ہے: صارف بناتا ہے، فائلیں لکھتا ہے، پیکج نصب کرتا ہے، ڈسک منسلک کرتا ہے یا سروسز شروع کرتا ہے۔

مثالی امتزاج واضح ہے: گولڈن 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 کو مختصر رکھیں: اگر یہ بہت بڑھ جائے تو غالباً وہ چیز AMI میں پکائی جانی چاہیے۔
  • ہم اثری: کمانڈز ایسے بنائیں کہ دوبارہ چلانے سے کچھ نہ بگڑے۔
  • user-data میں کبھی کھلے راز نہ رکھیں: یہ انسٹینس میٹا ڈیٹا سے پڑھا جا سکتا ہے۔ انہیں دورانِ عمل Secrets Manager، Parameter Store یا Vault سے داخل کریں۔
  • میٹا ڈیٹا تک رسائی محفوظ کریں: SSRF کے ذریعے اسناد کی چوری کم کرنے کے لیے IMDSv2 استعمال کریں۔
  • لاگ رکھیں اور خرابی دور کریں: کچھ ناکام ہو تو cloud-init کے لاگ (/var/log/cloud-init-output.log) آپ کے بہترین دوست ہیں۔

پکانا یا بوٹ کرنا: کیا کہاں رکھیں

AMI میں (پکانا)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 کے ساتھ مل کر کام کرنے کے لیے سوچی گئی ہیں، تاکہ ایک ہی AMI کئی منظرناموں میں آپ کے کام آئے۔

cloud-inituser-dataec2ابتدائی ترتیبimdsv2
IM

imaxe ٹیم

ہم کیٹلاگ کی AMIs بناتے اور برقرار رکھتے ہیں۔ جب ہم کوئی ورژن شائع کرتے ہیں تو ہم اسے سب سے پہلے پروڈکشن میں استعمال کرتے ہیں۔

کیٹلاگ سے

اس مضمون سے متعلق AMI

پڑھتے رہیں

متعلقہ آرٹیکلز