{"componentChunkName":"component---src-templates-blog-template-js","path":"/bn/blog/introducing-the-psono-terraform-provider","result":{"data":{"markdownRemark":{"html":"<h1>Psono Terraform Provider পরিচিতি</h1>\n<p>আমরা আনন্দের সাথে জানাচ্ছি যে, Psono Terraform Provider-এর বিটা সংস্করণ এখন পাবলিক\n<a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Terraform Registry</a>-এ পাওয়া যাচ্ছে।</p>\n<p>এখন ইন্সট্রাকচার টিমগুলো পূর্বে তৈরি করা Psono Environment Variables এন্ট্রির ভেতরে ব্যক্তিগত কীগুলো Terraform workflow’র অংশ হিসেবে পরিচালনা করতে পারবে। এই provider বিদ্যমান মান সংরক্ষণ করতে পারে, নতুন পাসওয়ার্ড জেনারেট করতে পারে, ম্যানেজ করা মান ঘুরিয়ে (rotate) নিতে পারে, বাইরের সরবরাহকৃত মান সংরক্ষণ করতে পারে এবং Terraform-এর ephemeral রিসোর্সের মাধ্যমে সিক্রেট পড়তে পারে।</p>\n<h2>Terraform state-এ সিক্রেট না রেখে ব্যবস্থাপনা</h2>\n<p>ইনফ্রাস্ট্রাকচার অ্যাজ কোড-এ সিক্রেট ধরার ক্ষেত্রে বাড়তি সতর্কতা প্রয়োজন। সেনসিটিভ ফ্ল্যাগটি সাধারণ CLI আউটপুট থেকে ভ্যালুটি লুকাতে পারে, তবে এটি Terraform state থেকে অবশ্যই সেই মানটি সরিয়ে রাখবে—এমন নয়। Psono Provider, Terraform-এর write-only ও ephemeral ক্ষমতা ব্যবহার করে এই সমস্যা এড়ায় এবং Terraform 1.11 বা তার নতুন সংস্করণ প্রয়োজন করে।</p>\n<p>এই provider তিনটি সাধারণ workflow সাপোর্ট করে:</p>\n<ul>\n<li>Psono-তে একটি মান উৎপন্ন করা, যা ম্যানেজড রিসোর্সের মাধ্যমে ফেরত দেয়া হবে না।</li>\n<li>write-only আর্গুমেন্টের মাধ্যমে একটি মান সরবরাহ করা, যাতে Terraform সেটি plan বা state-এ সংরক্ষণ না করে।</li>\n<li>একটি বিদ্যমান মান ephemeral রিসোর্সের মাধ্যমে পড়া এবং শুধুমাত্র অন্য কোনো ephemeral বা write-only কনটেক্সটে সেটি ফরোয়ার্ড করা।</li>\n</ul>\n<p>ফলে বাস্তব গোপন তথ্য শুধুমাত্র Psono-তে রেখে Terraform-এ গোপন তথ্যের লাইফসাইকেল ওপারেশন অন্তর্ভুক্ত করা সম্ভব।</p>\n<h2>সীমিত অ্যাক্সেস ও লোকাল এনক্রিপশন</h2>\n<p>এই provider একটি সীমিত Psono API কী ব্যবহার করে। আপনি কেবল সেই Environment Variables এন্ট্রিগুলো নির্ধারণ করবেন, যেগুলো Terraform-এর প্রয়োজন, এবং সমস্ত অপারেশনের জন্য read অনুমতি দিবেন। কী তৈরি, আপডেট, ঘুরানো (rotate), অথবা ডিলিট করতে write অনুমতি প্রয়োজন হবে। Provider-এর জন্য আনরেস্ট্রিক্টেড API key প্রয়োজন হয় না এবং এটি কোনো vault entry, folder, বা datastore তৈরি করতে পারে না।</p>\n<p>এনক্রিপশন ও ডিক্রিপশন লোকালি provider-এর মাঝেই হয়। HTTPS সার্টিফিকেট ভেরিফিকেশন নিষ্ক্রিয় করা যাবে না, এবং ব্যক্তিগত সার্টিফিকেট অথরিটি PEM CA bundle-এর মাধ্যমে যোগ করা যেতে পারে। প্রডাকশন সিস্টেমের জন্য সর্বদা HTTPS Psono URL ব্যবহার করা উচিত।</p>\n<h2>শুরু করুন</h2>\n<p>Terraform 1.11 বা নতুন কোনো সংস্করণ প্রয়োজন। আপনার Terraform কনফিগারেশনে provider যোগ করুন:</p>\n<pre><code class=\"language-hcl\">terraform {\n  required_version = \">= 1.11.0\"\n\n  required_providers {\n    psono = {\n      source  = \"psono/psono\"\n      version = \"~> 1.0\"\n    }\n  }\n}\n\nprovider \"psono\" {}\n</code></pre>\n<p>Terraform ফাইলগুলোতে credential না রেখে পরিবেশ পরিবর্তনশীল (environment variables) ব্যবহার করে ক্রিডেনশিয়াল কনফিগার করুন:</p>\n<pre><code class=\"language-bash\">export PSONO_SERVER_URL='https://psono.example.com/server'\nexport PSONO_API_KEY_ID='REPLACE_WITH_API_KEY_ID'\nexport PSONO_API_SECRET_KEY='REPLACE_WITH_API_SECRET_KEY'\n</code></pre>\n<p>এরপর কাজের ডিরেক্টরি initialize করুন:</p>\n<pre><code class=\"language-bash\">terraform init\n</code></pre>\n<p>Terraform Signed Provider Release ডাউনলোড করে এবং checksum signature যাচাই করে।</p>\n<h2>মান উৎপন্ন ও ঘুরানো (rotate) করুন</h2>\n<p>নিম্নলিখিত রিসোর্স বিদ্যমান Psono Environment Variables এন্ট্রিতে <code>DB_PASSWORD</code> পরিচালনা করে:</p>\n<pre><code class=\"language-hcl\">resource \"psono_environment_variable\" \"database_password\" {\n  secret_id = var.psono_environment_variables_secret_id\n  name      = \"DB_PASSWORD\"\n\n  length      = 32\n  min_lower   = 4\n  min_upper   = 4\n  min_numeric = 4\n  min_special = 4\n\n  rotation_version = 1\n}\n</code></pre>\n<p>যদি কি ইতোমধ্যেই থেকে থাকে, তাহলে provider সেটিকে গ্রহণ (adopt) করে কিন্তু মান পরিবর্তন করে না। যদি না থাকে, তাহলে provider নতুন একটি মান জেনারেট ও স্টোর করে। উৎপন্ন মানটি ম্যানেজড রিসোর্সের মাধ্যমে ফেরত দেয়া হয় না এবং Terraform state-এ আসে না।</p>\n<p>Terraform যখন রিপ্লেসমেন্ট তৈরি করা উচিত, তখন <code>rotation_version</code> বাড়ান। এটি মূলত গৃহীত বা ইম্পোর্ট করা মানও রিপ্লেস করবে, তাই ঘুরানোর (rotation) পরিবর্তনগুলি প্রয়োগ করার আগে রিভিউ করা উচিত।</p>\n<h2>বাইরে থেকে সরবরাহকৃত মান লেখুন</h2>\n<p>অন্য provider-থেকে পাওয়া কোনো ephemeral মান <code>value_wo</code>-এর মাধ্যমে Psono'তে লেখা যাবে:</p>\n<pre><code class=\"language-hcl\">ephemeral \"random_password\" \"database\" {\n  length = 32\n}\n\nresource \"psono_environment_variable\" \"database_password\" {\n  secret_id        = var.psono_environment_variables_secret_id\n  name             = \"DB_PASSWORD\"\n  value_wo         = ephemeral.random_password.database.result\n  value_wo_version = 1\n}\n</code></pre>\n<p>Terraform অপারেশনের সময় মানটি ব্যবহারযোগ্য, কিন্তু plan বা state-এ সংরক্ষিত হয় না। Terraform যখন মান রিপ্লেস করা উচিত, তখন <code>value_wo_version</code> বাড়িয়ে দিন।</p>\n<h2>ডিফল্টভাবে নিরাপদ ডিলিশন</h2>\n<p>কোনো ম্যানেজড রিসোর্স ধ্বংস করলে (destroy) এর Psono key ডিফল্টভাবে থেকে যায়। এটি সেই মানগুলো রক্ষা করে, যেগুলো Terraform গ্রহণ করেছিল কিন্তু তৈরি করেনি। Destroy বা রিসোর্স রিপ্লেসমেন্টের সময় কোনো key প্রত্যক্ষভাবে Psono-থেকে ডিলিট করাতে চাইলে কেবল <code>deletion_policy = \"Delete\"</code> নির্ধারণ করুন।</p>\n<h2>এখনই ব্যবহার করুন</h2>\n<p>Provider-টি ওপেন সোর্স এবং এখনই পাওয়া যাচ্ছে:</p>\n<ul>\n<li><a href=\"https://registry.terraform.io/providers/psono/psono/latest\">Terraform Registry থেকে provider ইনস্টল করুন</a></li>\n<li><a href=\"https://doc.psono.com/user/developer/terraform-provider.html\">Psono Terraform Provider গাইড পড়ুন</a></li>\n<li><a href=\"https://gitlab.com/esaqa/psono/psono-terraform-provider\">GitLab-এ সোর্স কোড দেখুন</a></li>\n</ul>\n<p>বিটা সংস্করণটি ইচ্ছাকৃতভাবে Environment Variables এন্ট্রি ও সীমিত API key’র ওপর ফোকাস করে। এতে অনুমতি সীমিত থাকে, অপ্রয়োজনীয় vault অ্যাকসেস এড়ানো যায়, এবং Terraform থেকে নিরাপদভাবে অপারেশনাল সিক্রেট ব্যবস্থাপনার জন্য একটি কার্যকর ভিত্তি দেয়।</p>","frontmatter":{"date":"August 22, 2026","slug":"introducing-the-psono-terraform-provider","title":"Psono Terraform Provider পরিচিতি","description":"Terraform থেকেই Psono-তে উৎপন্ন, শুধু লেখার জন্য, ও ক্ষণস্থায়ী মানগুলি পরিচালনা করুন—Terraform state-এ কোনো সিক্রেট না রেখে।","author":"Sascha Pfeiffer","featuredImage":null}}},"pageContext":{"slug":"introducing-the-psono-terraform-provider","lang":"bn","langPathPrefix":"/bn"}},"staticQueryHashes":["2149092236","3128451518","3192060438"]}