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

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

Firebase-এর সাথে Terraform ব্যবহার করার জন্য মৌলিক কর্মপ্রবাহের মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে:

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

  • gCloud CLI কমান্ডগুলি ব্যবহার করে যা .tf ফাইলে নির্দিষ্ট পরিকাঠামোর ব্যবস্থা করতে Terraform-এর সাথে ইন্টারফেস করে।

আপনি Terraform এবং Firebase দিয়ে কি করতে পারেন?

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

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

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

    • Firebase প্রমাণীকরণ সাইন-ইন প্রদানকারী সক্রিয় করা হচ্ছে।
    • ক্লাউড স্টোরেজ বালতি বা ডাটাবেস দৃষ্টান্ত তৈরি করা এবং তাদের জন্য ফায়ারবেস নিরাপত্তা নিয়ম স্থাপন করা।

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



Firebase এর সাথে Terraform ব্যবহার করার জন্য সাধারণ কর্মপ্রবাহ

পূর্বশর্ত

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

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

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


ধাপ 1: একটি 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 = "~> 4.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 ফাইল), আপনাকে টেরাফর্ম তৈরি করতে চান এমন সমস্ত অবকাঠামো নির্দিষ্ট করতে হবে (অর্থাৎ আপনি যে সমস্ত সংস্থানগুলি সরবরাহ করতে চান এবং আপনি যে সমস্ত পরিষেবা সক্ষম করতে চান)। এই নির্দেশিকাটিতে, সমস্ত Firebase সংস্থানগুলির একটি সম্পূর্ণ তালিকা খুঁজুন যা Terraform সমর্থন করে

  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,
      ]
    }
    


ধাপ 2: নির্দিষ্ট পরিকাঠামো তৈরি করতে Terraform কমান্ড চালান

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

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

    terraform init
  2. নিম্নলিখিত কমান্ডটি চালিয়ে আপনার main.tf ফাইলে নির্দিষ্ট পরিকাঠামো তৈরি করুন:

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

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

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



Terraform সমর্থন সহ Firebase সম্পদ

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


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

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

  • google_firebase_project_location — প্রকল্পের ডিফল্ট Google ক্লাউড সংস্থানগুলির জন্য অবস্থান সেট করুন

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

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

ফায়ারবেস প্রমাণীকরণ

  • google_identity_platform_config — Google ক্লাউড আইডেন্টিটি প্ল্যাটফর্ম (GCIP) সক্ষম করুন (যা ফায়ারবেস প্রমাণীকরণের জন্য ব্যাকএন্ড) এবং প্রকল্প-স্তরের প্রমাণীকরণ সেটিংস প্রদান করে

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

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

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

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

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

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

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

  • Terraform এর মাধ্যমে মাল্টি-ফ্যাক্টর প্রমাণীকরণ (MFA) কনফিগার করা হচ্ছে

ফায়ারবেস রিয়েলটাইম ডাটাবেস

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

  • টেরাফর্মের মাধ্যমে ফায়ারবেস রিয়েলটাইম ডেটাবেস সুরক্ষা নিয়মগুলি স্থাপন করা (প্রোগ্রাম্যাটিক বিকল্পগুলি সহ অন্যান্য টুলিং ব্যবহার করে এই নিয়মগুলি কীভাবে স্থাপন করতে হয় তা শিখুন)

ক্লাউড ফায়ারস্টোর

  • google_firestore_database — একটি ক্লাউড ফায়ারস্টোর ইনস্ট্যান্স তৈরি করুন

  • google_firestore_index — ক্লাউড ফায়ারস্টোরের জন্য দক্ষ কোয়েরি সক্ষম করুন

  • google_firestore_document — একটি সংগ্রহে একটি নির্দিষ্ট নথির সাথে একটি ক্লাউড ফায়ারস্টোরের উদাহরণ তৈরি করুন

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


ফায়ারবেসের জন্য ক্লাউড স্টোরেজ


ফায়ারবেস নিরাপত্তা নিয়ম (ক্লাউড ফায়ারস্টোর এবং ক্লাউড স্টোরেজের জন্য)

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

  • google_firebaserules_ruleset — ক্লাউড ফায়ারস্টোর ইনস্ট্যান্স বা একটি ক্লাউড স্টোরেজ বালতিতে প্রযোজ্য ফায়ারবেস নিরাপত্তা নিয়মগুলি সংজ্ঞায়িত করুন

  • google_firebaserules_release — ক্লাউড ফায়ারস্টোর ইনস্ট্যান্স বা একটি ক্লাউড স্টোরেজ বালতিতে নির্দিষ্ট নিয়ম সেটগুলি স্থাপন করুন


ফায়ারবেস এক্সটেনশন

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



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



সমস্যা সমাধান এবং FAQ