1. ওভারভিউ
এই ল্যাবটি আপনাকে Google ক্লাউড সংস্থানগুলির বিধান এবং পরিচালনা করার জন্য কোড টুল হিসাবে একটি পরিকাঠামো পুলুমিকে কীভাবে ব্যবহার করতে হয় তা শেখায়৷
যা শিখবেন
এই ল্যাবে, আপনি নিম্নলিখিতগুলি কীভাবে করবেন তা শিখবেন:
- পুলুমি ইনস্টল এবং কনফিগার করুন
- Google ক্লাউডে আপনার পরিকাঠামো মডেল করতে YAML প্রোগ্রাম লিখুন
- পুলুমি ব্যবহার করে ক্লাউড সংস্থান সরবরাহ এবং পরিচালনা করুন
- YAML প্রোগ্রামকে পাইথন প্রোগ্রামে রূপান্তর করতে পুলুমি কনভার্ট ব্যবহার করুন
2. সেটআপ এবং প্রয়োজনীয়তা
স্ব-গতিসম্পন্ন পরিবেশ সেটআপ
- Google ক্লাউড কনসোলে সাইন-ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ আপনার যদি ইতিমধ্যেই একটি Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।
- প্রকল্পের নাম এই প্রকল্পের অংশগ্রহণকারীদের জন্য প্রদর্শনের নাম। এটি একটি অক্ষর স্ট্রিং যা Google API দ্বারা ব্যবহৃত হয় না। আপনি যে কোনো সময় এটি আপডেট করতে পারেন.
- প্রোজেক্ট আইডি সমস্ত Google ক্লাউড প্রোজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (সেট করার পরে পরিবর্তন করা যাবে না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত আপনি এটা কি যত্ন না. বেশিরভাগ কোডল্যাবে, আপনাকে প্রজেক্ট আইডি উল্লেখ করতে হবে (এটি সাধারণত
PROJECT_ID
হিসাবে চিহ্নিত করা হয়)। আপনি যদি জেনারেট করা আইডি পছন্দ না করেন, তাহলে আপনি অন্য এলোমেলো আইডি তৈরি করতে পারেন। বিকল্পভাবে, আপনি নিজের চেষ্টা করে দেখতে পারেন এবং এটি উপলব্ধ কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রকল্পের সময়কালের জন্য থাকবে। - আপনার তথ্যের জন্য, একটি তৃতীয় মান রয়েছে, একটি প্রকল্প নম্বর যা কিছু API ব্যবহার করে। ডকুমেন্টেশনে এই তিনটি মান সম্পর্কে আরও জানুন।
- এরপরে, ক্লাউড রিসোর্স/এপিআই ব্যবহার করতে আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে। এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। রিসোর্স বন্ধ করতে যাতে এই টিউটোরিয়ালের বাইরে আপনার বিলিং খরচ না হয়, আপনি আপনার তৈরি করা রিসোর্স মুছে ফেলতে পারেন বা পুরো প্রোজেক্ট মুছে ফেলতে পারেন। Google ক্লাউডের নতুন ব্যবহারকারীরা $300 USD বিনামূল্যের ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
3. অবকাঠামো সেটআপ
পুলুমি ইনস্টল এবং কনফিগার করুন
ক্লাউড শেলে, পুলুমি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান
curl -fsSL https://get.pulumi.com | sh
পাথে পুলুমি যোগ করুন এবং পুলুমি থেকে সাহায্য বার্তা দেখুন
export PATH=${PATH}:~/.pulumi/bin
# view the help message to verify pulumi runs
pulumi -h
প্রকল্প আইডি সেট করতে এবং অ্যাক্সেস অনুমোদন করতে নিম্নলিখিত কমান্ডগুলি চালান। আপনাকে কমান্ড দ্বারা প্রদত্ত নির্দেশাবলী অনুসরণ করতে হবে
export PROJECT_ID=$(gcloud config get-value project)
gcloud auth application-default login
ক্লাউড শেলে, একটি GCS বালতি তৈরি করুন এবং এটি ব্যাকএন্ড হিসাবে ব্যবহার করুন
gsutil mb gs://pulumi-${PROJECT_ID}
pulumi login gs://pulumi-${PROJECT_ID}
একটি নতুন প্রকল্প তৈরি করুন
ক্লাউড শেলে, প্রোজেক্ট রুট ডিরেক্টরি তৈরি করুন
mkdir pulumi-lab && cd pulumi-lab
প্রজেক্ট ফাইল সংজ্ঞায়িত করুন (পুলুমির প্রবেশ বিন্দু)
cat <<EOT > Pulumi.yaml
name: pulumi-lab
description: Try Pulumi
runtime: yaml
main: yaml-repo/
EOT
YAML সম্পদ সংজ্ঞায়িত করুন
yaml ফর্ম্যাটে ক্লাউড রিসোর্স সংজ্ঞা ধরে রাখতে ডিরেক্টরি তৈরি করুন
mkdir yaml-repo
নিম্নলিখিত সংস্থান সংজ্ঞা সহ yaml-repo/Pulumi.yaml
ফাইল তৈরি করুন
- বালতি
- আইএএম বাইন্ডিং
- স্ট্রিং সহ একটি পাঠ্য বস্তু "হ্যালো ওয়ার্ল্ড!"
- এবং কিছু আউটপুট
resources:
# Create a GCP resource (Storage Bucket)
my-bucket:
type: gcp:storage:Bucket
properties:
location: US
website:
mainPageSuffix: index.html
uniformBucketLevelAccess: true
my-bucket-binding:
type: gcp:storage:BucketIAMBinding
properties:
bucket: ${my-bucket.name}
role: "roles/storage.objectViewer"
members: ["allUsers"]
index-object:
type: gcp:storage:BucketObject
properties:
bucket: ${my-bucket}
source:
fn::stringAsset: Hello World!
outputs:
bucketName: ${my-bucket.url}
সম্পদ স্থাপন
ইনিশিয়ালাইজ করুন এবং স্ট্যাক কনফিগার করুন
export PULUMI_CONFIG_PASSPHRASE=pulumi-lab
pulumi stack init dev
pulumi config set gcp:project $PROJECT_ID
স্ট্যাক কনফিগারেশন চেক করুন এবং আপনার মান হিসাবে আপনার প্রকল্প আইডি সহ gcp:project কী দেখতে হবে
pulumi config
এই মুহুর্তে ডিরেক্টরি গঠন নিম্নলিখিত মত হওয়া উচিত
├── Pulumi.dev.yaml ├── Pulumi.yaml └── yaml-repo └── Pulumi.yaml
স্ট্যাক স্থাপন
pulumi up
এই কমান্ডটি আপনার প্রোগ্রামের মূল্যায়ন করে এবং রিসোর্স আপডেটগুলি নির্ধারণ করে। প্রথমে, একটি প্রিভিউ দেখানো হয় যা আপনি কমান্ড করার সময় যে পরিবর্তনগুলি করা হবে তার রূপরেখা দেয়
(আউটপুট)
Previewing update (dev): Downloading plugin gcp v6.44.0: 45.69 MiB / 45.69 MiB [=============] 100.00% 1s Type Name Plan + pulumi:pulumi:Stack pulumi-lab-dev create + ├─ gcp:storage:Bucket my-bucket create + ├─ gcp:storage:BucketObject index-object create + └─ gcp:storage:BucketIAMBinding my-bucket-binding create Outputs: bucketName: output<string> Resources: + 4 to create Do you want to perform this update? [Use arrows to move, type to filter] yes > no details
হ্যাঁ নির্বাচন করুন এবং সংস্থানগুলি সরবরাহ করা হবে। আপনার আউটপুট এই মত হওয়া উচিত
Do you want to perform this update? yes Updating (dev): Type Name Status + pulumi:pulumi:Stack pulumi-lab-dev created (3s) + ├─ gcp:storage:Bucket my-bucket created (1s) + ├─ gcp:storage:BucketObject index-object created (0.78s) + └─ gcp:storage:BucketIAMBinding my-bucket-binding created (5s) Outputs: bucketName: "gs://my-bucket-874aa08" Resources: + 4 created Duration: 11s
নিম্নলিখিত কমান্ড চালানোর ফলে সংজ্ঞায়িত আউটপুট প্রিন্ট হবে
pulumi stack output
পরিবর্তনটি যাচাই করতে নিম্নলিখিত কমান্ডটি চালান
gsutil ls $(pulumi stack output bucketName)
আপনার আউটপুট এই মত দেখাবে
(আউটপুট)
gs://my-bucket-11a9046/index-object-77a5d80
4. YAML কে পাইথনে রূপান্তর করুন
উপরের উদাহরণটিকে একটি পুলুমি পাইথন প্রোগ্রামে রূপান্তর করা যাক
pulumi convert --language python --out ./py-repo
পাই-রেপোতে তৈরি করা কোডটি পরিদর্শন করুন
cat py-repo/__main__.py
(আউটপুট)
import pulumi import pulumi_gcp as gcp my_bucket = gcp.storage.Bucket("my-bucket", location="US", website=gcp.storage.BucketWebsiteArgs( main_page_suffix="index.html", ), uniform_bucket_level_access=True) my_bucket_binding = gcp.storage.BucketIAMBinding("my-bucket-binding", bucket=my_bucket.name, role="roles/storage.objectViewer", members=["allUsers"]) index_object = gcp.storage.BucketObject("index-object", bucket=my_bucket.id, source=pulumi.StringAsset("Hello World!")) pulumi.export("bucketName", my_bucket.url) .......
পাইথন ভার্চুয়াল পরিবেশ সক্রিয় করুন
source py-repo/bin/activate
পাইথন প্রোগ্রামের দিকে নির্দেশ করতে Pulumi.yaml প্রকল্প ফাইল আপডেট করুন। রানটাইম এবং প্রধান এন্ট্রি পরিবর্তন করা হয়েছে লক্ষ্য করুন
cat <<EOT > Pulumi.yaml
name: pulumi-lab
description: Try Pulumi
runtime: python
main: py-repo/
EOT
স্ট্যাক পুনরায় স্থাপন করার চেষ্টা করুন এবং হ্যাঁ নির্বাচন করুন
pulumi up
কোন পরিবর্তন করা উচিত নয় এবং আপনার আউটপুট এর অনুরূপ হওয়া উচিত
(আউটপুট)
Previewing update (dev): Type Name Plan pulumi:pulumi:Stack pulumi-lab-dev Resources: 4 unchanged Do you want to perform this update? yes Updating (dev): Type Name Status pulumi:pulumi:Stack pulumi-lab-dev Outputs: bucketName: "gs://my-bucket-c2b49ad" Resources: 4 unchanged Duration: 6s
5. সম্পদ মুছুন
যে সংস্থানগুলি তৈরি করা হয়েছিল তা মুছুন
pulumi destroy
আপনার নিশ্চিতকরণ এই মত দেখাবে
Previewing update (dev): Type Name Plan pulumi:pulumi:Stack pulumi-lab-dev Resources: 4 unchanged Do you want to perform this update? [Use arrows to move, type to filter] yes > no details Do you want to perform this destroy? yes Destroying (dev): Type Name Status - pulumi:pulumi:Stack pulumi-lab-dev deleted - ├─ gcp:storage:BucketIAMBinding my-bucket-binding deleted (5s) - ├─ gcp:storage:BucketObject index-object deleted (1s) - └─ gcp:storage:Bucket my-bucket deleted (0.73s) Outputs: - bucketName: "gs://my-bucket-874aa08" Resources: - 4 deleted Duration: 10s
6. অভিনন্দন!
অভিনন্দন, আপনি ল্যাব শেষ!