Bắt đầu sử dụng Terraform và Firebase

Firebase bắt đầu hỗ trợ Địa hình. Nếu bạn thuộc một nhóm muốn tự động hoá và chuẩn hoá quy trình tạo Firebase dự án có tài nguyên cụ thể được cung cấp và dịch vụ được kích hoạt, sau đó sử dụng Terraform với Firebase có thể là lựa chọn phù hợp với bạn.

Sau đây là quy trình cơ bản để sử dụng Terraform với Firebase:

  • Tạo và tuỳ chỉnh tệp cấu hình Terraform (tệp .tf) chỉ định cơ sở hạ tầng mà bạn muốn cung cấp (tức là các tài nguyên mà bạn muốn cung cấp và những dịch vụ bạn muốn bật).

  • Dùng các lệnh CLI của gcloud giao tiếp với Terraform để cung cấp cơ sở hạ tầng được chỉ định trong tệp .tf.

Bạn có thể làm gì với Terraform và Firebase?

Ví dụ về quy trình công việc tổng quát trong hướng dẫn này là tạo một dự án Firebase mới bằng một ứng dụng Android. Tuy nhiên, bạn có thể làm được rất nhiều việc các tính năng khác với Terraform, chẳng hạn như:

  • Xoá và sửa đổi cơ sở hạ tầng hiện có bằng Terraform.

  • Quản lý cấu hình và các tác vụ theo sản phẩm cụ thể bằng Terraform, chẳng hạn như:

    • Bật nhà cung cấp dịch vụ đăng nhập để Xác thực Firebase.
    • Tạo bộ chứa hoặc thực thể cơ sở dữ liệu trong Cloud Storage và triển khai Firebase bảo mật áp dụng cho chúng.

Bạn có thể dùng các lệnh và tệp cấu hình Terraform tiêu chuẩn để hoàn thành tất cả những việc này công việc. Để giúp bạn giải quyết vấn đề này, chúng tôi đã cung cấp tệp cấu hình Terraform mẫu cho một số trường hợp sử dụng phổ biến trường hợp.



Quy trình công việc chung để sử dụng Terraform với Firebase

Điều kiện tiên quyết

Hướng dẫn này là phần giới thiệu về cách sử dụng Terraform với Firebase, vì vậy, hướng dẫn này giả định thành thạo cơ bản với Terraform. Đảm bảo rằng bạn đã hoàn thành các bước sau những điều kiện tiên quyết trước khi bắt đầu quy trình này.

  • Cài đặt Terraform và làm quen với Terraform qua các hướng dẫn chính thức của họ.

  • Cài đặt Google Cloud CLI (gcloud CLI). Đăng nhập bằng tài khoản người dùng hoặc tài khoản dịch vụ.


Bước 1: Tạo và tuỳ chỉnh tệp cấu hình Terraform

Tệp cấu hình Terraform cần có hai phần chính (được mô tả chi tiết) bên dưới):

Thiết lập thiết bị provider của bạn

Bạn phải thiết lập provider bất kể sản phẩm hoặc dịch vụ của Firebase là gì liên quan.

  1. Tạo một tệp cấu hình Terraform (chẳng hạn như tệp main.tf) trong cục bộ của bạn thư mục.

    Trong hướng dẫn này, bạn sẽ sử dụng tệp cấu hình này để chỉ định cả provider và tất cả cơ sở hạ tầng mà bạn muốn Terraform tạo. Xin lưu ý rằng Tuy nhiên, bạn có các lựa chọn về cách thêm chế độ thiết lập nhà cung cấp.

  2. Thêm phần thiết lập provider sau đây ở đầu tệp main.tf.

    Bạn phải sử dụng trình cung cấp google-beta vì đây là bản phát hành beta của thông qua Firebase với Terraform. Hãy thận trọng khi sử dụng phiên bản chính thức.

    # 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
    }
    

    Tìm hiểu thêm về chính sách nhiều loại thuộc tính liên quan đến dự án (bao gồm định dạng mà hướng dẫn này gọi là "dự án kiểm tra hạn mức") khi sử dụng Terraform với Firebase.

  3. Tiếp tục chuyển đến phần tiếp theo để hoàn tất tệp cấu hình và chỉ định cơ sở hạ tầng để tạo.

Chỉ định cơ sở hạ tầng cần tạo bằng khối resource

Trong tệp cấu hình Terraform (đối với hướng dẫn này là tệp main.tf), bạn cần chỉ định tất cả cơ sở hạ tầng mà bạn muốn Terraform tạo ra (nghĩa là tất cả tài nguyên bạn muốn cung cấp cũng như tất cả dịch vụ bạn muốn bật). Ngang bằng hướng dẫn này, tìm danh sách đầy đủ tất cả Các tài nguyên Firebase hỗ trợ Terraform.

  1. Mở tệp main.tf của bạn.

  2. Trong phần thiết lập provider, hãy thêm cấu hình sau của resource chặn.

    Ví dụ cơ bản này sẽ tạo một dự án Firebase mới, sau đó tạo một Ứng dụng Android của Firebase trong dự án đó.

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


Bước 2: Chạy các lệnh Terraform để tạo cơ sở hạ tầng đã chỉ định

