diff --git a/tutorials/1-0-list-env-instance.tf b/tutorials/1-0-list-env.tf similarity index 59% rename from tutorials/1-0-list-env-instance.tf rename to tutorials/1-0-list-env.tf index 9241a1d..50bdf93 100644 --- a/tutorials/1-0-list-env-instance.tf +++ b/tutorials/1-0-list-env.tf @@ -4,10 +4,4 @@ data "bytebase_setting" "environments" { } output "all_environments" { value = data.bytebase_setting.environments -} - -# List all instances -data "bytebase_instance_list" "all" {} -output "all_instances" { - value = data.bytebase_instance_list.all } \ No newline at end of file diff --git a/tutorials/1-1-env-alt.tf.alt b/tutorials/1-1-env-alt.tf.alt deleted file mode 100644 index 2f284ad..0000000 --- a/tutorials/1-1-env-alt.tf.alt +++ /dev/null @@ -1,17 +0,0 @@ -resource "bytebase_environment" "test" { - resource_id = "test" - title = "Test" - order = 0 - protected = false -} - -# Create Production environment -# depends_on ensures environments are created in sequence -# This prevents API conflicts when updating the environment list -resource "bytebase_environment" "prod" { - depends_on = [bytebase_environment.test] - resource_id = "prod" - title = "Prod" - order = 1 - protected = true -} \ No newline at end of file diff --git a/tutorials/1-1-env.tf b/tutorials/1-1-env-setting.tf similarity index 100% rename from tutorials/1-1-env.tf rename to tutorials/1-1-env-setting.tf diff --git a/tutorials/3-2-env-setting.tf b/tutorials/1-2-env-policy-rollout.tf similarity index 53% rename from tutorials/3-2-env-setting.tf rename to tutorials/1-2-env-policy-rollout.tf index 6784dac..845b0db 100644 --- a/tutorials/3-2-env-setting.tf +++ b/tutorials/1-2-env-policy-rollout.tf @@ -28,26 +28,4 @@ resource "bytebase_policy" "rollout_policy_prod" { "roles/CREATOR" ] } -} - -resource "bytebase_policy" "disable_copy_data_policy_prod" { - depends_on = [bytebase_setting.environments] - parent = bytebase_setting.environments.environment_setting[0].environment[1].name - type = "DISABLE_COPY_DATA" - - disable_copy_data_policy { - enable = true - } -} - -resource "bytebase_policy" "data_source_query_policy_prod" { - depends_on = [bytebase_setting.environments] - parent = bytebase_setting.environments.environment_setting[0].environment[1].name - type = "DATA_SOURCE_QUERY" - - data_source_query_policy { - restriction = "RESTRICTION_UNSPECIFIED" # or DISALLOW or FALLBACK - disallow_ddl = true - disallow_dml = true - } } \ No newline at end of file diff --git a/tutorials/1-2-instances-alt.tf.alt b/tutorials/1-2-instances-alt.tf.alt deleted file mode 100644 index ae1362a..0000000 --- a/tutorials/1-2-instances-alt.tf.alt +++ /dev/null @@ -1,37 +0,0 @@ -# Built-in Test Instance -resource "bytebase_instance" "test" { - depends_on = [bytebase_environment.test] - resource_id = "test-sample-instance" - environment = bytebase_environment.test.name - title = "Test Sample Instance" - engine = "POSTGRES" - activation = true - - data_sources { - id = "admin data source test-sample-instance" - type = "ADMIN" - host = "/tmp" - port = "8083" - username = "bbsample" - password = "" - } -} - -# Built-in Prod Instance -resource "bytebase_instance" "prod" { - depends_on = [bytebase_environment.prod] - resource_id = "prod-sample-instance" - environment = bytebase_environment.prod.name - title = "Prod Sample Instance" - engine = "POSTGRES" - activation = true - - data_sources { - id = "admin data source prod-sample-instance" - type = "ADMIN" - host = "/tmp" - port = "8084" - username = "bbsample" - password = "" - } -} \ No newline at end of file diff --git a/tutorials/1-3-env-policy-data.tf b/tutorials/1-3-env-policy-data.tf new file mode 100644 index 0000000..e965794 --- /dev/null +++ b/tutorials/1-3-env-policy-data.tf @@ -0,0 +1,21 @@ +resource "bytebase_policy" "disable_copy_data_policy_prod" { + depends_on = [bytebase_setting.environments] + parent = bytebase_setting.environments.environment_setting[0].environment[1].name + type = "DISABLE_COPY_DATA" + + disable_copy_data_policy { + enable = true + } +} + +resource "bytebase_policy" "data_source_query_policy_prod" { + depends_on = [bytebase_setting.environments] + parent = bytebase_setting.environments.environment_setting[0].environment[1].name + type = "DATA_SOURCE_QUERY" + + data_source_query_policy { + restriction = "RESTRICTION_UNSPECIFIED" # or DISALLOW or FALLBACK + disallow_ddl = true + disallow_dml = true + } +} \ No newline at end of file diff --git a/tutorials/1-2-instances.tf b/tutorials/2-instances.tf similarity index 100% rename from tutorials/1-2-instances.tf rename to tutorials/2-instances.tf diff --git a/tutorials/2-projects.tf b/tutorials/3-projects.tf similarity index 100% rename from tutorials/2-projects.tf rename to tutorials/3-projects.tf diff --git a/tutorials/3-1-workspace-profile.tf b/tutorials/4-1-workspace-profile.tf similarity index 75% rename from tutorials/3-1-workspace-profile.tf rename to tutorials/4-1-workspace-profile.tf index b7800c3..cf5527b 100644 --- a/tutorials/3-1-workspace-profile.tf +++ b/tutorials/4-1-workspace-profile.tf @@ -5,6 +5,6 @@ resource "bytebase_setting" "workspace_profile" { disallow_signup = true domains = ["example.com"] enforce_identity_domain = false - external_url = "https://valid-just-tadpole.ngrok-free.app" + external_url = "https://example.com" } } \ No newline at end of file diff --git a/tutorials/3-3-risk.tf b/tutorials/4-2-risk.tf similarity index 100% rename from tutorials/3-3-risk.tf rename to tutorials/4-2-risk.tf diff --git a/tutorials/3-4-approval-flow.tf b/tutorials/4-3-approval-flow.tf similarity index 100% rename from tutorials/3-4-approval-flow.tf rename to tutorials/4-3-approval-flow.tf diff --git a/tutorials/4-sql-review.tf b/tutorials/5-sql-review.tf similarity index 100% rename from tutorials/4-sql-review.tf rename to tutorials/5-sql-review.tf diff --git a/tutorials/6-1-users.tf b/tutorials/6-1-users.tf new file mode 100644 index 0000000..567278d --- /dev/null +++ b/tutorials/6-1-users.tf @@ -0,0 +1,54 @@ +# Create users and groups +resource "bytebase_user" "workspace_admin" { + email = "admin@example.com" + title = "Workspace Admin" + type = "USER" +} + +resource "bytebase_user" "tf_service_account" { + email = "tf@service.bytebase.com" + title = "Terraform Service Account" + type = "SERVICE_ACCOUNT" +} + +resource "bytebase_user" "workspace_dba1" { + email = "dba@example.com" + title = "Database Administrator 1" + type = "USER" +} + +resource "bytebase_user" "workspace_dba2" { + email = "dba2@example.com" + title = "Database Administrator 2" + type = "USER" +} + +resource "bytebase_user" "dev1" { + email = "dev1@example.com" + title = "Developer 1" + type = "USER" +} + +resource "bytebase_user" "dev2" { + email = "dev2@example.com" + title = "Developer 2" + type = "USER" +} + +resource "bytebase_user" "dev3" { + email = "dev3@example.com" + title = "Developer 3" + type = "USER" +} + +resource "bytebase_user" "qa1" { + email = "qa1@example.com" + title = "QA Tester 1" + type = "USER" +} + +resource "bytebase_user" "qa2" { + email = "qa2@example.com" + title = "QA Tester 2" + type = "USER" +} \ No newline at end of file diff --git a/tutorials/6-2-groups.tf b/tutorials/6-2-groups.tf new file mode 100644 index 0000000..a35aaf2 --- /dev/null +++ b/tutorials/6-2-groups.tf @@ -0,0 +1,36 @@ +resource "bytebase_group" "developers" { + email = "developers@example.com" + title = "Developer Team" + description = "Group for all developers" + + members { + member = "users/${bytebase_user.dev1.email}" + role = "OWNER" + } + + members { + member = "users/${bytebase_user.dev2.email}" + role = "MEMBER" + } + + members { + member = "users/${bytebase_user.dev3.email}" + role = "MEMBER" + } +} + +resource "bytebase_group" "qa" { + email = "qa@example.com" + title = "QA Team" + description = "Group for all QA testers" + + members { + member = "users/${bytebase_user.qa1.email}" + role = "OWNER" + } + + members { + member = "users/${bytebase_user.qa2.email}" + role = "MEMBER" + } +} diff --git a/tutorials/5-user-iam.tf b/tutorials/7-iam.tf similarity index 53% rename from tutorials/5-user-iam.tf rename to tutorials/7-iam.tf index a6c98b0..1805181 100644 --- a/tutorials/5-user-iam.tf +++ b/tutorials/7-iam.tf @@ -1,96 +1,3 @@ -# Create users and groups -resource "bytebase_user" "workspace_admin" { - email = "admin@example.com" - title = "Workspace Admin" - type = "USER" -} - -resource "bytebase_user" "tf_service_account" { - email = "tf@service.bytebase.com" - title = "Terraform Service Account" - type = "SERVICE_ACCOUNT" -} - -resource "bytebase_user" "workspace_dba1" { - email = "dba@example.com" - title = "Database Administrator 1" - type = "USER" -} - -resource "bytebase_user" "workspace_dba2" { - email = "dba2@example.com" - title = "Database Administrator 2" - type = "USER" -} - -resource "bytebase_user" "dev1" { - email = "dev1@example.com" - title = "Developer 1" - type = "USER" -} - -resource "bytebase_user" "dev2" { - email = "dev2@example.com" - title = "Developer 2" - type = "USER" -} - -resource "bytebase_user" "dev3" { - email = "dev3@example.com" - title = "Developer 3" - type = "USER" -} - -resource "bytebase_user" "qa1" { - email = "qa1@example.com" - title = "QA Tester 1" - type = "USER" -} - -resource "bytebase_user" "qa2" { - email = "qa2@example.com" - title = "QA Tester 2" - type = "USER" -} - -# Create groups -resource "bytebase_group" "developers" { - email = "developers@example.com" - title = "Developer Team" - description = "Group for all developers" - - members { - member = "users/${bytebase_user.dev1.email}" - role = "OWNER" - } - - members { - member = "users/${bytebase_user.dev2.email}" - role = "MEMBER" - } - - members { - member = "users/${bytebase_user.dev3.email}" - role = "MEMBER" - } -} - -resource "bytebase_group" "qa" { - email = "qa@example.com" - title = "QA Team" - description = "Group for all QA testers" - - members { - member = "users/${bytebase_user.qa1.email}" - role = "OWNER" - } - - members { - member = "users/${bytebase_user.qa2.email}" - role = "MEMBER" - } -} - resource "bytebase_iam_policy" "workspace_iam" { depends_on = [ bytebase_user.workspace_admin, diff --git a/tutorials/6-1-semantic-types.tf b/tutorials/8-1-semantic-types.tf similarity index 100% rename from tutorials/6-1-semantic-types.tf rename to tutorials/8-1-semantic-types.tf diff --git a/tutorials/6-2-classification.tf b/tutorials/8-2-classification.tf similarity index 100% rename from tutorials/6-2-classification.tf rename to tutorials/8-2-classification.tf diff --git a/tutorials/6-3-global-data-masking.tf b/tutorials/8-3-global-data-masking.tf similarity index 100% rename from tutorials/6-3-global-data-masking.tf rename to tutorials/8-3-global-data-masking.tf diff --git a/tutorials/6-4-database-masking.tf b/tutorials/8-4-database-masking.tf similarity index 100% rename from tutorials/6-4-database-masking.tf rename to tutorials/8-4-database-masking.tf diff --git a/tutorials/6-5-masking-exception.tf b/tutorials/8-5-masking-exception.tf similarity index 100% rename from tutorials/6-5-masking-exception.tf rename to tutorials/8-5-masking-exception.tf diff --git a/tutorials/README.md b/tutorials/README.md new file mode 100644 index 0000000..3e88f56 --- /dev/null +++ b/tutorials/README.md @@ -0,0 +1,10 @@ +# Corresponding Tutorials + +- Part 1: [Manage Environments with Terraform](https://docs.bytebase.com/tutorials/manage-environments-in-bytebase-with-terraform) - Set up environments with policies +- Part 2: [Manage Databases with Terraform](https://docs.bytebase.com/tutorials/manage-databases-in-bytebase-with-terraform) - Register database instances +- Part 3: [Manage Projects with Terraform](https://docs.bytebase.com/tutorials/manage-projects-in-bytebase-with-terraform) - Organize databases into projects +- Part 4: [Manage Bytebase Settings with Terraform](https://docs.bytebase.com/tutorials/manage-bytebase-settings-with-terraform) - Configure workspace profile and approval policies +- Part 5: [Manage SQL Review Rules with Terraform](https://docs.bytebase.com/tutorials/manage-sql-review-rules-with-terraform) - Define SQL review policies +- Part 6: [Manage Users and Groups with Terraform](https://docs.bytebase.com/tutorials/manage-users-and-groups-with-terraform) - Set up dummy users and groups +- Part 7: [Manage Database Access Control with Terraform](https://docs.bytebase.com/tutorials/manage-database-access-control-with-terraform) - Define permissions +- Part 8: [Manage Data Masking with Terraform](https://docs.bytebase.com/tutorials/manage-data-masking-with-terraform) - Protect sensitive data \ No newline at end of file