टेराफॉर्म और फायरबेस के साथ शुरुआत करें

फायरबेस, टेराफॉर्म का समर्थन करना शुरू कर रहा है। यदि आप ऐसी टीम में हैं जो प्रावधानित विशिष्ट संसाधनों और सक्षम सेवाओं के साथ फायरबेस प्रोजेक्ट बनाने को स्वचालित और मानकीकृत करना चाहते हैं, तो फायरबेस के साथ टेराफॉर्म का उपयोग करना आपके लिए उपयुक्त हो सकता है।

फायरबेस के साथ टेराफॉर्म का उपयोग करने के लिए बुनियादी वर्कफ़्लो में निम्नलिखित शामिल हैं:

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

  • .tf फ़ाइल में निर्दिष्ट बुनियादी ढांचे का प्रावधान करने के लिए gCloud CLI कमांड का उपयोग टेराफॉर्म के साथ इंटरफ़ेस को करता है।

आप टेराफॉर्म और फायरबेस के साथ क्या कर सकते हैं?

इस गाइड में उदाहरण सामान्यीकृत वर्कफ़्लो एक एंड्रॉइड ऐप के साथ एक नया फायरबेस प्रोजेक्ट बना रहा है। लेकिन आप टेराफ़ॉर्म के साथ और भी बहुत कुछ कर सकते हैं, जैसे:

  • टेराफॉर्म का उपयोग करके मौजूदा बुनियादी ढांचे को हटाएं और संशोधित करें।

  • टेराफ़ॉर्म का उपयोग करके उत्पाद-विशिष्ट कॉन्फ़िगरेशन और कार्यों को प्रबंधित करें, जैसे:

    • फायरबेस प्रमाणीकरण साइन-इन प्रदाताओं को सक्षम करना।
    • क्लाउड स्टोरेज बकेट या डेटाबेस इंस्टेंसेस बनाना और उनके लिए फायरबेस सुरक्षा नियम तैनात करना।

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



फायरबेस के साथ टेराफॉर्म का उपयोग करने के लिए सामान्यीकृत वर्कफ़्लो

आवश्यक शर्तें

यह गाइड फायरबेस के साथ टेराफॉर्म का उपयोग करने का एक परिचय है, इसलिए यह टेराफॉर्म के साथ बुनियादी दक्षता मानता है। सुनिश्चित करें कि आपने इस वर्कफ़्लो को शुरू करने से पहले निम्नलिखित आवश्यक शर्तें पूरी कर ली हैं।

  • टेराफॉर्म इंस्टॉल करें और उनके आधिकारिक ट्यूटोरियल का उपयोग करके टेराफॉर्म से खुद को परिचित करें।

  • Google क्लाउड CLI (gCloud CLI) इंस्टॉल करेंउपयोगकर्ता खाते या सेवा खाते का उपयोग करके लॉगिन करें।


चरण 1: टेराफ़ॉर्म कॉन्फ़िग फ़ाइल बनाएं और कस्टमाइज़ करें

टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइल को दो मुख्य अनुभागों की आवश्यकता होती है (जिनका वर्णन नीचे विस्तार से किया गया है):

अपना provider स्थापित करें

चाहे कोई भी फायरबेस उत्पाद या सेवाएँ शामिल हों, एक provider सेटअप की आवश्यकता होती है।

  1. अपनी स्थानीय निर्देशिका में एक टेराफ़ॉर्म कॉन्फ़िग फ़ाइल (जैसे 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 = "~> 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
    }
    

    फ़ायरबेस के साथ टेराफ़ॉर्म का उपयोग करते समय विभिन्न प्रकार की प्रोजेक्ट-संबंधित विशेषताओं (जिसमें यह मार्गदर्शिका "कोटा-चेक प्रोजेक्ट" कहती है) भी शामिल है) के बारे में अधिक जानें।

  3. अपनी कॉन्फ़िग फ़ाइल को पूरा करने के लिए अगले अनुभाग पर जाएँ और निर्दिष्ट करें कि कौन सा बुनियादी ढाँचा बनाना है।

