feat: Update Terraform configuration for Google Cloud project with Firebase Authentication services
- Added billing_project to Google Cloud providers - Enabled user_project_override for both providers - Added Firebase Authentication service resource - Configured Identity Platform with email/password, phone, and anonymous sign-in - Set up authorized domains for local and Firebase hosting - Added dependency relationships between resources This enhances the project's infrastructure configuration to properly support Firebase Authentication and related services.
This commit is contained in:
4
DEPLOY.md
Normal file
4
DEPLOY.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
Steps for deploy:
|
||||||
|
1. Try applying terraform
|
||||||
|
2. gcloud auth application-default set-quota-project `the project id`
|
||||||
|
3. retry
|
||||||
63
main.tf
63
main.tf
@@ -1,15 +1,17 @@
|
|||||||
# Configure the Google Cloud provider
|
# Configure the Google Cloud provider
|
||||||
provider "google" {
|
provider "google" {
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
|
billing_project = var.project_id
|
||||||
region = var.region
|
region = var.region
|
||||||
user_project_override = false
|
user_project_override = true
|
||||||
}
|
}
|
||||||
|
|
||||||
# Configure the google-beta provider for Firebase resources
|
# Configure the google-beta provider for Firebase resources
|
||||||
provider "google-beta" {
|
provider "google-beta" {
|
||||||
project = var.project_id
|
project = var.project_id
|
||||||
|
billing_project = var.project_id
|
||||||
region = var.region
|
region = var.region
|
||||||
user_project_override = false
|
user_project_override = true
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a new Google Cloud Project
|
# Create a new Google Cloud Project
|
||||||
@@ -49,6 +51,15 @@ resource "google_project_service" "firestore_service" {
|
|||||||
depends_on = [google_project_service.firebase_services]
|
depends_on = [google_project_service.firebase_services]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "google_project_service" "auth_service" {
|
||||||
|
project = google_project.main_project.project_id
|
||||||
|
service = "identitytoolkit.googleapis.com"
|
||||||
|
|
||||||
|
# Wait for Firebase services to be enabled before enabling Firestore
|
||||||
|
depends_on = [google_project_service.firestore_service]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
resource "google_firebase_project" "firebase_project" {
|
resource "google_firebase_project" "firebase_project" {
|
||||||
provider = google-beta
|
provider = google-beta
|
||||||
project = google_project.main_project.project_id
|
project = google_project.main_project.project_id
|
||||||
@@ -77,6 +88,54 @@ resource "google_firestore_database" "main_firestore" {
|
|||||||
depends_on = [google_project_service.firestore_service]
|
depends_on = [google_project_service.firestore_service]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Configure Identity Platform for Firebase Authentication
|
||||||
|
resource "google_identity_platform_config" "main_config" {
|
||||||
|
provider = google-beta
|
||||||
|
project = google_project.main_project.project_id
|
||||||
|
|
||||||
|
# Auto-deletes anonymous users
|
||||||
|
autodelete_anonymous_users = true
|
||||||
|
|
||||||
|
# Configures local sign-in methods, like anonymous, email/password, and phone authentication.
|
||||||
|
sign_in {
|
||||||
|
allow_duplicate_emails = true
|
||||||
|
|
||||||
|
anonymous {
|
||||||
|
enabled = true
|
||||||
|
}
|
||||||
|
|
||||||
|
email {
|
||||||
|
enabled = true
|
||||||
|
password_required = false
|
||||||
|
}
|
||||||
|
|
||||||
|
phone_number {
|
||||||
|
enabled = true
|
||||||
|
test_phone_numbers = {
|
||||||
|
"+11231231234" = "000000"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Sets an SMS region policy.
|
||||||
|
sms_region_config {
|
||||||
|
allowlist_only {
|
||||||
|
allowed_regions = [
|
||||||
|
"US",
|
||||||
|
"CA",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Configures authorized domains.
|
||||||
|
authorized_domains = [
|
||||||
|
"localhost",
|
||||||
|
"${google_project.main_project.project_id}.firebaseapp.com",
|
||||||
|
"${google_project.main_project.project_id}.web.app",
|
||||||
|
]
|
||||||
|
depends_on = [google_project_service.auth_service]
|
||||||
|
}
|
||||||
|
|
||||||
# Output the project ID and name
|
# Output the project ID and name
|
||||||
output "project_id" {
|
output "project_id" {
|
||||||
value = google_project.main_project.project_id
|
value = google_project.main_project.project_id
|
||||||
|
|||||||
Reference in New Issue
Block a user