Skip to main content
This tutorial is part of the Bytebase Terraform Provider series:

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:
  1. In Bytebase, click Instances on the left sidebar. You’ll see two PostgreSQL instances:
    • Test Sample Instance (port 8083)
    • Prod Sample Instance (port 8084)
  2. Click +Add Instance, you may add more database instances. add-instance
  3. Click Projects on the left sidebar to see the Sample Project, then click it. You’ll see:
    • hr_test database on Test instance
    • hr_prod database on Prod instance
  4. Click + New DB, you may create more databases on the existing instances. add-db

Step 2 - Register Instances with Terraform

Now let’s import these instances into Terraform management. Create 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"].
Understanding the Configuration
  • 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

  1. Go to Instances in Bytebase.
  2. Verify both instances show:
    • Correct environment assignment
    • Y under License column (if using Enterprise)
You can now modify instance properties through Terraform. For example, to rename an instance:

Summary and Next Steps

You’ve successfully registered database instances with Terraform!

Part 3: Manage Projects with Terraform