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

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

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

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

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

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

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

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

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

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

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



ফায়ারবেসের সাথে টেরাফর্ম ব্যবহারের জন্য সাধারণীকৃত কর্মপ্রবাহ

পূর্বশর্ত

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

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

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


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

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

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

Firebase-এর যে কোনও পণ্য বা পরিষেবাই জড়িত থাকুক না কেন, একটি provider সেটআপ প্রয়োজন।

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

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

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

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

    # 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 প্রকল্পটি দেখুন।



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

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


ফায়ারবেস প্রকল্প এবং অ্যাপ ব্যবস্থাপনা

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

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

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

Firebase Authentication

  • google_identity_platform_configGoogle 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 — গুগল, ফেসবুক, অথবা অ্যাপলের মতো সাধারণ ফেডারেটেড আইডেন্টিটি প্রোভাইডার কনফিগার করুন।

  • 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 ব্যাকএন্ড তৈরি এবং পরিচালনা করুন, যার মধ্যে রয়েছে এর GitHub রিপোজিটরি সংযোগ এবং ক্রমাগত স্থাপনার জন্য লাইভ শাখা।

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

  • google_firebase_app_hosting_traffic — একটি বিল্ড তৈরি করুন অথবা ক্রমাগত GitHub স্থাপনা কনফিগার করুন।


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 — Firebase SDK, প্রমাণীকরণ এবং Firebase Security Rules জন্য একটি বিদ্যমান Cloud Storage বাকেট অ্যাক্সেসযোগ্য করে তুলুন

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

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


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

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

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

  • google_firebaserules_releaseCloud Firestore ইনস্ট্যান্স বা Cloud Storage বাকেটে নির্দিষ্ট নিয়ম সেট স্থাপন করুন


Firebase App Check


Firebase Extensions

  • google_firebase_extensions_instance — একটি Firebase Extension একটি ইনস্ট্যান্স ইনস্টল বা আপডেট করুন



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



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