আমরা আনন্দের সাথে জানাচ্ছি যে, Psono Terraform Provider-এর বিটা সংস্করণ এখন পাবলিক Terraform Registry-এ পাওয়া যাচ্ছে।
এখন ইন্সট্রাকচার টিমগুলো পূর্বে তৈরি করা Psono Environment Variables এন্ট্রির ভেতরে ব্যক্তিগত কীগুলো Terraform workflow’র অংশ হিসেবে পরিচালনা করতে পারবে। এই provider বিদ্যমান মান সংরক্ষণ করতে পারে, নতুন পাসওয়ার্ড জেনারেট করতে পারে, ম্যানেজ করা মান ঘুরিয়ে (rotate) নিতে পারে, বাইরের সরবরাহকৃত মান সংরক্ষণ করতে পারে এবং Terraform-এর ephemeral রিসোর্সের মাধ্যমে সিক্রেট পড়তে পারে।
ইনফ্রাস্ট্রাকচার অ্যাজ কোড-এ সিক্রেট ধরার ক্ষেত্রে বাড়তি সতর্কতা প্রয়োজন। সেনসিটিভ ফ্ল্যাগটি সাধারণ CLI আউটপুট থেকে ভ্যালুটি লুকাতে পারে, তবে এটি Terraform state থেকে অবশ্যই সেই মানটি সরিয়ে রাখবে—এমন নয়। Psono Provider, Terraform-এর write-only ও ephemeral ক্ষমতা ব্যবহার করে এই সমস্যা এড়ায় এবং Terraform 1.11 বা তার নতুন সংস্করণ প্রয়োজন করে।
এই provider তিনটি সাধারণ workflow সাপোর্ট করে:
ফলে বাস্তব গোপন তথ্য শুধুমাত্র Psono-তে রেখে Terraform-এ গোপন তথ্যের লাইফসাইকেল ওপারেশন অন্তর্ভুক্ত করা সম্ভব।
এই provider একটি সীমিত Psono API কী ব্যবহার করে। আপনি কেবল সেই Environment Variables এন্ট্রিগুলো নির্ধারণ করবেন, যেগুলো Terraform-এর প্রয়োজন, এবং সমস্ত অপারেশনের জন্য read অনুমতি দিবেন। কী তৈরি, আপডেট, ঘুরানো (rotate), অথবা ডিলিট করতে write অনুমতি প্রয়োজন হবে। Provider-এর জন্য আনরেস্ট্রিক্টেড API key প্রয়োজন হয় না এবং এটি কোনো vault entry, folder, বা datastore তৈরি করতে পারে না।
এনক্রিপশন ও ডিক্রিপশন লোকালি provider-এর মাঝেই হয়। HTTPS সার্টিফিকেট ভেরিফিকেশন নিষ্ক্রিয় করা যাবে না, এবং ব্যক্তিগত সার্টিফিকেট অথরিটি PEM CA bundle-এর মাধ্যমে যোগ করা যেতে পারে। প্রডাকশন সিস্টেমের জন্য সর্বদা HTTPS Psono URL ব্যবহার করা উচিত।
Terraform 1.11 বা নতুন কোনো সংস্করণ প্রয়োজন। আপনার Terraform কনফিগারেশনে provider যোগ করুন:
terraform {
required_version = ">= 1.11.0"
required_providers {
psono = {
source = "psono/psono"
version = "~> 1.0"
}
}
}
provider "psono" {}
Terraform ফাইলগুলোতে credential না রেখে পরিবেশ পরিবর্তনশীল (environment variables) ব্যবহার করে ক্রিডেনশিয়াল কনফিগার করুন:
export PSONO_SERVER_URL='https://psono.example.com/server'
export PSONO_API_KEY_ID='REPLACE_WITH_API_KEY_ID'
export PSONO_API_SECRET_KEY='REPLACE_WITH_API_SECRET_KEY'
এরপর কাজের ডিরেক্টরি initialize করুন:
terraform init
Terraform Signed Provider Release ডাউনলোড করে এবং checksum signature যাচাই করে।
নিম্নলিখিত রিসোর্স বিদ্যমান Psono Environment Variables এন্ট্রিতে DB_PASSWORD পরিচালনা করে:
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
length = 32
min_lower = 4
min_upper = 4
min_numeric = 4
min_special = 4
rotation_version = 1
}
যদি কি ইতোমধ্যেই থেকে থাকে, তাহলে provider সেটিকে গ্রহণ (adopt) করে কিন্তু মান পরিবর্তন করে না। যদি না থাকে, তাহলে provider নতুন একটি মান জেনারেট ও স্টোর করে। উৎপন্ন মানটি ম্যানেজড রিসোর্সের মাধ্যমে ফেরত দেয়া হয় না এবং Terraform state-এ আসে না।
Terraform যখন রিপ্লেসমেন্ট তৈরি করা উচিত, তখন rotation_version বাড়ান। এটি মূলত গৃহীত বা ইম্পোর্ট করা মানও রিপ্লেস করবে, তাই ঘুরানোর (rotation) পরিবর্তনগুলি প্রয়োগ করার আগে রিভিউ করা উচিত।
অন্য provider-থেকে পাওয়া কোনো ephemeral মান value_wo-এর মাধ্যমে Psono'তে লেখা যাবে:
ephemeral "random_password" "database" {
length = 32
}
resource "psono_environment_variable" "database_password" {
secret_id = var.psono_environment_variables_secret_id
name = "DB_PASSWORD"
value_wo = ephemeral.random_password.database.result
value_wo_version = 1
}
Terraform অপারেশনের সময় মানটি ব্যবহারযোগ্য, কিন্তু plan বা state-এ সংরক্ষিত হয় না। Terraform যখন মান রিপ্লেস করা উচিত, তখন value_wo_version বাড়িয়ে দিন।
কোনো ম্যানেজড রিসোর্স ধ্বংস করলে (destroy) এর Psono key ডিফল্টভাবে থেকে যায়। এটি সেই মানগুলো রক্ষা করে, যেগুলো Terraform গ্রহণ করেছিল কিন্তু তৈরি করেনি। Destroy বা রিসোর্স রিপ্লেসমেন্টের সময় কোনো key প্রত্যক্ষভাবে Psono-থেকে ডিলিট করাতে চাইলে কেবল deletion_policy = "Delete" নির্ধারণ করুন।
Provider-টি ওপেন সোর্স এবং এখনই পাওয়া যাচ্ছে:
বিটা সংস্করণটি ইচ্ছাকৃতভাবে Environment Variables এন্ট্রি ও সীমিত API key’র ওপর ফোকাস করে। এতে অনুমতি সীমিত থাকে, অপ্রয়োজনীয় vault অ্যাকসেস এড়ানো যায়, এবং Terraform থেকে নিরাপদভাবে অপারেশনাল সিক্রেট ব্যবস্থাপনার জন্য একটি কার্যকর ভিত্তি দেয়।