Terraform ও Firebase-এর ব্যবহার শুরু করা

Firebase এখন Terraform-এর সাথে কাজ করা শুরু করছে। আপনি যদি এমন কোনও টিমে থাকেন যারা নির্দিষ্ট রিসোর্স ও পরিষেবা সহ Firebase প্রোজেক্ট তৈরি করার প্রসেস অটোমেট ও স্ট্যান্ডার্ডাইজ করতে চান, তাহলে Firebase-এর সাথে Terraform ব্যবহার করা আপনার জন্য উপযুক্ত হতে পারে।

Firebase-এর সাথে Terraform ব্যবহার করার প্রাথমিক ওয়ার্কফ্লোতে নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত থাকে:

  • Terraform কনফিগারেশন ফাইল (একটি .tf ফাইল) তৈরি ও কাস্টমাইজ করা, যা আপনি যে ইনফ্রাস্ট্রাকচার প্রোভিশন করতে চান (অর্থাৎ, আপনি যে রিসোর্স প্রোভিশন করতে চান এবং যে পরিষেবা চালু করতে চান) তা নির্দিষ্ট করে।

  • gcloud CLI কমান্ড ব্যবহার করে যা Terraform-এর সাথে ইন্টারফেস করে .tf ফাইলে উল্লেখ করা ইনফ্রাস্ট্রাকচার প্রোভিশন করে।

Terraform ও Firebase-এর সাহায্যে আপনি কী করতে পারবেন?

এই গাইডে দেওয়া সাধারণ ওয়ার্কফ্লোর উদাহরণ Android অ্যাপের মাধ্যমে নতুন Firebase প্রোজেক্ট তৈরি করছে। তবে, Terraform-এর মাধ্যমে আপনি আরও অনেক কিছু করতে পারবেন, যেমন:

  • Terraform ব্যবহার করে আগে থেকে থাকা ইনফ্রাস্ট্রাকচার মুছে দিন ও পরিবর্তন করুন।

  • Terraform ব্যবহার করে প্রোডাক্ট-নির্দিষ্ট কনফিগারেশন ও টাস্ক ম্যানেজ করা, যেমন:

    • Firebase Authentication সাইন-ইন পরিষেবা প্রদানকারী চালু করা হচ্ছে।
    • Cloud Storage বাকেট বা ডেটাবেস ইনস্ট্যান্স তৈরি করা এবং সেগুলির জন্য Firebase Security Rules ডিপ্লয় করা।
    • Firebase App Hosting ব্যাকএন্ড, বিল্ড ও অন্যান্য সম্পর্কিত রিসোর্স তৈরি করা হচ্ছে।

এইসব টাস্ক সম্পূর্ণ করতে আপনি স্ট্যান্ডার্ড Terraform কনফিগারেশন ফাইল ও কমান্ড ব্যবহার করতে পারেন। এবং এই ব্যাপারে আপনাকে সাহায্য করার জন্য, আমরা বেশ কিছু সাধারণ ব্যবহারের ক্ষেত্রে স্যাম্পেল Terraform কনফিগ ফাইল প্রদান করেছি।



Firebase-এর সাথে Terraform ব্যবহার করার জন্য সাধারণ ওয়ার্কফ্লো

পূর্বশর্ত

এই নির্দেশিকাটি Firebase-এর সাথে Terraform ব্যবহার করার একটি ভূমিকা, তাই এটি Terraform-এর সাথে প্রাথমিক দক্ষতার অনুমান করে। এই ওয়ার্কফ্লো শুরু করার আগে আপনি নিম্নলিখিত পূর্বশর্তগুলি সম্পূর্ণ করেছেন কিনা তা নিশ্চিত করুন।

  • Terraform ইনস্টল করুন এবং অফিসিয়াল টিউটোরিয়াল ব্যবহার করে Terraform সম্পর্কে জানুন।

  • Google Cloud CLI ইনস্টল করুন (gcloud CLI)। ব্যবহারকারীর অ্যাকাউন্ট অথবা পরিষেবা অ্যাকাউন্ট ব্যবহার করে লগ-ইন করুন।


ধাপ ১: Terraform কনফিগারেশন ফাইল তৈরি ও কাস্টমাইজ করা

Terraform কনফিগারেশন ফাইলের দুটি প্রধান বিভাগ প্রয়োজন (যা বিস্তারিতভাবে বর্ণনা করা হয়েছে নিচে):

আপনার provider সেট-আপ করুন