निर्दिष्ट करें कि resource ब्लॉकों का उपयोग करके कौन सा बुनियादी ढांचा तैयार किया जाए

आपकी टेराफ़ॉर्म कॉन्फ़िग फ़ाइल (इस गाइड के लिए, आपकी main.tf फ़ाइल) में, आपको वह सभी बुनियादी ढाँचा निर्दिष्ट करना होगा जिसे आप टेराफ़ॉर्म बनाना चाहते हैं (मतलब वे सभी संसाधन जिन्हें आप प्रावधान करना चाहते हैं और वे सभी सेवाएँ जिन्हें आप सक्षम करना चाहते हैं)। इस गाइड में, टेराफॉर्म का समर्थन करने वाले सभी फायरबेस संसाधनों की पूरी सूची ढूंढें।

  1. अपनी main.tf फ़ाइल खोलें.

  2. provider सेटअप के अंतर्गत, resource ब्लॉकों की निम्नलिखित कॉन्फ़िगरेशन शामिल करें।

    यह मूल उदाहरण एक नया फायरबेस प्रोजेक्ट बनाता है और फिर उस प्रोजेक्ट के भीतर एक फायरबेस एंड्रॉइड ऐप बनाता है।

    # 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: निर्दिष्ट बुनियादी ढाँचा बनाने के लिए टेराफ़ॉर्म कमांड चलाएँ

संसाधनों का प्रावधान करने और अपनी main.tf फ़ाइल में निर्दिष्ट सेवाओं को सक्षम करने के लिए, अपनी main.tf फ़ाइल के समान निर्देशिका से निम्नलिखित कमांड चलाएँ। इन आदेशों के बारे में विस्तृत जानकारी के लिए, टेराफ़ॉर्म दस्तावेज़ देखें।

  1. यदि यह पहली बार है कि आप निर्देशिका में टेराफ़ॉर्म कमांड चला रहे हैं, तो आपको कॉन्फ़िगरेशन निर्देशिका प्रारंभ करने और Google टेराफ़ॉर्म प्रदाता स्थापित करने की आवश्यकता है। निम्न आदेश चलाकर ऐसा करें:

    terraform init
  2. निम्नलिखित कमांड चलाकर अपनी main.tf फ़ाइल में निर्दिष्ट बुनियादी ढाँचा बनाएँ:

    terraform apply
  3. पुष्टि करें कि सब कुछ अपेक्षा के अनुरूप प्रावधानित या सक्षम किया गया था:

    • विकल्प 1: निम्नलिखित कमांड चलाकर अपने टर्मिनल में मुद्रित कॉन्फ़िगरेशन देखें:

      terraform show
    • विकल्प 2: फायरबेस कंसोल में अपना फायरबेस प्रोजेक्ट देखें।



टेराफॉर्म समर्थन के साथ फायरबेस संसाधन

निम्नलिखित फायरबेस और Google संसाधनों में टेराफॉर्म समर्थन है। और हम हर समय अधिक संसाधन जोड़ रहे हैं! इसलिए यदि आपको वह संसाधन नहीं दिख रहा है जिसे आप टेराफॉर्म के साथ प्रबंधित करना चाहते हैं, तो यह देखने के लिए जल्द ही वापस जांचें कि क्या यह उपलब्ध है या GitHub रेपो में एक समस्या दर्ज करके इसका अनुरोध करें।


