Terraform এবং Firebase দিয়ে শুরু করুন

ফায়ারবেস এখন টেরাফর্মকে সমর্থন করতে শুরু করেছে। আপনি যদি এমন কোনো দলে থাকেন যারা নির্দিষ্ট রিসোর্স প্রোভিশন এবং সার্ভিস এনাবল করে ফায়ারবেস প্রজেক্ট তৈরির প্রক্রিয়াকে স্বয়ংক্রিয় ও মানসম্মত করতে চান, তাহলে ফায়ারবেসের সাথে টেরাফর্ম ব্যবহার করা আপনার জন্য একটি ভালো সমাধান হতে পারে।

ফায়ারবেসের সাথে টেরাফর্ম ব্যবহারের মৌলিক কর্মপ্রবাহে নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত রয়েছে:

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

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

টেরাফর্ম এবং ফায়ারবেস দিয়ে কী কী করা যায়?

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

  • টেরাফর্ম ব্যবহার করে বিদ্যমান পরিকাঠামো মুছে ফেলুন এবং পরিবর্তন করুন।

  • টেরাফর্ম ব্যবহার করে পণ্য-নির্দিষ্ট কনফিগারেশন ও কাজগুলো পরিচালনা করুন, যেমন:

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

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



ফায়ারবেসের সাথে টেরাফর্ম ব্যবহারের সাধারণ কর্মপ্রবাহ

পূর্বশর্ত

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

  • টেরাফর্ম ইনস্টল করুন এবং তাদের অফিসিয়াল টিউটোরিয়ালগুলো দেখে এর সাথে পরিচিত হন।

  • Google Cloud CLI ( gcloud CLI ) ইনস্টল করুন। একটি ইউজার অ্যাকাউন্ট অথবা একটি সার্ভিস অ্যাকাউন্ট ব্যবহার করে লগইন করুন।


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

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

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

ফায়ারবেসের যে কোনো পণ্য বা পরিষেবা ব্যবহার করা হোক না কেন, একটি provider সেটআপ আবশ্যক।

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

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

  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
    }

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

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

resource ব্লক ব্যবহার করে কী পরিকাঠামো তৈরি করতে হবে তা নির্দিষ্ট করুন।

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

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

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

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

    # 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 init
  2. নিম্নলিখিত কমান্ডটি চালিয়ে আপনার main.tf ফাইলে উল্লেখিত পরিকাঠামোটি তৈরি করুন:

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

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

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



টেরাফর্ম সমর্থন সহ ফায়ারবেস রিসোর্স

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


ফায়ারবেস প্রজেক্ট এবং অ্যাপ ম্যানেজমেন্ট

  • google_firebase_project — একটি বিদ্যমান Google Cloud প্রকল্পে ফায়ারবেস পরিষেবাগুলি সক্রিয় করুন

  • ফায়ারবেস অ্যাপস

    • google_firebase_apple_app — একটি ফায়ারবেস অ্যাপল প্ল্যাটফর্ম অ্যাপ তৈরি বা পরিচালনা করুন
    • google_firebase_android_app — একটি ফায়ারবেস অ্যান্ড্রয়েড অ্যাপ তৈরি বা পরিচালনা করুন
    • google_firebase_web_app — একটি ফায়ারবেস ওয়েব অ্যাপ তৈরি বা পরিচালনা করুন

Firebase Authentication

  • google_identity_platform_configGoogle Cloud Identity Platform (GCIP) (যা Firebase Authentication ব্যাকএন্ড) সক্রিয় করুন এবং প্রোজেক্ট-স্তরের অথেনটিকেশন সেটিংস প্রদান করুন।

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

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

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

  • google_identity_platform_default_supported_idp_config — গুগল, ফেসবুক বা অ্যাপলের মতো সাধারণ ফেডারেটেড আইডেন্টিটি প্রোভাইডারগুলো কনফিগার করুন।

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

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

এখনো সমর্থিত নয়:

  • টেরাফর্মের মাধ্যমে মাল্টি-ফ্যাক্টর অথেনটিকেশন (MFA) কনফিগার করা

Firebase App Hosting

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

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

  • google_firebase_app_hosting_traffic — একটি বিল্ড চালু করুন অথবা নিরবচ্ছিন্ন গিটহাব ডেপ্লয়মেন্ট কনফিগার করুন।


Firebase Data Connect


Firebase Realtime Database

এখনো সমর্থিত নয়:

  • টেরাফর্মের মাধ্যমে Firebase Realtime Database Security Rules স্থাপন (প্রোগ্রামেটিক বিকল্প সহ অন্যান্য টুলিং ব্যবহার করে কীভাবে এই Security Rules স্থাপন করতে হয় তা জানুন)

Cloud Firestore

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

  • google_firestore_indexCloud Firestore জন্য কার্যকর কোয়েরি সক্ষম করুন

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

    গুরুত্বপূর্ণ: এই সিড ডকুমেন্টে প্রকৃত ব্যবহারকারী বা উৎপাদন সংক্রান্ত ডেটা ব্যবহার করবেন না।


Cloud Storage for Firebase

  • google_firebase_storage_bucket — একটি বিদ্যমান Cloud Storage বাকেটকে Firebase SDK, প্রমাণীকরণ, এবং Firebase Security Rules জন্য অ্যাক্সেসযোগ্য করে তুলুন

  • google_storage_bucket_objectCloud Storage বাকেটে একটি অবজেক্ট যোগ করুন

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


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

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

  • google_firebaserules_ruleset — একটি Cloud Firestore ইনস্ট্যান্স বা একটি Cloud Storage বাকেটের জন্য প্রযোজ্য Firebase Security Rules নির্ধারণ করুন।

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


Firebase App Check


Firebase Extensions



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



সমস্যা সমাধান এবং প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী