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 डिप्लॉय करना.

इन सभी टास्क को पूरा करने के लिए, Terraform की स्टैंडर्ड कॉन्फ़िगरेशन फ़ाइलों और निर्देशों का इस्तेमाल किया जा सकता है. इस काम में आपकी मदद करने के लिए, हमने कई सामान्य इस्तेमाल के उदाहरणों के लिए, Terraform कॉन्फ़िगरेशन फ़ाइलों के सैंपल उपलब्ध कराए हैं.



Firebase के साथ Terraform का इस्तेमाल करने के लिए सामान्य वर्कफ़्लो

ज़रूरी शर्तें

इस गाइड में, Firebase के साथ Terraform का इस्तेमाल करने के बारे में बताया गया है. इसलिए, इसमें यह माना गया है कि आप Terraform के बारे में बुनियादी जानकारी रखते हैं. यह वर्कफ़्लो शुरू करने से पहले, पक्का करें कि आपने ये ज़रूरी शर्तें पूरी कर ली हों.

  • Terraform इंस्टॉल करें और Terraform के आधिकारिक ट्यूटोरियल का इस्तेमाल करके, Terraform के बारे में जानें.

  • Google Cloud CLI (gcloud CLI) इंस्टॉल करें. इसके बाद, उपयोगकर्ता खाते या सेवा खाते का इस्तेमाल करके लॉगिन करें.


पहला चरण: Terraform कॉन्फ़िगरेशन फ़ाइल बनाना और उसे पसंद के मुताबिक बनाना

Terraform कॉन्फ़िगरेशन फ़ाइल में दो मुख्य सेक्शन होने चाहिए. इनके बारे में यहां पूरी जानकारी दी गई है:

अपना provider सेट अप करना

provider सेटअप करना ज़रूरी है, भले ही इसमें Firebase के कौनसे प्रॉडक्ट या सेवाएं शामिल हों.

  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 = "~> 5.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 प्रोजेक्ट देखें.



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 की मदद से, कई तरीकों से पुष्टि करने की सुविधा (MFA) कॉन्फ़िगर करना

Firebase Realtime Database

फ़िलहाल, यह सुविधा इन डिवाइसों पर काम नहीं करती:

  • Terraform की मदद से Firebase Realtime Database Security Rules को डिप्लॉय करना (प्रोग्राम के विकल्पों के साथ-साथ, अन्य टूल का इस्तेमाल करके इन 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_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

  • google_firebase_app_check_service_config — किसी सेवा के लिए App Check नीति उल्लंघन ठीक करने की सुविधा चालू करना
  • google_firebase_app_check_app_attest_config — ऐप्लिकेशन की पुष्टि करने वाली सेवा देने वाली कंपनी के साथ, 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 कॉन्फ़िगरेशन फ़ाइलों के सैंपल



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