फायरबेस प्रोजेक्ट और ऐप प्रबंधन

  • google_firebase_project - मौजूदा Google क्लाउड प्रोजेक्ट पर Firebase सेवाओं को सक्षम करें

  • google_firebase_project_location - प्रोजेक्ट के डिफ़ॉल्ट Google क्लाउड संसाधनों के लिए स्थान निर्धारित करें

  • फायरबेस ऐप्स

    • google_firebase_apple_app - एक Firebase Apple प्लेटफ़ॉर्म ऐप बनाएं या प्रबंधित करें
    • google_firebase_android_app - फायरबेस एंड्रॉइड ऐप बनाएं या प्रबंधित करें
    • google_firebase_web_app - फायरबेस वेब ऐप बनाएं या प्रबंधित करें

फायरबेस प्रमाणीकरण

  • google_identity_platform_config - Google क्लाउड आइडेंटिटी प्लेटफ़ॉर्म (GCIP) सक्षम करें (जो फायरबेस प्रमाणीकरण के लिए बैकएंड है) और प्रोजेक्ट-स्तरीय प्रमाणीकरण सेटिंग्स प्रदान करें

    • टेराफॉर्म के माध्यम से फायरबेस प्रमाणीकरण को कॉन्फ़िगर करने के लिए जीसीआईपी को सक्षम करने की आवश्यकता है। फायरबेस प्रमाणीकरण कैसे सेट करें, इसके लिए नमूना .tf फ़ाइल की समीक्षा करना सुनिश्चित करें।

    • जिस परियोजना में टेराफॉर्म जीसीआईपी और/या फायरबेस प्रमाणीकरण को सक्षम करेगा वह ब्लेज़ मूल्य निर्धारण योजना पर होना चाहिए (अर्थात, परियोजना में एक संबद्ध क्लाउड बिलिंग खाता होना चाहिए)। आप इसे 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 एकीकरण कॉन्फ़िगर करें

अभी तक समर्थित नहीं:

  • टेराफॉर्म के माध्यम से बहु-कारक प्रमाणीकरण (एमएफए) को कॉन्फ़िगर करना

फायरबेस रीयलटाइम डेटाबेस

अभी तक समर्थित नहीं:

  • टेराफॉर्म के माध्यम से फायरबेस रीयलटाइम डेटाबेस सुरक्षा नियमों को तैनात करना (प्रोग्रामेटिक विकल्पों सहित अन्य टूलींग का उपयोग करके इन नियमों को तैनात करने का तरीका जानें)

क्लाउड फायरस्टोर

  • google_firestore_database - एक क्लाउड फायरस्टोर इंस्टेंस बनाएं

  • google_firestore_index - क्लाउड फायरस्टोर के लिए कुशल क्वेरी सक्षम करें

  • google_firestore_document - एक संग्रह में एक विशिष्ट दस्तावेज़ के साथ क्लाउड फायरस्टोर इंस्टेंस को सीड करें

    महत्वपूर्ण: इस बीज दस्तावेज़ में वास्तविक अंतिम-उपयोगकर्ता या उत्पादन डेटा का उपयोग न करें।


फायरबेस के लिए क्लाउड स्टोरेज


फायरबेस सुरक्षा नियम (क्लाउड फायरस्टोर और क्लाउड स्टोरेज के लिए)

ध्यान दें कि फायरबेस रीयलटाइम डेटाबेस अपने फायरबेस सुरक्षा नियमों के लिए एक अलग प्रावधान प्रणाली का उपयोग करता है।

  • google_firebaserules_ruleset - फायरबेस सुरक्षा नियमों को परिभाषित करें जो क्लाउड फायरस्टोर इंस्टेंस या क्लाउड स्टोरेज बकेट पर लागू होते हैं

  • google_firebaserules_release - क्लाउड फायरस्टोर इंस्टेंस या क्लाउड स्टोरेज बकेट में विशिष्ट नियम सेट तैनात करें


फायरबेस ऐप चेक


फायरबेस एक्सटेंशन

  • google_firebase_extensions_instance - फायरबेस एक्सटेंशन का एक इंस्टेंस इंस्टॉल या अपडेट करें



सामान्य उपयोग के मामलों के लिए नमूना टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइलें



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