# Dataplex instance with lake, zone & assests This module manages the creation of Dataplex instance along with lake, zone & assets in single regions. ## Simple example This example shows how to setup a Dataplex instance, lake, zone & asset creation in GCP project. ```hcl module "dataplex" { source = "./fabric/modules/dataplex" name = "terraform-lake" prefix = "test" project_id = "myproject" region = "europe-west2" zones = { landing = { type = "RAW" discovery = true assets = { gcs_1 = { resource_name = "gcs_bucket" cron_schedule = "15 15 * * *" discovery_spec_enabled = true resource_spec_type = "STORAGE_BUCKET" } } }, curated = { type = "CURATED" discovery = false assets = { bq_1 = { resource_name = "bq_dataset" cron_schedule = null discovery_spec_enabled = false resource_spec_type = "BIGQUERY_DATASET" } } } } } # tftest modules=1 resources=5 ``` ## IAM This example shows how to setup a Dataplex instance, lake, zone & asset creation in GCP project assigning IAM roles at lake and zone level. ```hcl module "dataplex" { source = "./fabric/modules/dataplex" name = "lake" prefix = "test" project_id = "myproject" region = "europe-west2" iam = { "roles/dataplex.viewer" = [ "group:analysts@example.com", "group:analysts_sensitive@example.com" ] } zones = { landing = { type = "RAW" discovery = true assets = { gcs_1 = { resource_name = "gcs_bucket" cron_schedule = "15 15 * * *" discovery_spec_enabled = true resource_spec_type = "STORAGE_BUCKET" } } }, curated = { type = "CURATED" discovery = false iam = { "roles/viewer" = [ "group:analysts@example.com", "group:analysts_sensitive@example.com" ] "roles/dataplex.dataReader" = [ "group:analysts@example.com", "group:analysts_sensitive@example.com" ] } assets = { bq_1 = { resource_name = "bq_dataset" cron_schedule = null discovery_spec_enabled = false resource_spec_type = "BIGQUERY_DATASET" } } } } } # tftest modules=1 resources=8 ``` ## TODO - [ ] support multi-regions ## Variables | name | description | type | required | default | |---|---|:---:|:---:|:---:| | [name](variables.tf#L30) | Name of Dataplex Lake. | string | ✓ | | | [project_id](variables.tf#L41) | The ID of the project where this Dataplex Lake will be created. | string | ✓ | | | [region](variables.tf#L46) | Region of the Dataplax Lake. | string | ✓ | | | [zones](variables.tf#L51) | Dataplex lake zones, such as `RAW` and `CURATED`. | map(object({…})) | ✓ | | | [iam](variables.tf#L17) | Dataplex lake IAM bindings in {ROLE => [MEMBERS]} format. | map(list(string)) | | {} | | [location_type](variables.tf#L24) | The location type of the Dataplax Lake. | string | | "SINGLE_REGION" | | [prefix](variables.tf#L35) | Optional prefix used to generate Dataplex Lake. | string | | null | ## Outputs | name | description | sensitive | |---|---|:---:| | [assets](outputs.tf#L17) | Assets attached to the lake of Dataplex Lake. | | | [id](outputs.tf#L22) | Fully qualified Dataplex Lake id. | | | [lake](outputs.tf#L27) | The lake name of Dataplex Lake. | | | [zones](outputs.tf#L32) | The zone name of Dataplex Lake. | |