লাভ:
- Bash, Python এবং PowerShell এর শক্তি বোঝার ক্ষমতা এবং কৃত্রিম বুদ্ধিমত্তা নিরাপদ, সুরক্ষিত স্ক্রিপ্ট ড্রাফ্ট তৈরি করে
- সেট -ইউও পাইপফেল, খালি ভেরিয়েবল চেকিং, ড্রাই-রান মোড এবং লগিং-এর মতো স্ক্রিপ্টগুলিতে গার্ডেল যুক্ত করার ক্ষমতা
- ধ্বংসাত্মক আদেশগুলি পড়ার এবং একটি বিচ্ছিন্ন পরিবেশে এবং প্রথমে ড্রাই-রানের সাথে চেষ্টা করার ক্ষমতা এবং স্ক্রিপ্টে গোপন এম্বেড না করার শৃঙ্খলা প্রয়োগ করার ক্ষমতা।
DevOps-এর স্পিরিটকে একটি বাক্যে সংক্ষিপ্ত করা হয়েছে: "আপনি যে কাজটি দুইবার করেন তা স্বয়ংক্রিয় করুন।" যে কোনও পুনরাবৃত্তিমূলক কাজ যা ম্যানুয়ালি করা হয় — লগ ক্লিনআপ, ব্যাকআপ নেওয়া, সার্ভারের স্বাস্থ্য পরীক্ষা, ব্যাচ ফাইল প্রসেসিং — সময় লাগে এবং শেষ পর্যন্ত মানুষের ত্রুটি দ্বারা দূষিত হয়। স্ক্রিপ্টগুলি এই কাজগুলি গ্রহণ করে: ছোট প্রোগ্রাম যা ধারাবাহিক, নির্ভরযোগ্য এবং পুনরাবৃত্তিযোগ্য পদ্ধতিতে একাধিক কমান্ড কার্যকর করে। DevOps পেশাদার প্রায়শই তিনটি ভাষা ব্যবহার করে: ব্যাশ (লিনাক্স/ইউনিক্স শেল স্ক্রিপ্টের জন্য), পাইথন (জটিল যুক্তি, API কলিং, ডেটা ম্যানিপুলেশনের জন্য), এবং পাওয়ারশেল (উইন্ডোজ এবং ক্লাউড পরিচালনার জন্য)।
AI সম্ভবত যেখানে এটি স্ক্রিপ্ট জেনারেশনের সবচেয়ে ব্যবহারিক মান অফার করে: এক-বাক্য বর্ণনা থেকে একটি কার্যকরী খসড়া তৈরি করা, একটি রহস্যময় বাগ সমাধান করা, একটি স্ক্রিপ্টকে অন্য ভাষায় অনুবাদ করা। কিন্তু অন্ধভাবে চালানো হলে একটি স্ক্রিপ্ট বিপজ্জনক — একটি ভুল rm, একটি Remove-Item -Recurse ফাইলগুলিকে অপরিবর্তনীয়ভাবে মুছে ফেলবে৷ এই কারণেই এই ইউনিটের মূলমন্ত্র হল: AI কে স্ক্রিপ্ট লিখতে দিন, আপনি এটি পড়ুন, প্রথমে এটি নিরাপদ মোডে চেষ্টা করুন, তারপর এটি চালান।
কোন ভাষা বেছে নেবেন এবং কখন? একটি মোটামুটি নিয়ম: যদি কাজটি একটি সারিতে একাধিক সিস্টেম কমান্ড চালানোর সমন্বয়ে গঠিত হয় (ফাইল অনুলিপি করুন, পরিষেবা পুনরায় চালু করুন, সংরক্ষণাগার পুনরুদ্ধার করুন) Bash হল সবচেয়ে স্বাভাবিক পছন্দ কারণ লিনাক্স সার্ভারে সর্বব্যাপী। যদি কাজের মধ্যে সিদ্ধান্তের যুক্তি, লুপিং, ডেটা ট্রান্সফরমেশন, একটি API অনুরোধ করা, বা JSON প্রসেসিং-অর্থাৎ, 20 লাইনের বেশি লজিক-পাইথন এর পঠনযোগ্যতা এবং সমৃদ্ধ লাইব্রেরির জন্য আলাদা হয়ে থাকে; একটি জটিল ব্যাশ স্ক্রিপ্ট দ্রুত বোধগম্য হয়ে ওঠে, যখন পাইথন বজায় রাখা সহজ থাকে। যদি কাজটি উইন্ডোজ সার্ভার, অ্যাক্টিভ ডিরেক্টরি, বা Azure পরিচালনার সাথে জড়িত থাকে, PowerShell হল প্রাকৃতিক পরিবেশ কারণ এর অবজেক্ট-ভিত্তিক প্রকৃতি এই প্ল্যাটফর্মগুলির সাথে গভীরভাবে একীভূত হয়। আপনি কোন ভাষা বেছে নিয়েছেন এবং কেন AI-তে একটি স্ক্রিপ্টের অনুরোধ করার সময় তা নিশ্চিত করা নিশ্চিত করে যে আউটপুটটি আপনার পরিবেশের জন্য উপযুক্ত এবং বাজে।
ধাপে ধাপে: সুরক্ষিত স্ক্রিপ্ট প্রজন্ম
- কাজ এবং পরিবেশ বর্ণনা করুন। এটা কি করবে, কোন ওএস/শেল, কোন সীমাবদ্ধতা?
- নিরাপত্তা রেলিং জন্য জিজ্ঞাসা করুন. ব্যাশে, সেট -ইউও পাইপফেল (ত্রুটির উপর থামুন, অনির্ধারিত ভেরিয়েবলে থামুন), বিপজ্জনক ক্রিয়াকলাপের জন্য নিশ্চিতকরণ প্রম্পট, মুছে ফেলার পরিবর্তে প্রথমে সরান।
- ড্রাই-রান মোডের জন্য অনুরোধ করুন। স্ক্রিপ্ট লিখতে দিন --ড্রাই-রান দিয়ে কি করতে হবে, কিন্তু তা করবেন না।
- পড়ুন এবং বুঝুন। প্রতিটি সারি কি করে তা যাচাই করুন, বিশেষ করে মুছুন/সরানো/নেটওয়ার্ক অপারেশন।
- এটি একটি বিচ্ছিন্ন পরিবেশে চেষ্টা করুন। পরীক্ষার ফোল্ডারে, নমুনা ডেটা দিয়ে এটি চালান।
- লগিং যোগ করুন. স্ক্রিপ্টটি কী করে তা রেকর্ড করতে দিন যাতে এটি পরে দেখা যায়।
নিরাপদ স্ক্রিপ্টিংয়ের প্রয়োজনীয়তা
একটি প্রোডাকশন স্ক্রিপ্টে এই গার্ডেলগুলি অন্তর্ভুক্ত করা উচিত:
- ত্রুটির ক্ষেত্রে থামানো। বাশ: সেট -ইউও পাইপফেইল। পাওয়ারশেল: $ErrorActionPreference = 'স্টপ'। এক ধাপ ব্যর্থ হলে পরের ধাপগুলো কাজ করবে না।
- অদম্যতা (পুনরাবৃত্তি)। যদি স্ক্রিপ্টটি দুবার চলে, তবে এটি দ্বিগুণ ক্ষতির মোকাবিলা করবে না; "যদি আপনার কাছে এটি ইতিমধ্যেই থাকে তবে এটি এড়িয়ে যান" যুক্তি।
- অনুমোদন এবং শুষ্ক রান. ধ্বংসাত্মক অপারেশনের জন্য "আপনি কি নিশ্চিত?" অথবা --ড্রাই-রান পতাকা।
- ইনপুট বৈধতা. প্রত্যাশিত হিসাবে পরামিতি? একটি খালি ভেরিয়েবল rm -rf "$DIR"/ কে rm -rf/ দুর্যোগে পরিণত করতে পারে।
- লগিং। কি এবং কখন করা হয়েছিল তার রেকর্ড।
টিপ: Bash-এর সবচেয়ে বিপজ্জনক ভুল হল একটি খালি ভেরিয়েবল দিয়ে মুছে ফেলা। rm -rf "$DIR" রুট ডিরেক্টরি মুছে ফেলার চেষ্টা করে যদি $DIR খালি থাকে। সেট -u (অনির্ধারিত ভেরিয়েবলে থামুন) এবং মুছে ফেলার আগে [ -n "$DIR" ] চেক করা একটি জীবন রক্ষাকারী। AI থেকে স্ক্রিপ্টের অনুরোধ করার সময় স্পষ্টভাবে এই সুরক্ষাগুলির অনুরোধ করুন।
নিরাপত্তা: গোপন এবং ধ্বংসাত্মক আদেশ
দুটি বড় বিপদ:
- স্ক্রিপ্টে সিক্রেট এম্বেড করা। পাসওয়ার্ডটি টোকেন স্ক্রিপ্টের মধ্যে প্লেইনটেক্সট হওয়া উচিত নয়; পরিবেশ পরিবর্তনশীল বা ভল্ট থেকে পড়তে হবে। স্ক্রিপ্ট গিটে যায়; সমাহিত গোপন স্থায়ী ফাঁস হয়.
- ধ্বংসাত্মক আদেশ। rm -rf, রিমুভ-আইটেম -রিকারস -ফোর্স, ড্রপ টেবিল, টেরাফর্ম ধ্বংস — যখন আপনি এইগুলি একটি স্ক্রিপ্টে দেখেন, থামুন এবং দুবার চিন্তা করুন। AI দ্বারা উত্পন্ন ধ্বংসাত্মক কমান্ডটি প্রথমে প্রোডে চেষ্টা করবেন না।
সতর্কতা: আপনি যখন AI কে বলবেন "এই ফাইলগুলিকে পরিষ্কার করে এমন একটি স্ক্রিপ্ট লিখতে", সাবধানতার সাথে অনুসন্ধানের সুযোগ পড়ুন ... -delete বা rm কমান্ড এটি তৈরি করে। একটি ওয়াইল্ডকার্ড (*) বা ভুল পথ আপনি মুছে ফেলতে চান তার চেয়ে বেশি মুছে ফেলবে। সর্বদা মুছে ফেলার পরিবর্তে "লিস্ট টু ডিলিট" মোড দিয়ে প্রথমে স্ক্রিপ্টটি চালান।
তিনটি ভাষার তুলনা
মানদণ্ড
বাশ
পাইথন
পাওয়ারশেল
যেখানে এটি সেরা
লিনাক্স শেল, কমান্ড চেইন
জটিল যুক্তি, API, ডেটা
উইন্ডোজ ক্লাউড ম্যানেজমেন্ট
শেখার বক্ররেখা
মাঝারি (ফাঁদে আটকে)
সহজ
মাঝারি
ত্রুটি হ্যান্ডলিং
সেট -ইউও পাইপফেল
চেষ্টা করুন/ব্যতীত
চেষ্টা/ধরা, -ত্রুটি কর্ম
বহনযোগ্যতা
ইউনিক্স/লিনাক্স/ম্যাক
সর্বত্র
ক্রস-প্ল্যাটফর্ম (PS 7+)
যখন
সংক্ষেপে, সিস্টেম কাজ করে
20 লাইনের বেশি লজিক
উইন্ডোজ/এডি/অ্যাজুর
তিনটি মিনি কেস
কেস 1 - 2 ঘন্টার নৈপুণ্য 5 মিনিটে। একজন প্রকৌশলী প্রতি সপ্তাহে 40টি সার্ভার থেকে লগ সংগ্রহ এবং সংরক্ষণাগারে 2 ঘন্টা ব্যয় করছিলেন। তার কাছে এআই ছিল টাস্ক বর্ণনা এবং সেট -ইউও পাইপফেল + ড্রাই-রান সুরক্ষা এবং একটি ব্যাশ স্ক্রিপ্ট তৈরি করে। প্রথমে ড্রাই-রান দিয়ে স্ক্রিপ্টটি যাচাই করেছে, তারপর এটিকে নির্ধারিত টাস্কের সাথে লিঙ্ক করেছে (ক্রোন)। সাপ্তাহিক কাজ কমিয়ে 5 মিনিট করা হয় এবং মানুষের ত্রুটি দূর হয়।
কেস 2 - নাল পরিবর্তনশীল বিপর্যয় এড়ানো। AI দ্বারা উত্পাদিত ক্লিনিং স্ক্রিপ্টে rm -rf "$TARGET"/* ছিল, কিন্তু TARGET কোথাও বরাদ্দ না করা থাকলে, এটি খালি থেকে যায়। প্রকৌশলী হিসেবে পড়ার সময় তিনি এটি উপলব্ধি করেছিলেন; সেট -u এবং [ -n "$TARGET" ] || প্রস্থান 1 নিয়ন্ত্রণ যোগ করা হয়েছে। পরীক্ষার সময় ভেরিয়েবলটি শূন্য থেকে যায় এবং স্ক্রিপ্টটি বিপর্যয়ের পরিবর্তে নিরাপদে বন্ধ হয়ে যায়।
কেস 3 — এমবেডেড টোকেন ক্যাপচার করা হয়েছে। সুবিধার জন্য, AI পাইথন স্ক্রিপ্টে একটি TOKEN = "ghp_realtoken" লাইন যোগ করেছে যা একটি API (উদাহরণ হিসাবে) অনুরোধ করে। প্রকৌশলী এটিকে সরিয়ে দিয়ে os.environ["TOKEN"] দিয়ে এনভায়রনমেন্ট ভেরিয়েবল থেকে রিডিং এ পরিবর্তন করেন এবং টোকেনটি বাতিল ও নবায়ন করেন। যদি স্ক্রিপ্টটি গিটে যায় তবে টোকেনটি সর্বজনীন হবে।
চারটি অনুলিপিযোগ্য টেমপ্লেট
1) নিরাপদ ব্যাশ স্ক্রিপ্ট:
একটি ব্যাশ স্ক্রিপ্ট লিখুন: [টাস্ক]। বাধ্যতামূলক নিয়ম:- শুরুতে `সেট -ইউও পাইপফেইল`।- মুছে ফেলা/সরানো যেখানেই ভেরিয়েবলটি খালি নেই তা পরীক্ষা করুন।- `-ড্রাই-রান` পতাকা: এই মোডে কী করতে হবে তা লিখুন কিন্তু করবেন না।- গোপনটি এম্বেড করবেন না; পরিবেশ পরিবর্তনশীল থেকে পড়ুন। - প্রতিটি ধাপে তথ্যপূর্ণ লগ প্রিন্ট করুন। স্ক্রিপ্ট মন্তব্য করুন এবং সবচেয়ে বিপজ্জনক লাইন চিহ্নিত করুন.
2) স্ক্রিপ্ট বিবরণ/নিয়ন্ত্রণ:
নিম্নলিখিত স্ক্রিপ্ট লাইনটি লাইন দ্বারা বর্ণনা করুন এবং নিরাপত্তার জন্য পরীক্ষা করুন: এমবেডেড গোপন, ধ্বংসাত্মক কমান্ড (rm/Remove-Item/DROP), অপ্রমাণিত ইনপুট, ত্রুটি পরিচালনার অভাব? প্রতিটি ঝুঁকি গুরুত্ব ও সংশোধনের ক্রমে লিখুন। স্ক্রিপ্ট: [CODE]
3) ভাষা অনুবাদ:
সেই [উৎস ভাষা] স্ক্রিপ্টটিকে [টার্গেট ল্যাঙ্গুয়েজ] এ অনুবাদ করুন। আচরণটি মৌখিকভাবে রাখুন, টার্গেট ল্যাঙ্গুয়েজের ইডিওম্যাটিক এরর হ্যান্ডলিং ব্যবহার করুন, যেকোন এমবেডেড সিক্রেটকে এনভায়রনমেন্ট ভেরিয়েবলে নিয়ে যান। আলাদাভাবে আচরণ করতে পারে এমন পয়েন্টগুলি নোট করুন। স্ক্রিপ্ট: [CODE]
4) পরিকল্পিত কাজ (ক্রন/নির্ধারিত কাজ):
এই স্ক্রিপ্টটি ব্যবহার করুন [ফ্রিকোয়েন্সি: যেমন একটি সময়সূচীর সংজ্ঞা লিখুন ([cron/ systemd টাইমার/ Windows Task Scheduler]) যেটি [প্রতি রাতে 02:00 এ] চলবে। ব্যর্থতার বিষয়ে কীভাবে আমাকে সতর্ক করবেন (লগ/প্রস্থান কোড/বিজ্ঞপ্তি) এবং কীভাবে ওভারল্যাপ প্রতিরোধ করবেন তা যোগ করুন।
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল: "একটি স্ক্রিপ্ট লিখুন যা পুরানো ফাইল মুছে দেয়।"
ফলাফল: একটি সুযোগহীন, অরক্ষিত, শুষ্ক-চালিত rm স্ক্রিপ্ট; যদি এটি ভুল ফোল্ডারে চলে তবে এটি অপরিবর্তনীয়ভাবে মুছে যাবে।
শক্তিশালী: "/var/log/app-এর অধীনে 30 দিনের বেশি পুরানো .log ফাইলগুলি মুছতে একটি ব্যাশ স্ক্রিপ্ট লিখুন। সেট -euo পাইপফেইল ব্যবহার করুন, টার্গেট ডিরেক্টরি খালি থাকলে বন্ধ করুন, প্রথমে --dry-run দিয়ে কী মুছবেন তা তালিকা করুন, প্রতিটি লেনদেন লগ করুন, গোপন এম্বেড করবেন না। সবচেয়ে বিপজ্জনক লাইন চিহ্নিত করুন।"
পার্থক্য: দ্বিতীয় দাবিটি পূর্ণ সুযোগ, নিরাপত্তা পাহারারল এবং শুষ্ক-চালিত প্রত্যাশা দেয়; আউটপুট নিরাপদে চালানো যাবে.
সাধারণ ভুল
- স্ক্রিপ্ট না পড়েই চলছে। বিশেষ করে সারি মুছুন/সরান বিপর্যয়ের দিকে নিয়ে যান।
- খালি ভেরিয়েবলের জন্য পরীক্ষা করা হচ্ছে না। rm -rf "$X"/ দিয়ে রুট ডিরেক্টরি মুছে ফেলার ক্লাসিক বিপর্যয়।
- `set -euo pipefail` / `-ErrorAction Stop` এড়িয়ে যান। এক ধাপ ফায়ার, স্ক্রিপ্ট অন্ধভাবে চলতে থাকে.
- স্ক্রিপ্টে সিক্রেট এম্বেড করা। গিট থেকে ক্রমাগত ফাঁস।
- ড্রাই-রান ছাড়াই ধ্বংসাত্মক প্রক্রিয়া। প্রথমে "কি করতে হবে আমাকে দেখান", তারপর এটি করুন।
- পণ্য প্রথম চেষ্টা করা. বিচ্ছিন্ন পরীক্ষার পরিবেশ ছাড়াই চলছে।
সংক্ষেপে
DevOps অটোমেশন শিল্প; পুনরাবৃত্তিমূলক কাজ ব্যাশ, পাইথন এবং পাওয়ারশেল স্ক্রিপ্টগুলিতে অর্পণ করা হয়। AI স্ক্রিপ্টের খসড়া তৈরি, ডিবাগিং এবং ভাষা অনুবাদের ক্ষেত্রে খুব সুবিধাজনক — তবে একটি সুরক্ষিত স্ক্রিপ্টে সেট -ইউও পাইপফেইল, নাল ভেরিয়েবল চেকিং, ড্রাই-রান মোড, এম্বেডেড গোপনহীনতা এবং লগিং এর মতো ত্রুটির রক্ষক অন্তর্ভুক্ত করা উচিত। প্রতিটি স্ক্রিপ্ট পড়া এবং পরীক্ষা করা আপনার দায়িত্ব, বিশেষ করে যেগুলি ধ্বংসাত্মক কমান্ড রয়েছে, একটি বিচ্ছিন্ন পরিবেশে এবং প্রথমে ড্রাই-রান।
আবেদন টাস্ক
একটি পুনরাবৃত্ত কাজ চয়ন করুন (লগ সংরক্ষণাগার, ব্যাকআপ, পরিষ্কার করা)। (1) AI-কে "Secure Bash স্ক্রিপ্ট" টেমপ্লেট সহ একটি সুরক্ষিত স্ক্রিপ্ট তৈরি করতে দিন। (2) "স্ক্রিপ্ট বিবরণ/অডিট" টেমপ্লেট হিসাবে নিরাপত্তার জন্য একই স্ক্রিপ্ট পরীক্ষা করুন এবং AI ফ্ল্যাগ করা সবচেয়ে বিপজ্জনক লাইনটি খুঁজুন। (3) একটি টেস্ট ফোল্ডারে নমুনা ফাইল সহ স্ক্রিপ্ট চালানোর মাধ্যমে এর আচরণ যাচাই করুন, প্রথমে --dry-run দিয়ে।
চেকলিস্ট
- [ ] আমি যে টাস্কটি চাই না তা লিখেছি, OS/শেল এবং সিকিউরিটি গার্ডেল।
- [ ] স্ক্রিপ্টে সেট -euo pipefail / -ErrorAction Stop এর মত স্টপিং এরর আছে।
- [] আমি মুছে ফেলা/সরানোর আগে খালি ভেরিয়েবল এবং ইনপুট চেক যোগ করেছি।
- ধ্বংসাত্মক ক্রিয়াকলাপগুলির জন্য --ড্রাই-রান/নিশ্চিতকরণ প্রক্রিয়া রয়েছে।
- [ ] স্ক্রিপ্টে কোনো গোপন কথা নেই; মানগুলি পরিবেশ পরিবর্তনশীল/কেস থেকে আসে।
- [ ] আমি ড্রাই-রান সহ একটি বিচ্ছিন্ন পরীক্ষার পরিবেশে প্রথম পরীক্ষা দিয়েছিলাম।