OOAAOWOOAAOW
LinuxNetworkingGitPythonDockerKubernetesHelmAWS
YouTube
কোর্সসমূহ
আমার লাইব্রেরি
LinuxNetworkingGitPythonDockerKubernetesHelmAWS
YouTube
OOAAOW YouTube Channel
Sponsor OOAAOW

DevOps Lab — Bangladeshi learner-দের জন্য তৈরি

সাবস্ক্রিপশনসাবস্ক্রিপশন নীতি

হোম/aws/মডিউল ৮
০৮

Launch template — একবার লেখো, যতবার দরকার চালাও

পঞ্চাশটা সার্ভার ক্লিক করে বানানো কেন ভুল উত্তর, টেমপ্লেট কী কী ধরে রাখে, একটা চালু সার্ভার থেকে টেমপ্লেট বের করা, এক কমান্ডে তিনটে সার্ভার, সংস্করণ কীভাবে কাজ করে, আর Default-Latest গোলমাল — যেটা একটা fleet-এ দুরকম সার্ভার তৈরি করে।

launch templateversioningautomationfleetamiuser datatags⏱ ~৩৪ মিনিট
💡 ধারণা

পঞ্চাশটা সার্ভার, আর ভুল উত্তরটা

পর্ব ৫-এ আমরা একটা সার্ভার চালু করেছি: সাতটা ঘর ভরে, Launch চেপে। পর্ব ৭-এ সাজানোর কাজটা একটা স্ক্রিপ্টে চলে গেছে। এখন প্রশ্নটা: পঞ্চাশটা লাগলে?

সরল উত্তরটা Launch ফর্মেই আছে — ডানদিকের Summary বাক্সে Number of instances লেখা। ১-এর জায়গায় ৫০ লিখে দাও। পঞ্চাশটা সার্ভার তৈরি হবে, একই AMI থেকে, একই স্ক্রিপ্ট নিয়ে।

সেটা কাজ করে। আর সেটাই ভুল উত্তর — কিন্তু কারণটা যা অনেকে ভাবে, তা নয়। কারণটা পঞ্চাশটা বানানো নিয়ে নয়, দ্বিতীয়বার নিয়ে।

ভাবো কী কী আর করা যাবে না:

"একই জিনিস আবার বানাও" — কীভাবে? ফর্মটা আবার ভরতে হবে। কোন AMI ছিল? কোন instance type? কোন security group? স্ক্রিপ্টটা কোথায়? কিছুটা মনে আছে, কিছুটা নেই। তুমি যা বানিয়েছ তার কোনো লিখিত বর্ণনা নেই — শুধু ফলটা আছে।

"স্ক্রিপ্টে একটা লাইন বদলাও" — কোথায় বদলাবে? স্ক্রিপ্টটা পঞ্চাশটা instance-এর ভেতরে ঢুকে গেছে, একটা কপি হিসেবে। মূল কপিটা তোমার ল্যাপটপে একটা ফাইল, বা একটা ব্রাউজার টেক্সটবক্সে — যেটা এখন বন্ধ।

"সহকর্মী একই জিনিস বানাবে" — কীভাবে বোঝাবে? মুখে? একটা উইকি পাতায় সাতটা ঘরের মান লিখে? আর সেই পাতাটা হালনাগাদ থাকবে কে দেখবে?

"Auto scaling নিজে নিজে সার্ভার বানাবে" — কী থেকে? এটাই সবচেয়ে বড় সমস্যা, আর পর্ব ২১-এ এটাই লাগবে। একটা scaling group তোমাকে জিজ্ঞেস করতে আসবে না কোন AMI চাই। তার একটা লিখিত নির্দেশ দরকার, আগে থেকে।

আসল সমস্যাটা তাই একটা শব্দে: পুনরাবৃত্তি নয়, স্থায়িত্ব। ফর্মে ৫০ লেখা পঞ্চাশটা সার্ভার দেয়, কিন্তু একটা রেকর্ড দেয় না। আর রেকর্ড ছাড়া দ্বিতীয়বার করাটা আবার প্রথমবার।

Launch template ঠিক এই রেকর্ডটা। ওই সাতটা ঘরের উত্তর একটা নাম দেওয়া জিনিসে জমা করে রাখা — তারপর "একটা সার্ভার চালু করো" মানে হয়ে যায় "ওই টেমপ্লেট থেকে একটা বানাও"।

আর এই এক বাক্য বদল থেকে তিনটে জিনিস বেরিয়ে আসে, যেগুলো আগে সম্ভব ছিল না:

ফর্ম ভরেটেমপ্লেট থেকে
দ্বিতীয়বার একই জিনিসস্মৃতি থেকেনিশ্চিত, একই
কী কী ঠিক করা আছেকোথাও লেখা নেইটেমপ্লেটটাই উত্তর
একটা জিনিস বদলানোপ্রতিটা সার্ভারে আলাদানতুন একটা সংস্করণ
যন্ত্রের পক্ষে ব্যবহার করাঅসম্ভবএটাই auto scaling-এর ইনপুট

শেষ সারিটা এই পর্বের আসল কারণ। বাকি তিনটে সুবিধা; এটা পূর্বশর্ত।

💡 ধারণা

টেমপ্লেট কী কী ধরে রাখে

একটা launch template-এ Launch ফর্মের প্রায় সব ঘরই রাখা যায়, আর প্রতিটা ঐচ্ছিক। এটা একটা গুরুত্বপূর্ণ নকশার সিদ্ধান্ত: টেমপ্লেট একটা আংশিক বর্ণনা হতে পারে, আর বাকিটা launch-এর সময় দেওয়া যায়।

কীরাখা উচিত?কেন
AMIহ্যাঁযেকোনো launch-এর ন্যূনতম শর্ত
Instance typeহ্যাঁনইলে প্রতিবার লিখতে হবে
Key pairহ্যাঁSSH লাগলে
Security groupহ্যাঁপর্ব ৬-এর নিয়মগুলো এখানেই জোড়া লাগে
User dataহ্যাঁ — সবচেয়ে জরুরিপর্ব ৭-এর স্ক্রিপ্টটা এখানে বসে
Storageহ্যাঁডিস্কের মাপ আর ধরন
Tagsহ্যাঁপর্ব ৪-এর tagging — এখানে বসালে প্রতিটা সার্ভারে আপনাআপনি যায়
IAM instance profileহ্যাঁপর্ব ১০-এ এটা আসছে — সার্ভারের নিজের পরিচয়
Subnet / zoneনা, সাধারণতscaling group নিজে ঠিক করবে কোন zone-এ বসাবে

শেষ সারিটা একটু ব্যাখ্যা দরকার, আর এটা পর্ব ২১-এ কাজে লাগবে। টেমপ্লেটে subnet বেঁধে দিলে ওই টেমপ্লেট থেকে বানানো সব সার্ভার ওই একটা zone-এ যাবে — আর তার মানে তোমার "একাধিক zone-এ ছড়ানো" আর্কিটেকচারটা আসলে একটা zone-এ। তাই subnet-টা scaling group-এর হাতে ছেড়ে দাও; ওই স্তরটাই এই সিদ্ধান্তের সঠিক জায়গা।

আর tags নিয়ে একটা বাস্তব পরামর্শ, কারণ এটা সহজে চোখ এড়ায়: টেমপ্লেটে tag বসানোর সময় দুটো আলাদা জায়গা থাকে — instance-এর tag আর volume-এর tag। দুটোতেই বসাও। নইলে পরে Cost Explorer-এ দেখবে সার্ভারের খরচ ভাগ করা আছে আর ডিস্কের খরচ একটা অচিহ্নিত স্তূপ।

একটা জিনিস টেমপ্লেট রাখে না: অবস্থা। টেমপ্লেট একটা বর্ণনা, একটা জীবন্ত জিনিস নয়। টেমপ্লেট থেকে সার্ভার বানানোর পরে টেমপ্লেট বদলালে চালু সার্ভারগুলোর কিছুই হয় না। ওগুলো তৈরির সময় যা ছিল, তাই থাকে।

এটা সুসংবাদ আর দুঃসংবাদ একসাথে। সুসংবাদ: টেমপ্লেট বদলানো নিরাপদ, কিছু ভাঙে না। দুঃসংবাদ: নতুন কনফিগ পেতে সার্ভারগুলো প্রতিস্থাপন করতে হয় — আর ওটাই পর্ব ২১-এর শেষ অংশের বিষয়।
▶ ডেমো

চালু একটা সার্ভার থেকে টেমপ্লেট বের করা

🔒

বাকি অংশটা সাবস্ক্রাইবারদের জন্য

১০৫টি অংশের ২১টি দেখানো হয়েছে, ৮৪টি বাকি

←

আগের module

User data আর cloud-init — সার্ভার নিজেই নিজেকে সাজায়

পরের module

IAM ১ — ব্যবহারকারী, দল আর ভূমিকাভিত্তিক অনুমতি

→