Firebase-এর যে প্রোডাক্ট বা পরিষেবাই ব্যবহার করা হোক না কেন, provider সেট-আপ করতে হবে।

  1. আপনার লোকাল ডিরেক্টরিতে Terraform কনফিগারেশন ফাইল (যেমন main.tf ফাইল) তৈরি করুন।

    এই গাইডে, আপনি এই কনফিগারেশন ফাইলটি ব্যবহার করে provider সেটআপ এবং Terraform-এর মাধ্যমে তৈরি করতে চান এমন সমস্ত ইনফ্রাস্ট্রাকচার নির্দিষ্ট করবেন। তবে, মনে রাখবেন যে পরিষেবা প্রদানকারীর সেট-আপ কীভাবে অন্তর্ভুক্ত করবেন সেই সংক্রান্ত বিকল্প আপনার কাছে আছে।

  2. main.tf ফাইলের একদম উপরে নিম্নলিখিত provider সেট-আপ অন্তর্ভুক্ত করুন।

    আপনাকে অবশ্যই google-beta প্রদানকারী ব্যবহার করতে হবে কারণ এটি Terraform-এর সাথে Firebase ব্যবহার করার বিটা রিলিজ। প্রোডাকশনে ব্যবহার করার সময় সতর্কতা অবলম্বন করুন।

    # Terraform configuration to set up providers by version.
    terraform {
      required_providers {
        google-beta = {
          source  = "hashicorp/google-beta"
          version = "~> 6.0"
        }
      }
    }
    
    # Configures the provider to use the resource block's specified project for quota checks.
    provider "google-beta" {
      user_project_override = true
    }
    
    # Configures the provider to not use the resource block's specified project for quota checks.
    # This provider should only be used during project creation and initializing services.
    provider "google-beta" {
      alias = "no_user_project_override"
      user_project_override = false
    }

    Firebase-এর সাথে Terraform ব্যবহার করার সময় প্রোজেক্ট-সম্পর্কিত বিভিন্ন ধরনের অ্যাট্রিবিউট (এই গাইডে যেটিকে "কোটা-চেক প্রোজেক্ট" বলা হয়েছে সেটি সহ) সম্পর্কে আরও জানুন।

  3. আপনার কনফিগারেশন ফাইল সম্পূর্ণ করতে এবং কোন ইনফ্রাস্ট্রাকচার তৈরি করতে হবে তা নির্দিষ্ট করতে পরবর্তী বিভাগে যান।

resource ব্লক ব্যবহার করে কী ধরনের ইনফ্রাস্ট্রাকচার তৈরি করতে হবে তা উল্লেখ করুন

আপনার Terraform কনফিগারেশন ফাইলে (এই গাইডের জন্য, আপনার main.tf ফাইল), আপনাকে Terraform-এর মাধ্যমে তৈরি করতে চান এমন সমস্ত ইনফ্রাস্ট্রাকচার উল্লেখ করতে হবে (অর্থাৎ, আপনি যে সমস্ত রিসোর্স প্রোভিশন করতে চান এবং যে সমস্ত পরিষেবা চালু করতে চান)। এই গাইডে, Terraform-এ কাজ করে এমন সব Firebase রিসোর্সের সম্পূর্ণ তালিকা দেখুন।

  1. আপনার main.tf ফাইল খুলুন।

  2. provider সেট-আপের অধীনে, resource ব্লকের নিম্নলিখিত কনফিগারেশন অন্তর্ভুক্ত করুন।

    এই প্রাথমিক উদাহরণটি একটি নতুন Firebase প্রোজেক্ট তৈরি করে এবং তারপরে সেই প্রোজেক্টের মধ্যে একটি Firebase Android অ্যাপ তৈরি করে।

    # Terraform configuration to set up providers by version.
    ...
    
    # Configures the provider to use the resource block's specified project for quota checks.
    ...
    
    # Configures the provider to not use the resource block's specified project for quota checks.
    ...
    
    # Creates a new Google Cloud project.
    resource "google_project" "default" {
      provider   = google-beta.no_user_project_override
    
      name       = "Project Display Name"
      project_id = "project-id-for-new-project"
      # Required for any service that requires the Blaze pricing plan
      # (like Firebase Authentication with GCIP)
      billing_account = "000000-000000-000000"
    
      # Required for the project to display in any list of Firebase projects.
      labels = {
        "firebase" = "enabled"
      }
    }
    
    # Enables required APIs.
    resource "google_project_service" "default" {
      provider = google-beta.no_user_project_override
      project  = google_project.default.project_id
      for_each = toset([
        "cloudbilling.googleapis.com",
        "cloudresourcemanager.googleapis.com",
        "firebase.googleapis.com",
        # Enabling the ServiceUsage API allows the new project to be quota checked from now on.
        "serviceusage.googleapis.com",
      ])
      service = each.key
    
      # Don't disable the service if the resource block is removed by accident.
      disable_on_destroy = false
    }
    
    # Enables Firebase services for the new project created above.
    resource "google_firebase_project" "default" {
      provider = google-beta
      project  = google_project.default.project_id
    
      # Waits for the required APIs to be enabled.
      depends_on = [
        google_project_service.default
      ]
    }
    
    # Creates a Firebase Android App in the new project created above.
    resource "google_firebase_android_app" "default" {
      provider = google-beta
    
      project      = google_project.default.project_id
      display_name = "My Awesome Android app"
      package_name = "awesome.package.name"
    
      # Wait for Firebase to be enabled in the Google Cloud project before creating this App.
      depends_on = [
        google_firebase_project.default,
      ]
    }


