এর কী কপি না করেই একটি Raspberry Pi VPN অ্যাপ্লায়েন্স নতুন করে তৈরি করুন
একটি ইমেজ চারটি ইনপুটের একটি। কনফিগারেশন ঘোষণা করুন, অ্যাপ্লিকেশনের ডেটা পুনরুদ্ধারযোগ্য রাখুন এবং চালু হওয়ার আগেই প্রতিটি বোর্ডকে তার নিজস্ব পরিচয় দিন।
একবার ইমেজ থেকে বুট করলেই একটি Pi পুনর্নির্মাণযোগ্য অ্যাপ্লায়েন্স হয়ে যায় না। আপনার দরকার ছোট একটি ইনপুট সেট যা আপনি আবার প্রয়োগ করতে পারেন: একটি রক্ষণাবেক্ষণকৃত ভিত্তি, একটি ঘোষিত কনফিগারেশন, অ্যাপ্লিকেশনের স্থায়ী ডেটা এবং এমন একটি ডিভাইস পরিচয় যা কেবল ওই বোর্ডেরই। শেষটি বাদ দিলে প্রতিটি প্রতিস্থাপন একটা ক্রেডেনশিয়ালের ক্লোন হয়ে দাঁড়ায়।
নিচের ধাপগুলি কোনো টুলের সুপারিশ নয়, কাজের ক্রম। যে কোনো কনফিগারেশন সিস্টেম যা এগুলি প্রকাশ করতে পারে, তা-ই যথেষ্ট।
প্রথমে চার ধরনের ইনপুট তালিকাভুক্ত করুন
বেস ইমেজ ও তার প্যাকেজগুলি অপারেটিং সিস্টেম, আর্কিটেকচার এবং আপডেট কোথা থেকে আসবে তা ঠিক করে, আর একটি ইমেজ বিল্ডার তখনই সাহায্য করে যখন এটি যে টুলের নাম বলে তা আপনার রিলিজের জন্য এখনও রক্ষণাবেক্ষণ করা হয়। ঘোষিত কনফিগারেশন হল সেই অংশ যা একজন মানুষ পর্যালোচনা করে: নেটওয়ার্ক ভূমিকা, সার্ভিস সেটিংস এবং প্রতিটি সার্ভিসের প্রয়োজনীয় লাইফসাইকেল কাজ। স্থায়ী অ্যাপ্লিকেশন ডেটা হল যা সার্ভিস পুনরায় তৈরি করতে পারে না, আর তার অবস্থান ও ব্যাকআপ পদ্ধতি ইমেজের নয়, ওই অ্যাপ্লিকেশনের। ডিভাইস পরিচয় ও সিক্রেট হল চতুর্থ ইনপুট, এবং একটি চালু কার্ড ক্লোন করার সময় মানুষ ঠিক এটাই ভুলে যায়।
কিছু পুনর্নির্মাণের আগে চারটি তালিকা লিখুন। ফাঁকা সারি থাকা তালিকা মানে এমন সিদ্ধান্ত যা আপনি এখনও নেননি।
সিক্রেট রিপোজিটরির বাইরে রাখুন এবং বলুন সেগুলি কোথায় থাকে
রিপোজিটরি পর্যালোচিত টেমপ্লেট ও অসিক্রেট কনফিগারেশনের জন্য ভালো ঠিকানা, আর VPN প্রাইভেট কী, পুনরায় ব্যবহারযোগ্য অ্যাডমিনিস্ট্রেটর ক্রেডেনশিয়াল ও ডায়াগনস্টিক আর্কাইভের জন্য খারাপ ঠিকানা। যদি কোনো সিক্রেট ডিভাইসে থাকতেই হয়, তবে লিখে রাখুন তা কোথা থেকে আসে, কে পড়তে পারে এবং কীভাবে ঘোরানো হয়। কেবল একটি SD কার্ডে থাকা কী একক ব্যর্থতার বিন্দু, আর প্রতিটি বোর্ডে কপি করা কী মালিকহীন ফ্লিট-ব্যাপী ক্রেডেনশিয়াল। কোনোটিই পুনরুদ্ধার পরিকল্পনা নয়।
পরীক্ষাটি সহজ: কাল রিপোজিটরি ফাঁস হলে আক্রমণকারী কী পাবে? টেমপ্লেট ও টপোলজি নোট টিকে যাবে। একটি কার্যকর পরিচয় টিকবে না।
অটোমেশন যা পুনরায় চালাতে পারে তার মালিকানা তাকে দিন
Ansible-এর মডেল পরিচালিত নোডের ইনভেন্টরি প্লে, টাস্ক, রোল ও হ্যান্ডলার থেকে আলাদা রাখে, যেগুলি কোনো টাস্ক পরিবর্তনের কথা জানালে চলে। ওই কাঠামো ব্যবহার করে প্রতিটি সার্ভিসকে একটিই কনফিগারেশন মালিক দিন, শেল ইতিহাস আবার চালানোর বদলে। দুইবার চালানো নিরাপদ এমন ক্রিয়াকে প্রাধান্য দিন, এবং পরিবর্তিত ফাইল কীভাবে চলমান প্রক্রিয়ায় পৌঁছাবে তা সচেতনভাবে ঠিক করুন। কোনো সার্ভিস চালু আছে নিশ্চিত করা টাস্ক তাকে আপনি এইমাত্র লেখা কনফিগারেশন পুনরায় লোড করাতে বাধ্য করে না।
প্রশাসনের ধাপগুলিও আলাদা করুন। বুটস্ট্র্যাপ সংযোগ, নিয়মিত কনফিগারেশন ও VPN-নির্ভর ব্যবস্থাপনা তিনটি আলাদা জানালা, আর পুনর্নির্মাণ যদি নিচের নেটওয়ার্ক রিসেট করে, তবে তৃতীয়টি আপনার নিজের প্রবেশাধিকার কেড়ে নিতে পারে। একটি স্বাধীন পথ রাখুন।
সচেতনভাবে ডেটা ও পরিচয় পুনরুদ্ধার করুন
কনটেইনার ভলিউম কনটেইনারের জীবনচক্র থেকে স্বাধীনভাবে থাকে, কিন্তু কনটেইনারের ভেতরের লেখনযোগ্য স্তর থাকে না, তাই ইমেজ থেকে কনটেইনার পুনরায় তৈরি করলে অ্যাপ্লিকেশন যে অবস্থা ব্যবহার করছিল তা ফিরে আসে না, যেমন ভলিউম ডকুমেন্টেশন বর্ণনা করে। অ্যাপ্লায়েন্স যে ভলিউম, বাইন্ড মাউন্ট ও বাহ্যিক সার্ভিসের উপর নির্ভর করে তা লিখে রাখুন, এবং অ্যাপ্লিকেশনের নিজস্ব ব্যাকআপ ও পুনরুদ্ধার প্রক্রিয়া ব্যবহার করুন। ত্রুটি ছাড়া চালু হওয়া কনটেইনার তার ডেটাবেস ও ফাইলগুলি মিলে গেছে তার প্রমাণ নয়।
পরিচয়ের ক্ষেত্রে ঠিক করুন আপনি একই ডিভাইস পুনরুদ্ধার করছেন না প্রতিস্থাপন নথিভুক্ত করছেন, কারণ এগুলি ভিন্ন পরিষ্কারকরণসহ ভিন্ন কাজ।
অন্যত্র পরিচয় সক্রিয় করার আগে পুরনো পিয়ারের প্রবেশাধিকার মিলিয়ে নিন, এবং কেবল তারপর পুনর্নির্মিত অ্যাপ্লায়েন্সটি বিচ্ছিন্ন বা পুনরুদ্ধার পরিবেশে পরীক্ষা করুন। প্রয়োজনীয় ডেটা, সঠিক পরিচয়, মালিকসহ আপডেট পথ এবং অভীষ্ট নেটওয়ার্ক নীতি যাচাই করুন।
বুটযোগ্য ইমেজ চারটির মধ্যে একটি ইনপুট, আর এটিই পুনরুৎপাদন করা সবচেয়ে সহজ।