এই মডিউল কী করে #
প্রতিবার একটি সার্ভার চালু করার সময় আপনাকে বেসলাইন গোছাতে হয়: মুলতুবি হালনাগাদ ইনস্টল করা, প্রোগ্রামগুলো কোন ভাষায় কথা বলবে তা ঠিক করা, সঠিক টাইম জোন নির্ধারণ করা, মেশিনকে একটি নাম দেওয়া এবং ঘড়িটি সঠিক সময়ে আছে তা নিশ্চিত করা। এগুলো ছোট কিন্তু পুনরাবৃত্তিমূলক কাজ, এবং প্রতিটির নিজস্ব সিনট্যাক্সসহ নিজস্ব Linux কমান্ড আছে।
os মডিউলটি এই সবগুলোকে একটি সুসংগত ইন্টারফেসের পেছনে একত্র করে। এটি সিস্টেম হালনাগাদ করে (বা কেবল নিরাপত্তা অংশটুকু) এবং আপনাকে জানায় রিবুট প্রয়োজন কিনা; এটি unattended upgrades সক্রিয় করে যাতে নিরাপত্তা হালনাগাদ নিজে থেকে প্রয়োগ হয়; এটি locale, টাইম জোন ও hostname ইডেম্পোটেন্টভাবে নির্ধারণ করে; এবং এটি NTP সিংক্রোনাইজেশন পরিচালনা করে যাতে সময় কখনো সরে না যায়। প্রতিটি ক্রিয়া পুনরাবৃত্তি করা নিরাপদ: যদি এটি ইতিমধ্যে কাঙ্ক্ষিত অবস্থায় থাকে, তবে এটি কিছুই স্পর্শ করে না।
যে সাবকমান্ডগুলো কিছু বদলায় (হালনাগাদ, locale, টাইম জোন, hostname বা NTP নির্ধারণ) সেগুলো সিস্টেমে লেখে এবং root প্রিভিলেজ প্রয়োজন: sudo দিয়ে চালান। যেগুলো কেবল অনুসন্ধান করে (status, list, check) সেগুলোর এটি প্রয়োজন নেই।
সাধারণ কাজ #
আপনি কী করতে চান তা বেছে নিন। প্রতিটি রেসিপিতে কমান্ডটি আগে থেকেই লেখা আছে — শুধু উদাহরণের মানগুলো নিজেরটি দিয়ে বদলান এবং কপি করুন চাপুন।
1
হালনাগাদ দেখুন ও প্রয়োগ করুন
কী মুলতুবি আছে যাচাই করুন এবং মুহূর্তেই হালনাগাদ হয়ে যান।
প্রথমে সামগ্রিক অবস্থা এবং কোন হালনাগাদগুলো অপেক্ষা করছে তা দেখুন:
$ imaxe os status
$ imaxe os checkমুলতুবি হালনাগাদগুলো প্রয়োগ করুন। আপনি যদি কেবল নিরাপত্তা হালনাগাদ চান এবং প্রয়োজনে রিবুট করাতে চান, ফ্ল্যাগগুলো যোগ করুন:
$ sudo imaxe os update --security-only --reboot-if-neededimaxe os reboot-required ব্যবহার করুন (প্রস্থান কোড 0 = হ্যাঁ, প্রয়োজন)।2
নিরাপত্তা হালনাগাদ স্বয়ংক্রিয় করুন
নিরাপত্তা হালনাগাদগুলো আপনার নজরদারি ছাড়াই নিজে থেকে প্রয়োগ হতে দিন।
unattended upgrades সক্রিয় করুন। এটি আপনার জন্য unattended-upgrades কনফিগারেশন তৈরি করে:
$ sudo imaxe os autoupdate enableএটি সক্রিয় কিনা এবং পরবর্তী চালানো কখন হবে তা নিশ্চিত করুন:
$ imaxe os autoupdate statussudo imaxe os autoupdate disable।3
টাইম জোন ও সময় নির্ধারণ করুন
আপনার IANA জোন নির্ধারণ করুন এবং ঘড়ি NTP-এর মাধ্যমে সিংক্রোনাইজ হয় তা নিশ্চিত করুন।
আপনার জোনের সঠিক নাম মনে না থাকলে, প্রথমে এটি ফিল্টার করুন:
$ imaxe os timezone list Europeজোন নির্ধারণ করুন (এটি ইডেম্পোটেন্ট) এবং সময় সিংক্রোনাইজেশন সক্রিয় করুন:
$ sudo imaxe os timezone set Europe/Madrid
$ sudo imaxe os timesync enableimaxe os timesync status দিয়ে NTP যাচাই করুন।4
সিস্টেমের ভাষা নির্ধারণ করুন
LANG সংজ্ঞায়িত করুন এবং locale এখনো না থাকলে তা তৈরি করুন।
সিস্টেমের ভাষা নির্ধারণ করুন। কমান্ডটি locale তৈরি করে এবং locales প্যাকেজ না থাকলে তা ইনস্টল করে:
$ sudo imaxe os locale set es_ES.UTF-8LANG না বদলে আরও ভাষা উপলব্ধ রাখতে চান? সেগুলো আলাদাভাবে তৈরি করুন:
$ sudo imaxe os locale generate es_ES.UTF-8 en_US.UTF-8imaxe os locale status দিয়ে বর্তমান LANG ও তৈরি হওয়াগুলো পর্যালোচনা করুন।5
মেশিনের নাম বদলান
একটি পরিষ্কার hostname নির্ধারণ করুন এবং /etc/hosts সুসংগত রাখুন।
/etc/hosts সুসংগত রাখুন।hostname নির্ধারণ করুন। কেবল অক্ষর, সংখ্যা ও হাইফেন অনুমোদিত, সর্বোচ্চ 63 অক্ষর:
$ sudo imaxe os hostname set web-01/etc/hosts তার সাথে মিলিয়ে হালনাগাদ হয়। imaxe os hostname status দিয়ে এটি যাচাই করুন।ইনস্ট্যান্সটি যদি cloud-init দ্বারা পরিচালিত হয়, এটি প্রতিটি বুটে hostname পুনর্লিখন করতে পারে। সেজন্যই os.yml ডিফল্টভাবে hostname ফিল্ডটি খালি রাখে: কেবল তখনই এটি নির্ধারণ করুন যখন আপনি জানেন cloud-init এটি ওভাররাইট করবে না।
সারসংক্ষেপ #
imaxe os <subcomando> [<acción>] [<argumento>...] [flags]যে সাবকমান্ডগুলো সিস্টেম বদলায় (হালনাগাদ, unattended upgrades, locale, টাইম জোন, hostname, NTP) সেগুলোর জন্য root প্রিভিলেজ প্রয়োজন (sudo ব্যবহার করুন)। স্ক্রিপ্টিং-এর উপযোগী মেশিন-পাঠযোগ্য আউটপুট পেতে যেকোনো status বা check-এ --json যোগ করুন।
সাবকমান্ড #
| সাবকমান্ড | কী করে | অ্যাকশন / ফ্ল্যাগ |
|---|---|---|
| status | সিস্টেম হালনাগাদ অবস্থার সারসংক্ষেপ। | --json |
| update | মুলতুবি হালনাগাদগুলো এখনই প্রয়োগ করে। | --security-only, --reboot-if-needed |
| check | প্রয়োগ না করে মুলতুবি হালনাগাদের তালিকা দেয়। | --json |
| reboot-required | রিবুট মুলতুবি আছে কিনা নির্দেশ করে (প্রস্থান 0 = হ্যাঁ, 1 = না)। | --json |
| autoupdate | unattended স্বয়ংক্রিয় হালনাগাদ পরিচালনা করে। | enable · disable · status |
| locale | সিস্টেম locale পরিচালনা করে (প্রয়োজনীয় জিনিস তৈরি ও ইনস্টল করে)। | status · list · set · generate |
| timezone | সিস্টেম টাইম জোন দেখায় বা বদলায়। | status · list · set |
| hostname | hostname দেখায় বা বদলায় (/etc/hosts-এর সাথে সুসংগত)। | status · set |
| timesync | সময় সিংক্রোনাইজেশন (NTP) পরিচালনা করে। | status · enable · disable |
আর্গুমেন্ট ও ফ্ল্যাগ #
| আর্গুমেন্ট / ফ্ল্যাগ | ধরন | যেখানে প্রযোজ্য | বিবরণ |
|---|---|---|---|
| --json | bool | status · check | ফলাফল stdout-এ কাঠামোবদ্ধ JSON হিসেবে দেয়, যা স্ক্রিপ্টিং-এর উপযোগী। |
| --security-only | bool | update | কেবল নিরাপত্তা হালনাগাদগুলো প্রয়োগ করে। |
| --reboot-if-needed | bool | update | হালনাগাদের পর সিস্টেমের প্রয়োজন হলে স্বয়ংক্রিয়ভাবে রিবুট করে। |
| <locale> আবশ্যক | string… | locale set · locale generate | es_ES.UTF-8 ফরম্যাটে locale। set-এ এটি একটিমাত্র (সিস্টেম LANG); generate-এ, তৈরি করার জন্য এক বা একাধিক। |
| <zona> আবশ্যক | string | timezone set | IANA টাইম জোন, যেমন Europe/Madrid। |
| <filtro> | string | timezone list | জোন তালিকা সংকুচিত করার জন্য ঐচ্ছিক ফিল্টার (যেমন Europe)। |
| <nuevo> আবশ্যক | string | hostname set | নতুন hostname: ছোট হাতের a-z, অঙ্ক 0-9 ও হাইফেন, সর্বোচ্চ 63 অক্ষর। |
ফাইল ও পাথ #
| পাথ | বিষয়বস্তু |
|---|---|
| /etc/imaxe/os.yml | মডিউলের কনফিগারেশন: unattended upgrades, হালনাগাদ নীতি, locale, টাইম জোন, hostname ও NTP। |
| /var/log/imaxe/os.log | প্রতিটি হালনাগাদ ও সিস্টেম কনফিগারেশন পরিবর্তনের কাঠামোবদ্ধ লগ। |
| /etc/apt/apt.conf.d/20auto-upgrades | autoupdate enable দ্বারা তৈরি কনফিগ যা unattended upgrades সক্রিয় করে। |
| /etc/apt/apt.conf.d/50unattended-upgrades | unattended-upgrades-এর নিয়ম (কী হালনাগাদ হয়, রিবুট উইন্ডো, বাদ দেওয়ার তালিকা)। |
os.yml-এর উদাহরণ:
unattended:
enabled: true
security_only: true
automatic_reboot: false
automatic_reboot_time: "03:00"
blacklist: []
update:
default_security_only: false
locale:
lang: es_ES.UTF-8
generate: [es_ES.UTF-8, en_US.UTF-8]
timezone: Europe/Madrid
hostname: ""
ntp:
enabled: trueখালি ফিল্ড ("") মানে "স্পর্শ কোরো না": মডিউলটি সেই সেটিংটি ঠিক যেমন আছে তেমনই রাখে। সেজন্যই hostname খালি আসে — ইনস্ট্যান্স সাধারণত এটি cloud-init-এর মাধ্যমে পরিচালনা করে।
প্রস্থান কোড ও লগ #
প্রতিটি চালানো একটি কোড ফেরত দেয় যা আপনি echo $? দিয়ে যাচাই করতে পারেন — স্ক্রিপ্টে চেইন করার জন্য উপযোগী:
reboot-required তার উত্তর হিসেবে প্রস্থান কোড ব্যবহার করে: 0 মানে "হ্যাঁ, একটি রিবুট প্রয়োজন" এবং 1 মানে "না"। এভাবে আপনি টেক্সট পার্স না করেই এটি সরাসরি একটি স্ক্রিপ্টে চেইন করতে পারেন।
ডিবাগ করার সময় লগটি সরাসরি অনুসরণ করুন:
$ sudo tail -f /var/log/imaxe/os.logসমস্যা সমাধান #
| উপসর্গ | সম্ভাব্য কারণ | সমাধান |
|---|---|---|
| USAGE আসে (কোড 2) | একটি আবশ্যক আর্গুমেন্ট অনুপস্থিত (locale, জোন বা hostname) বা ফরম্যাট অবৈধ। | আর্গুমেন্ট টেবিল পর্যালোচনা করুন: hostname কেবল a-z0-9 ও হাইফেন অনুমোদন করে (≤63)। |
| রিবুটের পর hostname আবার আগের অবস্থায় ফিরে যায় | cloud-init প্রতিটি বুটে hostname পুনর্লিখন করে। | cloud-init-এ hostname পরিচালনা নিষ্ক্রিয় করুন, অথবা os.yml-এ ফিল্ডটি খালি রাখুন এবং হাতে নির্ধারণ করবেন না। |
locale set ধীর বা ব্যর্থ হয় | locales প্যাকেজ উপস্থিত নেই এবং এটি ইনস্টল/তৈরি করতে হয়। | সিস্টেম হালনাগাদ রেখে আবার চেষ্টা করুন (imaxe os update); মডিউলটি locales ইনস্টল করে ও locale নিজে থেকে তৈরি করে। |
| সময় এখনো ভুল | NTP সিংক্রোনাইজেশন নিষ্ক্রিয়। | sudo imaxe os timesync enable দিয়ে এটি সক্রিয় করুন এবং imaxe os timesync status দিয়ে যাচাই করুন। |
| unattended upgrades প্রয়োগ হয় না | এই মেশিনে unattended upgrades কখনো সক্রিয় করা হয়নি। | sudo imaxe os autoupdate enable চালান এবং imaxe os autoupdate status দিয়ে নিশ্চিত করুন। |
সিস্টেম মডিউল নিয়ে আটকে গেছেন?
«imaxe <module> status --json» এর আউটপুট সহ আমাদের লিখুন, আমরা দ্রুত উত্তর দেব।