ধাপ ২: নির্দিষ্ট ইনফ্রাস্ট্রাকচার তৈরি করতে Terraform কমান্ড রান করুন

রিসোর্স প্রোভিশন করতে এবং আপনার main.tf ফাইলে উল্লেখ করা পরিষেবা চালু করতে, আপনার main.tf ফাইলের মতো একই ডিরেক্টরি থেকে নিম্নলিখিত কমান্ডগুলি রান করুন। এইসব কমান্ড সম্পর্কে বিস্তারিত তথ্যের জন্য, Terraform ডকুমেন্টেশন দেখুন।

  1. আপনি যদি ডিরেক্টরিতে প্রথমবার Terraform কমান্ড রান করেন, তাহলে আপনাকে কনফিগারেশন ডিরেক্টরি শুরু করতে হবে এবং Google Terraform প্রোভাইডার ইনস্টল করতে হবে। এই কমান্ড রান করে এটি করুন:

    terraform init
  2. নিম্নলিখিত কমান্ড রান করে আপনার main.tf ফাইলে উল্লেখ করা ইনফ্রাস্ট্রাকচার তৈরি করুন:

    terraform apply
  3. সবকিছু প্রত্যাশা অনুযায়ী প্রভিশন বা চালু করা হয়েছে কিনা তা কনফার্ম করুন:

    • বিকল্প ১: নিম্নলিখিত কমান্ড রান করে আপনার টার্মিনালে প্রিন্ট করা কনফিগারেশন দেখুন:

      terraform show
    • বিকল্প ২: আপনার Firebase প্রোজেক্ট Firebase কনসোলে দেখুন।



Terraform-এর সাথে কাজ করে এমন Firebase রিসোর্স

নিম্নলিখিত Firebase ও Google রিসোর্সে Terraform কাজ করে। আর আমরা সব সময় আরও রিসোর্স যোগ করছি! তাই, Terraform-এর মাধ্যমে ম্যানেজ করতে চান এমন রিসোর্স দেখতে না পেলে, সেটি উপলভ্য আছে কিনা তা শীঘ্রই আবার চেক করুন অথবা GitHub রেপোতে সমস্যাটি ফাইল করে অনুরোধ করুন।


Firebase প্রোজেক্ট ও অ্যাপ ম্যানেজমেন্ট

  • google_firebase_project — আগে থেকে থাকা Google Cloud প্রোজেক্টে Firebase পরিষেবা চালু করুন

  • Firebase অ্যাপ

    • google_firebase_apple_app — Firebase Apple প্ল্যাটফর্ম অ্যাপ তৈরি বা ম্যানেজ করা
    • google_firebase_android_app — Firebase Android অ্যাপ তৈরি বা ম্যানেজ করা
    • google_firebase_web_app — Firebase ওয়েব অ্যাপ তৈরি বা ম্যানেজ করা

