- Part 1: Manage Environments with Terraform - Set up environments with policies
- Part 2: Manage Databases with Terraform 👈
- Part 3: Manage Projects with Terraform - Organize databases into projects
- Part 4: Manage Bytebase Settings with Terraform - Configure workspace profile and approval policies
- Part 5: Manage SQL Review Rules with Terraform - Define SQL review policies
- Part 6: Manage Users and Groups with Terraform - Configure users and groups
- Part 7: Manage Database Access Control with Terraform - Grant database permissions
- Part 8: Manage Data Masking with Terraform - Protect sensitive data
This tutorial series uses separate Terraform files for better organization. Files are numbered by tutorial part and sub-step (e.g., 1-1-env-setting.tf, 1-2-env-policy-rollout.tf for Part 1, 2-instances.tf for Part 2, etc.). Terraform automatically handles dependencies between files.
What You’ll Learn
Register database instances in Bytebase using Terraform.Prerequisites
Before starting this tutorial, ensure you have:- Completed Part 1:
- Bytebase running with built-in sample data
- Service account created
- Terraform initialized
- Environments configured
Step 1 - Explore Built-in Instances
Bytebase sample data includes two sample PostgreSQL instances. Let’s explore them:-
In Bytebase, click Instances on the left sidebar. You’ll see two PostgreSQL instances:
- Test Sample Instance (port 8083)
- Prod Sample Instance (port 8084)
-
Click +Add Instance, you may add more database instances.
-
Click Projects on the left sidebar to see the
Sample Project
, then click it. You’ll see:hr_test
database on Test instancehr_prod
database on Prod instance
-
Click + New DB, you may create more databases on the existing instances.
Step 2 - Register Instances with Terraform
Now let’s import these instances into Terraform management.Terraform resource | bytebase_instance |
Sample file | 2-instances.tf |
2-instances.tf
with the following configuration:
2-instances.tf
sync_databases
is a list of database names to sync. By default, all databases are synced.If you don’t want to sync all databases, you can set something like sync_databases = ["db1", "db2"]
.- depends_on: Ensures environments from Part 1 exist first
- resource_id: Must match the existing instance ID
- environment: Links instance to Test or Prod environment
- data_sources: Connection details for the database
Step 3 - Apply Configuration
Now apply the configuration:Step 4 - Verify Setup
- Go to Instances in Bytebase.
- Verify both instances show:
- Correct environment assignment
Y
under License column (if using Enterprise)