Teraform और 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
    }

    Terraform को Firebase के साथ इस्तेमाल करते समय, प्रोजेक्ट से जुड़े अलग-अलग तरह के एट्रिब्यूट के बारे में ज़्यादा जानें. इनमें वह एट्रिब्यूट भी शामिल है जिसे इस गाइड में "कोटा-चेक प्रोजेक्ट" कहा गया है.

  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 को चालू करेगा वह ब्लेज़ प्लान की बिलिंग की जानकारी के तहत होना चाहिए. इसका मतलब है कि प्रोजेक्ट के साथ कोई 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 — एसएएमएल इंटिग्रेशन कॉन्फ़िगर करना

फ़िलहाल, ये काम नहीं करते:

  • Terraform की मदद से, कई चरणों में पुष्टि (एमएफ़ए) करने की सुविधा को कॉन्फ़िगर करना

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

फ़िलहाल, ये काम नहीं करते:

  • Terraform की मदद से Firebase Realtime Database Security Rules को डिप्लॉय करना (प्रोग्राम के हिसाब से उपलब्ध विकल्पों के साथ-साथ अन्य टूल का इस्तेमाल करके, इन Security Rules को डिप्लॉय करने का तरीका जानें)

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 — किसी मौजूदा Cloud Storage बकेट को Firebase SDK टूल, पुष्टि करने की सुविधा, और Firebase Security Rules के लिए ऐक्सेस करने लायक बनाएं

  • google_storage_bucket_object — Cloud 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

  • google_firebase_app_check_service_config — किसी सेवा के लिए, App Check को लागू करने की सुविधा चालू करें
  • google_firebase_app_check_app_attest_config — App Attest की सेवा देने वाली कंपनी के साथ, Apple प्लैटफ़ॉर्म पर काम करने वाला ऐप्लिकेशन रजिस्टर करना
  • google_firebase_app_check_device_check_config — DeviceCheck की सेवा देने वाली कंपनी के साथ, Apple प्लैटफ़ॉर्म पर काम करने वाला ऐप्लिकेशन रजिस्टर करना
  • google_firebase_app_check_play_integrity_config — Play Integrity की सेवा देने वाली कंपनी के साथ Android ऐप्लिकेशन को रजिस्टर करना
  • google_firebase_app_check_recaptcha_enterprise_config — reCAPTCHA Enterprise की सेवा देने वाली कंपनी के साथ वेब ऐप्लिकेशन को रजिस्टर करना
  • google_firebase_app_check_recaptcha_v3_config — reCAPTCHA वर्शन 3 की सेवा देने वाली कंपनी के साथ वेब ऐप्लिकेशन को रजिस्टर करना
  • google_firebase_app_check_debug_token — जांच के लिए डीबग टोकन इस्तेमाल करना

Firebase Extensions



इस्तेमाल के सामान्य उदाहरणों के लिए, Terraform की कॉन्फ़िगरेशन फ़ाइलों के सैंपल



समस्या हल करना और अक्सर पूछे जाने वाले सवाल