Teraform और Firebase का इस्तेमाल शुरू करना

Firebase, Terraform के साथ काम करना शुरू कर रहा है. अगर आप ऐसी टीम में शामिल हैं जिसे Firebase प्रोजेक्ट बनाने की प्रोसेस को ऑटोमेट और स्टैंडर्डाइज़ करना है, ताकि खास संसाधन उपलब्ध कराए जा सकें और सेवाएं चालू की जा सकें, तो Firebase के साथ Terraform का इस्तेमाल करना आपके लिए सही विकल्प हो सकता है.

Firebase के साथ Terraform का इस्तेमाल करने के लिए, यह बुनियादी वर्कफ़्लो अपनाएं:

  • Terraform कॉन्फ़िगरेशन फ़ाइल (.tf फ़ाइल) बनाना और उसे पसंद के मुताबिक बनाना. इस फ़ाइल में, उस इन्फ़्रास्ट्रक्चर के बारे में जानकारी होती है जिसे आपको प्रोविज़न करना है. इसका मतलब है कि आपको जिन संसाधनों को प्रोविज़न करना है और जिन सेवाओं को चालू करना है उनके बारे में जानकारी होती है.

  • gcloud CLI फ़ाइल में बताए गए इन्फ़्रास्ट्रक्चर को उपलब्ध कराने के लिए, Terraform के साथ इंटरफ़ेस करने वाले gcloud CLI कमांड का इस्तेमाल करना..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 प्रोवाइडर का इस्तेमाल करना होगा, क्योंकि Firebase को Terraform के साथ इस्तेमाल करने का यह बीटा वर्शन है. प्रोडक्शन में इसका इस्तेमाल करते समय सावधानी बरतें.

    # 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 provider को इंस्टॉल करना होगा. इसके लिए, यह कमांड चलाएं:

    terraform init
  2. नीचे दी गई कमांड चलाकर, अपनी main.tf फ़ाइल में बताया गया इन्फ़्रास्ट्रक्चर बनाएं:

    terraform apply
  3. पुष्टि करें कि सब कुछ उम्मीद के मुताबिक चालू किया गया है या उपलब्ध कराया गया है:

    • पहला विकल्प: टर्मिनल में कॉन्फ़िगरेशन देखने के लिए, यह कमांड चलाएं:

      terraform show
    • दूसरा विकल्प: Firebase कंसोल में अपना Firebase प्रोजेक्ट देखें.



Terraform के साथ काम करने वाले Firebase संसाधन

नीचे दिए गए Firebase और Google संसाधनों के साथ Terraform का इस्तेमाल किया जा सकता है. साथ ही, हम इसमें लगातार नए संसाधन जोड़ते रहते हैं! इसलिए, अगर आपको Terraform की मदद से मैनेज करने के लिए कोई संसाधन नहीं दिख रहा है, तो कुछ समय बाद फिर से देखें कि वह उपलब्ध है या नहीं. इसके अलावा, GitHub repo में समस्या की शिकायत करके भी अनुरोध किया जा सकता है.


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_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 — Google, Facebook या Apple जैसे सामान्य फ़ेडरेटेड आइडेंटिटी प्रोवाइडर कॉन्फ़िगर करें

  • identity_platform_oauth_idp_config — OAuth की सुविधा देने वाले किसी भी आइडेंटिटी प्रोवाइडर (आईडीपी) के सोर्स कॉन्फ़िगर करना

  • google_identity_platform_inbound_saml_config — एसएएमएल इंटिग्रेशन कॉन्फ़िगर करें

फ़िलहाल, इन पर काम नहीं करता:

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

Firebase App Hosting

  • google_firebase_app_hosting_backendFirebase App Hosting बैकएंड बनाएं और उसे मैनेज करें. इसमें GitHub रिपॉज़िटरी कनेक्शन और लगातार डिप्लॉयमेंट के लिए लाइव ब्रांच शामिल है.

  • google_firebase_app_hosting_build — किसी खास पॉइंट पर, कोडबेस के रेफ़रंस टैग और समय के हिसाब से बैकएंड के लिए बिल्ड बनाएं.

  • google_firebase_app_hosting_traffic — कोई बिल्ड रोल आउट करें या GitHub के लगातार डिप्लॉयमेंट को कॉन्फ़िगर करें.


Firebase Data Connect


Firebase Realtime Database

फ़िलहाल, इन पर काम नहीं करता:

  • Terraform के ज़रिए Firebase Realtime Database Security Rules को डिप्लॉय करना. अन्य टूलिंग का इस्तेमाल करके, इन Security Rules को डिप्लॉय करने का तरीका जानें. इसमें प्रोग्राम के हिसाब से काम करने वाले विकल्प भी शामिल हैं

Cloud Firestore

  • google_firestore_databaseCloud 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_object — किसी Cloud Storage बकेट में कोई ऑब्जेक्ट जोड़ना

    अहम जानकारी: इस फ़ाइल में, असली एंड-यूज़र या प्रोडक्शन डेटा का इस्तेमाल न करें.


Firebase Security Rules (Cloud Firestore और Cloud Storage के लिए)

ध्यान दें कि Firebase Realtime Database, Firebase Realtime Database के लिए अलग प्रोविज़निंग सिस्टम का इस्तेमाल करता है.Firebase Security Rules

  • google_firebaserules_rulesetFirebase Security Rules को तय करें, जो Cloud Firestore इंस्टेंस या Cloud Storage बकेट पर लागू होते हैं

  • google_firebaserules_release — किसी Cloud Firestore इंस्टेंस या Cloud Storage बकेट में कुछ खास नियमों का सेट डिप्लॉय करना


Firebase App Check


Firebase Extensions



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



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