Terraform module which creates and manages irebase resources on top of an existing GCP project.
module "firebase" {
source = "../../"
project_id = "project-id"
firestore_config = {
databases = [
{
id = "(default)"
location = "nam5"
type = "FIRESTORE_NATIVE"
concurrency_mode = "PESSIMISTIC"
app_engine_mode = "DISABLED"
documents = [
{
collection = "users"
document_id = "user1"
fields = { name = "Alice", role = "admin" }
subdocs = [
{
collection = "devices"
document_id = "device1"
fields = { os = "android", version = "13" }
}
]
}
]
}
]
}
firebase_storage = [
{
name = "my-firebase-bucket"
location = "US"
labels = { env = "dev" }
}
]
firebase_rules = [
{
id = "firestore-inline-rules"
content = <<EOT
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
}
}
EOT
},
{
id = "firestore-file-rules"
file_path = "${path.module}/firestore.rules"
}
]
firebase_auth = {
enabled_providers = ["EMAIL"]
allow_duplicate_emails = false
password_policy = {
min_length = 8
}
}
}- firestore database - Example showing how to provision a Firestore database, including attaching Firebase security rules.
| Name | Version |
|---|---|
| terraform | >= 1.5 |
| ~> 6.0 | |
| google-beta | ~> 6.0 |
| Name | Version |
|---|---|
| ~> 6.0 | |
| Google-beta | ~> 6.0 |
No modules.
| Name | Type |
|---|---|
| google_project_service.required_apis | resource |
| google_firebase_project.this | resource |
| google_identity_platform_config.this | resource |
| google_firestore_database.this | resource |
| google_firestore_document.this | resource |
| google_firestore_document.subdocs | resource |
| google_storage_bucket.this | resource |
| google_firebase_storage_bucket.this | resource |
| google_firebaserules_ruleset.this | resource |
| google_firebaserules_release.this | resource |
| Name | Type | Default | Description |
|---|---|---|---|
project_id |
string |
n/a | Required. The GCP Project ID with Firebase enabled. |
firestore_config |
list(object) |
null |
Firestore configuration including databases, documents, and subdocuments. |
firebase_storage |
list(object) |
[] |
List of Firebase Cloud Storage buckets to create and link. |
firebase_rules |
list(object) |
[] |
Firebase security rulesets (inline or file-based). |
firebase_auth |
object |
null |
Firebase Authentication configuration. If null, authentication is not managed. |
| Name | Description |
|---|---|
project_id |
Project ID using the string patter projects/{{project_id}} |
Module is maintained by Nurdsoft.
Apache 2 Licensed. See LICENSE for full details.