feat: Add Terraform configuration for Google Cloud project
This commit introduces the complete Terraform infrastructure configuration for setting up the Rothbard Law Group client portal on Google Cloud. The changes include: - Added google-beta provider for Firebase resources - Created new Google Cloud Project with proper service enabling - Enabled required Firebase APIs (firebase.googleapis.com) - Enabled Firestore API (firestore.googleapis.com) - Created Firebase Web App for the project - Created Firestore database in native mode - Added billing account configuration - Updated project name and ID variables - Added output values for Firebase app ID and Firestore database name This infrastructure setup supports the application's authentication, session management, and data storage needs using Firebase Authentication, Firestore, and Filevine API integration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
65
main.tf
65
main.tf
@@ -2,12 +2,21 @@
|
||||
provider "google" {
|
||||
project = var.project_id
|
||||
region = var.region
|
||||
user_project_override = false
|
||||
}
|
||||
|
||||
# Configure the google-beta provider for Firebase resources
|
||||
provider "google-beta" {
|
||||
project = var.project_id
|
||||
region = var.region
|
||||
user_project_override = false
|
||||
}
|
||||
|
||||
# Create a new Google Cloud Project
|
||||
resource "google_project" "main_project" {
|
||||
name = var.project_name
|
||||
project_id = var.project_id
|
||||
billing_account = var.billing_account
|
||||
|
||||
# Enable deletion policy to allow project deletion
|
||||
deletion_policy = "DELETE"
|
||||
@@ -22,6 +31,52 @@ resource "google_project_service" "project_services" {
|
||||
depends_on = [google_project.main_project]
|
||||
}
|
||||
|
||||
# Enable required Firebase APIs
|
||||
resource "google_project_service" "firebase_services" {
|
||||
project = google_project.main_project.project_id
|
||||
service = "firebase.googleapis.com"
|
||||
|
||||
# Wait for the project to be created before enabling services
|
||||
depends_on = [google_project.main_project]
|
||||
}
|
||||
|
||||
# Enable Firestore API (required for Firestore database)
|
||||
resource "google_project_service" "firestore_service" {
|
||||
project = google_project.main_project.project_id
|
||||
service = "firestore.googleapis.com"
|
||||
|
||||
# Wait for Firebase services to be enabled before enabling Firestore
|
||||
depends_on = [google_project_service.firebase_services]
|
||||
}
|
||||
|
||||
resource "google_firebase_project" "firebase_project" {
|
||||
provider = google-beta
|
||||
project = google_project.main_project.project_id
|
||||
}
|
||||
|
||||
# Create Firebase Web App
|
||||
resource "google_firebase_web_app" "main_app" {
|
||||
provider = google-beta
|
||||
# project = "${google_project.main_project.name}"
|
||||
display_name = "Rothbard Law Group"
|
||||
|
||||
# Wait for Firebase services to be enabled before creating app
|
||||
depends_on = [google_project_service.firebase_services]
|
||||
}
|
||||
|
||||
# Create Firestore Database
|
||||
resource "google_firestore_database" "main_firestore" {
|
||||
provider = google-beta
|
||||
project = google_project.main_project.project_id
|
||||
name = "${google_project.main_project.name}"
|
||||
location_id = var.region
|
||||
type = "FIRESTORE_NATIVE"
|
||||
concurrency_mode = "OPTIMISTIC"
|
||||
|
||||
# Wait for Firestore API to be enabled before creating database
|
||||
depends_on = [google_project_service.firestore_service]
|
||||
}
|
||||
|
||||
# Output the project ID and name
|
||||
output "project_id" {
|
||||
value = google_project.main_project.project_id
|
||||
@@ -29,4 +84,12 @@ output "project_id" {
|
||||
|
||||
output "project_name" {
|
||||
value = google_project.main_project.name
|
||||
}
|
||||
}
|
||||
|
||||
output "firebase_app_id" {
|
||||
value = google_firebase_web_app.main_app.app_id
|
||||
}
|
||||
|
||||
output "firestore_database_name" {
|
||||
value = google_firestore_database.main_firestore.name
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user