Firebase Authentication

  • google_identity_platform_config — Google Cloud Identity Platform (GCIP) (যা Firebase Authentication-এর ব্যাকএন্ড) চালু করুন এবং প্রোজেক্ট-লেভেল যাচাইকরণ সেটিংস প্রদান করুন

    • Terraform-এর মাধ্যমে Firebase Authentication কনফিগার করার জন্য GCIP চালু করতে হবে। Firebase Authentication কীভাবে সেট-আপ করতে হয় তা জানতে স্যাম্পেল .tf ফাইলটি পর্যালোচনা করতে ভুলবেন না।

    • যে প্রোজেক্টে Terraform, GCIP এবং/অথবা Firebase Authentication চালু করবে, সেটি Blaze প্রাইসিং প্ল্যানে থাকতে হবে (অর্থাৎ, প্রোজেক্টের সাথে একটি Cloud Billing অ্যাকাউন্ট যুক্ত থাকতে হবে)। আপনি google_project রিসোর্সে billing_account অ্যাট্রিবিউট সেট করে প্রোগ্রাম্যাটিক্যালি এটি করতে পারেন।

    • এই রিসোর্স আরও কনফিগারেশন চালু করে, যেমন স্থানীয় সাইন-ইন পদ্ধতি, যেমন পরিচয় গোপন রেখে, ইমেল/পাসওয়ার্ড এবং ফোন যাচাইকরণ, এর পাশাপাশি ব্লকিং ফাংশন এবং অনুমোদিত ডোমেন।

  • google_identity_platform_default_supported_idp_config — Google, Facebook বা Apple-এর মতো সাধারণ ফেডারেটেড আইডেন্টিটি প্রোভাইডার কনফিগার করুন

  • identity_platform_oauth_idp_config — যেকোনও OAuth আইডেন্টিটি প্রোভাইডার (IdP) সোর্স কনফিগার করা

  • google_identity_platform_inbound_saml_config — SAML ইন্টিগ্রেশন কনফিগার করা

এখনও কাজ করে না:

  • Terraform-এর মাধ্যমে বহু-স্তরীয় যাচাইকরণ (MFA) কনফিগার করা

Firebase App Hosting

  • google_firebase_app_hosting_backend — Firebase App Hosting ব্যাকএন্ড তৈরি ও ম্যানেজ করা, যার মধ্যে রয়েছে GitHub রিপোজিটরি কানেকশন এবং ক্রমাগত ডিপ্লয়মেন্টের জন্য লাইভ ব্রাঞ্চ।

  • google_firebase_app_hosting_build — নির্দিষ্ট পয়েন্ট কোডবেস রেফারেন্স ট্যাগ ও সময়ের পয়েন্টে ব্যাকএন্ডের জন্য একটি বিল্ড তৈরি করুন।

  • google_firebase_app_hosting_traffic — বিল্ড রোল-আউট করুন বা কন্টিনিউয়াস GitHub ডিপ্লয়মেন্ট কনফিগার করুন।


Firebase SQL Connect


Firebase Realtime Database

এখনও কাজ করে না:


Cloud Firestore

  • google_firestore_database — Cloud Firestore ইনস্ট্যান্স তৈরি করুন

  • google_firestore_index — Cloud Firestore-এর জন্য দক্ষ কোয়েরি চালু করুন

  • google_firestore_document — কালেকশনে নির্দিষ্ট ডকুমেন্টের সাথে Cloud Firestore ইনস্ট্যান্স সিড করুন

    গুরুত্বপূর্ণ: এই সিড ডকুমেন্টে আসল ব্যবহারকারী বা প্রোডাকশন ডেটা ব্যবহার করবেন না।


Cloud Storage for Firebase

  • google_firebase_storage_bucket — Firebase SDK, যাচাইকরণ এবং Firebase Security Rules-এর জন্য আগে থেকে থাকা Cloud Storage বাকেট অ্যাক্সেসযোগ্য করুন

  • google_storage_bucket_object — Cloud Storage বাকেটে অবজেক্ট যোগ করুন

    গুরুত্বপূর্ণ: এই ফাইলে আসল ব্যবহারকারী বা প্রোডাকশন ডেটা ব্যবহার করবেন না।


Firebase Security Rules (Cloud Firestore এবং Cloud Storage-এর জন্য)

মনে রাখবেন যে Firebase Realtime Database তার Firebase Security Rules-এর জন্য অন্য একটি প্রভিশনিং সিস্টেম ব্যবহার করে।

  • google_firebaserules_ruleset — Firebase Security Rules সংজ্ঞায়িত করুন যা Cloud Firestore ইনস্ট্যান্স বা Cloud Storage বাকেটের ক্ষেত্রে প্রযোজ্য হয়

  • google_firebaserules_release — Cloud Firestore ইনস্ট্যান্স বা Cloud Storage বাকেটে নির্দিষ্ট রুলসেট ডিপ্লয় করুন


Firebase App Check


Firebase Extensions



সাধারণ ব্যবহারের ক্ষেত্রে Terraform কনফিগারেশন ফাইলের নমুনা



সমস্যার সমাধান ও প্রায়শই জিজ্ঞাসিত প্রশ্ন