Để cung cấp tài nguyên và bật các dịch vụ được chỉ định trong main.tf của bạn hãy chạy các lệnh sau từ cùng thư mục với tệp main.tf. Để biết thông tin chi tiết về các lệnh này, hãy xem Tài liệu về địa hình.

  1. Nếu đây là lần đầu tiên bạn chạy các lệnh Terraform trong , bạn cần khởi chạy thư mục cấu hình và cài đặt nhà cung cấp Google Terraform. Hãy thực hiện việc này bằng cách chạy lệnh sau:

    terraform init
  2. Tạo cơ sở hạ tầng được chỉ định trong tệp main.tf bằng cách chạy lệnh sau đây:

    terraform apply
  3. Xác nhận rằng mọi thứ đã được cấp phép hoặc bật như mong đợi:

    • Cách 1: Xem cấu hình được in trong dòng lệnh của bạn bằng cách chạy lệnh sau đây:

      terraform show
    • Cách 2: Xem dự án Firebase của bạn trong Bảng điều khiển của Firebase.



Các tài nguyên Firebase có tính năng hỗ trợ Terraform

Firebase và các tài nguyên sau của Google có hỗ trợ Terraform. Và chúng tôi luôn bổ sung tài nguyên! Vì vậy, nếu không thấy tài nguyên mà bạn muốn quản lý bằng Terraform, sau đó hãy kiểm tra lại sớm để xem đã có dịch vụ này hay chưa yêu cầu bằng cách báo cáo sự cố trong kho lưu trữ GitHub.


Quản lý ứng dụng và dự án Firebase

  • google_firebase_project — bật các dịch vụ Firebase trên một dự án Google Cloud hiện có

  • google_firebase_project_location — đặt vị trí cho các tài nguyên mặc định của dự án trên Google Cloud

  • Ứng dụng Firebase


Xác thực Firebase

  • google_identity_platform_config — bật Google Cloud Identity Platform (GCIP) (nền tảng phụ trợ cho tính năng Xác thực Firebase) và cung cấp chế độ cài đặt xác thực cấp dự án

    • Để định cấu hình phương thức xác thực Firebase qua Terraform, bạn phải bật GCIP. Nhãn hiệu hãy nhớ xem lại tệp .tf mẫu để biết cách thiết lập tính năng Xác thực Firebase.

    • Dự án trong đó Terraform sẽ bật tính năng Xác thực GCIP và/hoặc Firebase phải có trong Gói giá linh hoạt (tức là dự án phải có tài khoản thanh toán Cloud). Bạn có thể thực hiện việc này theo phương thức lập trình bằng thiết lập billing_account trong tài nguyên google_project.

    • Tài nguyên này cũng hỗ trợ nhiều cấu hình hơn, chẳng hạn như phương thức đăng nhập cục bộ, như xác thực ẩn danh, xác thực email/mật khẩu và điện thoại cũng như các chức năng chặn và miền được uỷ quyền.

  • google_identity_platform_default_supported_idp_config — định cấu hình các Nhà cung cấp danh tính được liên kết phổ biến, chẳng hạn như Google, Facebook hoặc Apple

  • identity_platform_oauth_idp_config — định cấu hình nguồn Nhà cung cấp danh tính OAuth (IdP) tuỳ ý

  • google_identity_platform_inbound_saml_config — định cấu hình chế độ tích hợp với SAML

Chưa hỗ trợ:

  • Định cấu hình chế độ xác thực đa yếu tố (MFA) qua Terraform

Cơ sở dữ liệu theo thời gian thực của Firebase

Chưa hỗ trợ:

  • Triển khai Quy tắc bảo mật cơ sở dữ liệu theo thời gian thực của Firebase thông qua Terraform (tìm hiểu cách triển khai các Quy tắc này bằng công cụ khác, bao gồm cả tuỳ chọn có lập trình)

Cloud Firestore

  • google_firestore_database — tạo một phiên bản Cloud Firestore

  • google_firestore_index — hỗ trợ truy vấn hiệu quả cho Cloud Firestore

  • google_firestore_document — khởi tạo một thực thể Cloud Firestore bằng một tài liệu cụ thể trong một bộ sưu tập

    Lưu ý quan trọng: Không sử dụng dữ liệu sản xuất hoặc dữ liệu của người dùng cuối thực trong số ngẫu nhiên này tài liệu.


Cloud Storage cho Firebase


Quy tắc bảo mật của Firebase (dành cho Cloud Firestore và Cloud Storage)

Lưu ý rằng Cơ sở dữ liệu theo thời gian thực của Firebase sử dụng một hệ thống cấp phép khác cho Quy tắc bảo mật của Firebase.

  • google_firebaserules_ruleset — xác định Quy tắc bảo mật Firebase áp dụng cho phiên bản Cloud Firestore hoặc Bộ chứa Cloud Storage

  • google_firebaserules_release — triển khai các tập quy tắc cụ thể cho phiên bản Cloud Firestore hoặc Bộ chứa Cloud Storage


Kiểm tra ứng dụng Firebase


Tiện ích Firebase



Tệp cấu hình Terraform mẫu cho các trường hợp sử dụng phổ biến



Khắc phục sự cố và câu hỏi thường gặp