Bắt đầu với Terraform và Firebase

Firebase đang bắt đầu hỗ trợ Terraform . Nếu bạn thuộc nhóm muốn tự động hóa và tiêu chuẩn hóa việc tạo dự án Firebase với các tài nguyên cụ thể được cung cấp và dịch vụ được bật thì việc sử dụng Terraform với Firebase có thể phù hợp với bạn.

Quy trình làm việc cơ bản để sử dụng Terraform với Firebase bao gồm:

  • Tạo và tùy chỉnh tệp cấu hình Terraform (tệp .tf ) chỉ định cơ sở hạ tầng bạn muốn cung cấp (nghĩa là các tài nguyên bạn muốn cung cấp và các dịch vụ bạn muốn kích hoạt).

  • Sử dụng các lệnh gCloud CLI có giao diện 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 làm việc tổng quát trong hướng dẫn này là tạo dự án Firebase mới bằng ứng dụng Android. Nhưng bạn có thể làm được nhiều hơn thế với Terraform, chẳng hạn như:

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

  • Quản lý cấu hình và tác vụ dành riêng cho sản phẩm bằng Terraform, như:

    • Kích hoạt nhà cung cấp đăng nhập Xác thực Firebase.
    • Tạo nhóm Lưu trữ đám mây hoặc phiên bản cơ sở dữ liệu và triển khai Quy tắc bảo mật Firebase cho chúng.

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



Quy trình làm việc tổng quát để 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, do đó, hướng dẫn này đòi hỏi trình độ cơ bản về Terraform. Đảm bảo rằng bạn đã hoàn thành các điều kiện tiên quyết sau đây trước khi bắt đầu dòng công việc này.

  • Cài đặt Terraform và làm quen với Terraform bằng 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à tùy chỉnh tệp cấu hình Terraform

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

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

Cần phải thiết lập provider bất kể sản phẩm hoặc dịch vụ Firebase nào có liên quan.

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

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

  2. Bao gồm thiết lập provider sau ở đầu tệp main.tf

    Bạn phải sử dụng nhà cung cấp google-beta vì đây là bản phát hành beta sử dụng Firebase với Terraform. Thận trọng khi sử dụng trong sản xuất.

    # 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ề các loại thuộc tính khác nhau liên quan đến dự án (bao gồm cả thuộc tính mà hướng dẫn này gọi là "dự án kiểm tra hạn ngạch") khi sử dụng Terraform với Firebase.

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

Chỉ định cơ sở hạ tầng nào sẽ tạo bằng cách sử dụng các khối resource

Trong tệp cấu hình Terraform của bạn (đối với hướng dẫn này, tệp main.tf của bạn), bạn cần chỉ định tất cả cơ sở hạ tầng mà bạn muốn Terraform tạo (nghĩa là tất cả các tài nguyên bạn muốn cung cấp và tất cả các dịch vụ bạn muốn kích hoạt). Trong hướng dẫn này, hãy tìm danh sách đầy đủ tất 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 bao gồm cấu hình sau của các khối resource .

    Ví dụ cơ bản này tạo một dự án Firebase mới và sau đó tạo Ứng dụng Android 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 lệnh Terraform để tạo cơ sở hạ tầng được chỉ định

Để cung cấp tài nguyên và kích hoạt các dịch vụ được chỉ định trong tệp 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 của bạn. Để biết thông tin chi tiết về các lệnh này, hãy xem tài liệu Terraform .

  1. Nếu đây là lần đầu tiên bạn chạy các lệnh Terraform trong thư mục, bạn cần khởi tạo thư mục cấu hình và cài đặt nhà cung cấp Google Terraform. 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 của bạn bằng cách chạy lệnh sau:

    terraform apply
  3. Xác nhận rằng mọi thứ đã được cung cấp hoặc kích hoạt như mong đợi:

    • Tùy chọn 1: Xem cấu hình được in trong thiết bị đầu cuối của bạn bằng cách chạy lệnh sau:

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



Tài nguyên Firebase có hỗ trợ Terraform

Các tài nguyên Firebase và Google sau đây có hỗ trợ Terraform. Và chúng tôi đang bổ sung thêm nhiều tài nguyên hơn! Vì vậy, nếu bạn không thấy tài nguyên mà mình muốn quản lý bằng Terraform, hãy kiểm tra lại sớm để xem tài nguyên đó có sẵn hay không hoặc yêu cầu tài nguyên đó bằng cách gửi vấn đề trong kho lưu trữ GitHub .


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

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

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

  • Ứng dụng Firebase


Xác thực Firebase

  • google_identity_platform_config - bật Google Cloud Identity Platform (GCIP) (là phần phụ trợ cho Xác thực Firebase) và cung cấp cài đặt xác thực cấp dự án

    • Định cấu hình Xác thực Firebase qua Terraform yêu cầu bật GCIP. Đảm bảo xem lại tệp .tf mẫu để biết cách thiết lập Xác thực Firebase .

    • Dự án mà Terraform sẽ kích hoạt Xác thực GCIP và/hoặc Firebase phải nằm trong gói định giá Blaze (nghĩa là dự án phải có tài khoản Thanh toán trên nền tảng đám mây được liên kết). Bạn có thể thực hiện việc này theo chương trình bằng cách đặt thuộc tính billing_account trong tài nguyên google_project .

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

  • google_identity_platform_default_supported_idp_config - định cấu hình Nhà cung cấp nhận dạng liên kết phổ biến, như Google, Facebook hoặc Apple

  • identity_platform_oauth_idp_config - định cấu hình các nguồn Nhà cung cấp nhận dạng OAuth (IdP) tùy ý

  • google_identity_platform_inbound_saml_config - định cấu hình tích hợp SAML

Chưa được hỗ trợ:

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

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

Chưa được hỗ trợ:

  • Triển khai Quy tắc bảo mật cơ sở dữ liệu thời gian thực 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ác tùy chọn có lập trình)

Cửa hàng đám mây

  • google_firestore_database - tạo phiên bản Cloud Firestore

  • google_firestore_index — kích hoạt các truy vấn hiệu quả cho Cloud Firestore

  • google_firestore_document - tạo phiên bản Cloud Firestore với một tài liệu cụ thể trong bộ sưu tập

    Quan trọng: Không sử dụng dữ liệu sản xuất hoặc dữ liệu người dùng cuối thực sự trong tài liệu gốc này.


Bộ nhớ đám mây cho Firebase


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

Lưu ý rằng Cơ sở dữ liệu thời gian thực Firebase sử dụng hệ thống cấp phép khác cho Quy tắc bảo mật 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 nhóm Cloud Storage

  • google_firebaserules_release - triển khai các bộ quy tắc cụ thể cho phiên bản Cloud Firestore hoặc nhóm Cloud Storage


Kiểm tra ứng dụng Firebase


Tiện ích mở rộng 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