টেরফর্ম ওয়ার্কস্পেসগুলি ব্যবহার করে কীভাবে একটি এডাব্লুএস মাল্টি অ্যাকাউন্ট আর্কিটেকচার তৈরি এবং পরিচালনা করবেন তার একটি উদাহরণ। প্রস্তাবটি কেবল সেগমেন্টে ফোকাস করে এবং কোনও অ্যাকাউন্টকে একটি ওয়ার্কস্পেসের সাথে সম্পর্কিত করে।
সুরক্ষার সমস্যাগুলি মড্যুলারাইজ করা, চিকিত্সা করা বা রাজ্যকে দূরবর্তী ব্যাকএন্ডে সংরক্ষণ করার লক্ষ্য ছিল না, কেবল মাল্টি-অ্যাকাউন্ট ইস্যু সম্পর্কিত একটি প্রস্তাব উপস্থাপন করা হয়নি।
কোনও এডাব্লুএস অবকাঠামো ব্যবহার করে আবেদন করার আগে স্থানীয় পরিবেশে এটি পরীক্ষা করার একটি উপায় রয়েছে লোকালস্ট্যাক।
যেহেতু ওপেনটোফু টেরাফর্মের একটি ওপেনসোর্স বিকল্প, আমি এটি ব্যবহার করব। টেরফর্ম লাইসেন্সিং সম্পর্কে আরও জানতে, চেক করুন এখানে।
এই উদাহরণটি লোকালস্ট্যাক চালানোর জন্য ডকার কমপোজ সমাধান ব্যবহার করে। তবুও এটি চালানোর অন্যান্য উপায় আছে, জাস্ট চেক করুন অফিসিয়াল ডকুমেন্টেশন বিকল্প জন্য।
সমস্ত ডকুমেন্টেশন লোকালস্ট্যাকটিতে চলমান লেখা হয়েছিল, তবে এটি একাধিক অ্যাকাউন্টেও পরীক্ষা করা হয়েছিল। শুধু আপনার সামঞ্জস্য করুন ~/.aws/কনফিগারেশন এবং ~/.aws/শংসাপত্র আপনার শংসাপত্রগুলি সহ ফাইলগুলি এবং এটি কাজ করা উচিত।
বিভিন্ন বন্দরে লোকালস্ট্যাকের 2 টি উদাহরণ সহ একটি ডকার-কমপোজ.ইএএমএল ফাইল রয়েছে যা ব্যবহারের জন্য প্রস্তুত। অ্যাকাউন্টগুলি বিচ্ছিন্ন করতে এবং বিভিন্ন পরিবেশের অনুকরণ করতে সরলতার জন্য এই পদ্ধতির নির্বাচন করা হয়েছিল। উদাহরণ হিসাবে নামকরণ করা হয়েছিল লোকালস্ট্যাক-দেব এবং লোকালস্ট্যাক-উট।
পরিষেবাগুলি কেবল চালানোর জন্য docker-compose up -d --build
।
আপনার সামঞ্জস্য করুন ~/.aws/কনফিগারেশন লোকালস্ট্যাকের দৃষ্টান্তগুলিতে সংজ্ঞায়িত হিসাবে 2 টি প্রোফাইল (অ্যাকাউন্ট) থাকতে ফাইল করুন।
পিএস। ফাইলটি পরিবর্তন করার আগে ব্যাকআপ করা ভাল ধারণা হতে পারে। 😉
(profile dev)
region=us-east-1
output=json
endpoint_url =
(profile uat)
region=us-east-1
output=json
endpoint_url =
তারপরে একই কাজ করুন ~/.aws/শংসাপত্র। কীগুলি পরীক্ষার জন্য গুরুত্বপূর্ণ নয়, কারণ আমরা প্রমাণের বৈশিষ্ট্যগুলি পরীক্ষা করছি না (বৈধতাটি টেরফর্ম কোডে অক্ষম করা হয়েছিল)।
ব্যাকআপ মনে রাখবেন 🙂
(dev)
aws_access_key_id=test
aws_secret_access_key=test
(uat)
aws_access_key_id=test
aws_secret_access_key=test
এই মুহুর্তে আপনি লোকালস্ট্যাক পরিষেবাটি পরীক্ষা করার জন্য এডাব্লুএস সিএলআই কমান্ডগুলি চালাতে সক্ষম হতে পারেন।
আপনি যখন কোনও প্রকল্প শুরু করেন তখন টেরফর্ম ডিফল্ট ওয়ার্কস্পেস (ডিফল্ট হিসাবে নামকরণ করা হয়) ব্যবহার করে। যেহেতু এই উদাহরণটি পরিবেশের সাথে যুক্ত দুটি অ্যাকাউন্ট ব্যবহার করে, আমরা নাম সহ 2 টি ওয়ার্কস্পেস তৈরি করব দেব (উন্নয়ন) এবং উট (ব্যবহারকারী গ্রহণযোগ্যতা পরীক্ষা)।
একটি নতুন ওয়ার্কস্পেস তৈরি করতে ফলউইং কোডটি চালান opentofu workspace new <workspace_name>
। আপনি যখন একটি ওয়ার্কস্পেস টেরফর্ম তৈরি করেন তখন স্বয়ংক্রিয়ভাবে এটিকে সক্রিয় করে তোলে। আপনি এটি দিয়ে পরীক্ষা করতে পারেন opentofu workspace list
।
কর্মক্ষেত্রের মধ্যে পরিবর্তন opentofu workspace select <workspace_name>
।
সরবরাহকারীদের সংজ্ঞায়িত করার সময়, এই ক্ষেত্রে এডাব্লুএস, আমাদের প্রোফাইলটি সেট করা দরকার, যা আমরা ডাইমিকভাবে পুনরুদ্ধার করি terraform.workspace
রানটাইম পরিবর্তনশীল। এইভাবে আমরা পরিবেশের সাথে কর্মক্ষেত্রগুলি সংযুক্ত করি (কৌশলটি এখানে রয়েছে)। যেমনটি আগেই বলা হয়েছে, সরলতার জন্য আমরা সমস্ত প্রমাণ বৈধতা এড়িয়ে যাব।
provider "aws" {
profile = terraform.workspace
skip_credentials_validation = true
skip_metadata_api_check = true
skip_requesting_account_id = true
}
এই পদ্ধতির লাভ নিতে আমাদের নাম রাখা উচিত tfar কর্মক্ষেত্র অনুসারে এবং ফাইল ভেরিয়েবলস.টিএফ এটি গতিশীলভাবে লোড করুন।
dev.tfvars
env_name = "development"
env_prefix = "dev"
এবং তারপরে এটি মানচিত্র ভেরিয়েবলস.টিএফ
variable "env_prefix" {
type = string
description = "Environment name prefix"
}
সমস্ত পরিবেশে ব্যবহৃত হতে পারে এমন ভেরিয়েবলের একটি বিশ্বব্যাপী সংস্করণ থাকাও সম্ভব। কোডটিতে এটির একটি উদাহরণও রয়েছে।
গ্লোবালস.টিএফভার্স
aws_region = "eu-central-1"
project_id = "1a2b3c4d5e6f"
project_name = "Internal project name"
ভিপিসি.টিএফ
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
tags = {
Environment = var.env_name
Project_Name = var.project_name
}
}
আপনি পরিবেশ var সংজ্ঞায়িত করতে পারেন TF_WORKSPACE
আপনি যে পরিবেশের নামটি চালাচ্ছেন, গতিশীলভাবে ভেরিয়েবলগুলি পেতে, এটি বিস্তৃত পরিবেশে রফতানি করে export TF_WORKSPACE="dev"
এবং তারপরে পরিকল্পনা/প্রয়োগ কমান্ডটি চালান, বা এর সাথে তাত্ক্ষণিক এনভ ভের হিসাবে পাস করা TF_WORKSPACE="dev" opentofu -var-file=$TF_WORKSPACE.tfvars -var-file=globals.tfvars
।