From 34dd1f565cda59214389e0d31fc40bc6a46a6623 Mon Sep 17 00:00:00 2001 From: Ludovico Magnocavallo Date: Sun, 30 May 2021 20:04:56 +0200 Subject: [PATCH] Data Foundations: reorder first level README and folder structure (#251) * reorder first level README and folder structure * Link fix Co-authored-by: Yoram Ben-Yaacov --- .../data-platform-foundations/README.md | 56 +++++++++++------- .../{infra/tf-phase2 => datasource}/README.md | 2 +- .../datamart_project.tf | 0 .../datamart_project_output.tf | 0 .../datamart_project_variables.tf | 0 .../diagram.png} | Bin .../tf-phase2 => datasource}/dwh_project.tf | 0 .../dwh_project_output.tf | 0 .../dwh_project_variables.tf | 0 .../landing_project.tf | 0 .../landing_project_output.tf | 0 .../landing_project_variables.tf | 0 .../{infra/tf-phase2 => datasource}/main.tf | 0 .../tf-phase1 => datasource}/outputs.tf | 0 .../services_project.tf | 0 .../services_project_output.tf | 0 .../services_project_variables.tf | 0 .../transformation_project.tf | 0 .../transformation_project_output.tf | 0 .../transformation_project_variables.tf | 0 .../tf-phase2 => datasource}/variables.tf | 0 .../tf-phase2 => datasource}/versions.tf | 0 .../tf-phase1 => environment}/README.md | 2 +- .../datamart_project.tf | 0 .../datamart_project_output.tf | 0 .../datamart_project_variables.tf | 0 .../diagram.png} | Bin .../tf-phase1 => environment}/dwh_project.tf | 0 .../dwh_project_output.tf | 0 .../dwh_project_variables.tf | 0 .../landing_project.tf | 0 .../landing_project_output.tf | 0 .../landing_project_variables.tf | 0 .../{infra/tf-phase1 => environment}/main.tf | 0 .../tf-phase2 => environment}/outputs.tf | 0 .../services_project.tf | 0 .../services_project_output.tf | 0 .../services_project_variables.tf | 0 .../transformation_project.tf | 0 .../transformation_project_output.tf | 0 .../transformation_project_variables.tf | 0 .../tf-phase1 => environment}/variables.tf | 0 .../tf-phase1 => environment}/versions.tf | 0 ...Foundation_Multiple_project_Single_VPC.png | Bin 36756 -> 0 bytes .../img/three_main_workflows.png | Bin 49219 -> 0 bytes .../manageing_multiple_environments.md | 27 --------- .../{data-pipeline => pipeline}/README.md | 0 .../gcs_to_bigquery.md | 0 .../pubsub_to_bigquery.md | 0 .../resource/raw_data.json | 0 50 files changed, 36 insertions(+), 51 deletions(-) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/README.md (98%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/datamart_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/datamart_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/datamart_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{img/Data_Foundation-phase2.png => datasource/diagram.png} (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/dwh_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/dwh_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/dwh_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/landing_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/landing_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/landing_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/main.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => datasource}/outputs.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/services_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/services_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/services_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/transformation_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/transformation_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/transformation_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => datasource}/versions.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/README.md (98%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/datamart_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/datamart_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/datamart_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{img/Data_Foundation-phase1.png => environment/diagram.png} (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/dwh_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/dwh_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/dwh_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/landing_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/landing_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/landing_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/main.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase2 => environment}/outputs.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/services_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/services_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/services_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/transformation_project.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/transformation_project_output.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/transformation_project_variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/variables.tf (100%) rename data-solutions/data-platform-foundations/{infra/tf-phase1 => environment}/versions.tf (100%) delete mode 100644 data-solutions/data-platform-foundations/img/Data_Foundation_Multiple_project_Single_VPC.png delete mode 100644 data-solutions/data-platform-foundations/img/three_main_workflows.png delete mode 100644 data-solutions/data-platform-foundations/manageing_multiple_environments.md rename data-solutions/data-platform-foundations/{data-pipeline => pipeline}/README.md (100%) rename data-solutions/data-platform-foundations/{data-pipeline => pipeline}/gcs_to_bigquery.md (100%) rename data-solutions/data-platform-foundations/{data-pipeline => pipeline}/pubsub_to_bigquery.md (100%) rename data-solutions/data-platform-foundations/{data-pipeline => pipeline}/resource/raw_data.json (100%) diff --git a/data-solutions/data-platform-foundations/README.md b/data-solutions/data-platform-foundations/README.md index a01e4a6b..31ef42e7 100644 --- a/data-solutions/data-platform-foundations/README.md +++ b/data-solutions/data-platform-foundations/README.md @@ -1,38 +1,50 @@ -# Data Platform Foundations +# Data Foundation Platform -## General +The goal of this example is to Build a robust and flexible Data Foundation on GCP, providing opinionated defaults while still allowing customers to quickly and reliably build and scale out additional data pipelines. -The goal of this project is to Build a **robust and flexible** Data Foundation on GCP that provides **opinionated defaults**, while allowing customers to **build and scale** out additional data pipelines **quickly and reliably**. +The example is composed of three separate provisioning workflows, which are deisgned to be plugged together and create end to end Data Foundations, that support multiple data pipelines on top. -There are three provisioning workflows to enable an end to end Foundational Data Platform along with Data Pipelines on top of it. This is represented in the diagram below. +- **[Environment Setup](./environment/)** + *(once per environment)* + - projects + - VPC configuration + - Composer environment and identity + - shared buckets and datasets +- **[Data Source Setup](./datasource)** + *(once per data source)* + - landing and archive bucket + - internal and external identities + - domain specific datasets +- **[Pipeline Setup](./pipeline)** + *(once per pipeline)* + - pipeline-specific tables and views + - pipeline code + - Composer DAG -![Three Main Workflows](./img/three_main_workflows.png) +The resulting GCP architecture is outlined in this diagram +![Target architecture](./datasource/diagram.png) -## Target architecture +A demo pipeline is also part of this example: it can be built and run on top of the foundational infrastructure to quickly verify or test the setup. -![Target architecture](./img/Data_Foundation-phase2.png) +## Prerequisites -In this example we will create the infrastructure needed for the foundational build and run a demo pipeline. +In order to bring up this example, you will need -## Before you begine +- a folder or organization where new projects will be created +- a billing account that will be associated to new projects +- an identity (user or service account) with owner permissions on the folder or org, and billing user permissions on the billing account -Since this example is intended for the data infra engineers we do expect that an initial organization / folder and service account with owner privileges will be pre-created and provided as variables. +## Bringing up the platform -This example assumes that the following resources were already created and provided: +The end-to-end example is composed of 2 foundational, and 1-n optional steps: -- Root node (organization or folder) -- Service account with owner permissions on the root node, used to apply Terraform code +- [environment setup](./environment/) +- [data source setup](./datasource/) +- (Optional) [pipeline setup](./pipeline/) -## Building the Platform +The environment setup is designed to manage a single environment. Various strategies like workspaces, branching, or even separate clones can be used to support multiple environments. -Building the platform is composed of 2 foundational, and 2 optional steps: - -- [Foundations 1 - project creation](./infra/tf-phase1/README.md) -- [Foundations 2 - assets deployment](./infra/tf-phase2/README.md) -- [Optional - manual pipeline example](./data-pipeline/README.md) -- [Optional - managing multiple environments](./manageing_multiple_environments.md) - -## TODO list +## TODO | Description | Priority (1:High - 5:Low ) | Status | Remarks | |-------------|----------|:------:|---------| diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/README.md b/data-solutions/data-platform-foundations/datasource/README.md similarity index 98% rename from data-solutions/data-platform-foundations/infra/tf-phase2/README.md rename to data-solutions/data-platform-foundations/datasource/README.md index 27594d19..0950b559 100644 --- a/data-solutions/data-platform-foundations/infra/tf-phase2/README.md +++ b/data-solutions/data-platform-foundations/datasource/README.md @@ -4,7 +4,7 @@ Now that we have all the needed project, we will create all the needed assets to store and process the data. -![Data Foundation - Phase 2](../../img/Data_Foundation-phase2.png) +![Data Foundation - Phase 2](./diagram.png) This example will create the next resources per project: diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/datamart_project.tf b/data-solutions/data-platform-foundations/datasource/datamart_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/datamart_project.tf rename to data-solutions/data-platform-foundations/datasource/datamart_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/datamart_project_output.tf b/data-solutions/data-platform-foundations/datasource/datamart_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/datamart_project_output.tf rename to data-solutions/data-platform-foundations/datasource/datamart_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/datamart_project_variables.tf b/data-solutions/data-platform-foundations/datasource/datamart_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/datamart_project_variables.tf rename to data-solutions/data-platform-foundations/datasource/datamart_project_variables.tf diff --git a/data-solutions/data-platform-foundations/img/Data_Foundation-phase2.png b/data-solutions/data-platform-foundations/datasource/diagram.png similarity index 100% rename from data-solutions/data-platform-foundations/img/Data_Foundation-phase2.png rename to data-solutions/data-platform-foundations/datasource/diagram.png diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/dwh_project.tf b/data-solutions/data-platform-foundations/datasource/dwh_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/dwh_project.tf rename to data-solutions/data-platform-foundations/datasource/dwh_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/dwh_project_output.tf b/data-solutions/data-platform-foundations/datasource/dwh_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/dwh_project_output.tf rename to data-solutions/data-platform-foundations/datasource/dwh_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/dwh_project_variables.tf b/data-solutions/data-platform-foundations/datasource/dwh_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/dwh_project_variables.tf rename to data-solutions/data-platform-foundations/datasource/dwh_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/landing_project.tf b/data-solutions/data-platform-foundations/datasource/landing_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/landing_project.tf rename to data-solutions/data-platform-foundations/datasource/landing_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/landing_project_output.tf b/data-solutions/data-platform-foundations/datasource/landing_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/landing_project_output.tf rename to data-solutions/data-platform-foundations/datasource/landing_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/landing_project_variables.tf b/data-solutions/data-platform-foundations/datasource/landing_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/landing_project_variables.tf rename to data-solutions/data-platform-foundations/datasource/landing_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/main.tf b/data-solutions/data-platform-foundations/datasource/main.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/main.tf rename to data-solutions/data-platform-foundations/datasource/main.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/outputs.tf b/data-solutions/data-platform-foundations/datasource/outputs.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/outputs.tf rename to data-solutions/data-platform-foundations/datasource/outputs.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/services_project.tf b/data-solutions/data-platform-foundations/datasource/services_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/services_project.tf rename to data-solutions/data-platform-foundations/datasource/services_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/services_project_output.tf b/data-solutions/data-platform-foundations/datasource/services_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/services_project_output.tf rename to data-solutions/data-platform-foundations/datasource/services_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/services_project_variables.tf b/data-solutions/data-platform-foundations/datasource/services_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/services_project_variables.tf rename to data-solutions/data-platform-foundations/datasource/services_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/transformation_project.tf b/data-solutions/data-platform-foundations/datasource/transformation_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/transformation_project.tf rename to data-solutions/data-platform-foundations/datasource/transformation_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/transformation_project_output.tf b/data-solutions/data-platform-foundations/datasource/transformation_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/transformation_project_output.tf rename to data-solutions/data-platform-foundations/datasource/transformation_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/transformation_project_variables.tf b/data-solutions/data-platform-foundations/datasource/transformation_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/transformation_project_variables.tf rename to data-solutions/data-platform-foundations/datasource/transformation_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/variables.tf b/data-solutions/data-platform-foundations/datasource/variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/variables.tf rename to data-solutions/data-platform-foundations/datasource/variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/versions.tf b/data-solutions/data-platform-foundations/datasource/versions.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/versions.tf rename to data-solutions/data-platform-foundations/datasource/versions.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/README.md b/data-solutions/data-platform-foundations/environment/README.md similarity index 98% rename from data-solutions/data-platform-foundations/infra/tf-phase1/README.md rename to data-solutions/data-platform-foundations/environment/README.md index b29eb059..03ade068 100644 --- a/data-solutions/data-platform-foundations/infra/tf-phase1/README.md +++ b/data-solutions/data-platform-foundations/environment/README.md @@ -21,7 +21,7 @@ This example will create the next projects: A master service account named projects-editor-sa will be created under common services project and will be granted editor permissions on all the projects in scope. -![Data Foundation - Phase 1](../../img/Data_Foundation-phase1.png) +![Data Foundation - Phase 1](./diagram.png) ## Running the example diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/datamart_project.tf b/data-solutions/data-platform-foundations/environment/datamart_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/datamart_project.tf rename to data-solutions/data-platform-foundations/environment/datamart_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/datamart_project_output.tf b/data-solutions/data-platform-foundations/environment/datamart_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/datamart_project_output.tf rename to data-solutions/data-platform-foundations/environment/datamart_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/datamart_project_variables.tf b/data-solutions/data-platform-foundations/environment/datamart_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/datamart_project_variables.tf rename to data-solutions/data-platform-foundations/environment/datamart_project_variables.tf diff --git a/data-solutions/data-platform-foundations/img/Data_Foundation-phase1.png b/data-solutions/data-platform-foundations/environment/diagram.png similarity index 100% rename from data-solutions/data-platform-foundations/img/Data_Foundation-phase1.png rename to data-solutions/data-platform-foundations/environment/diagram.png diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/dwh_project.tf b/data-solutions/data-platform-foundations/environment/dwh_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/dwh_project.tf rename to data-solutions/data-platform-foundations/environment/dwh_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/dwh_project_output.tf b/data-solutions/data-platform-foundations/environment/dwh_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/dwh_project_output.tf rename to data-solutions/data-platform-foundations/environment/dwh_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/dwh_project_variables.tf b/data-solutions/data-platform-foundations/environment/dwh_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/dwh_project_variables.tf rename to data-solutions/data-platform-foundations/environment/dwh_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/landing_project.tf b/data-solutions/data-platform-foundations/environment/landing_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/landing_project.tf rename to data-solutions/data-platform-foundations/environment/landing_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/landing_project_output.tf b/data-solutions/data-platform-foundations/environment/landing_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/landing_project_output.tf rename to data-solutions/data-platform-foundations/environment/landing_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/landing_project_variables.tf b/data-solutions/data-platform-foundations/environment/landing_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/landing_project_variables.tf rename to data-solutions/data-platform-foundations/environment/landing_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/main.tf b/data-solutions/data-platform-foundations/environment/main.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/main.tf rename to data-solutions/data-platform-foundations/environment/main.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase2/outputs.tf b/data-solutions/data-platform-foundations/environment/outputs.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase2/outputs.tf rename to data-solutions/data-platform-foundations/environment/outputs.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/services_project.tf b/data-solutions/data-platform-foundations/environment/services_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/services_project.tf rename to data-solutions/data-platform-foundations/environment/services_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/services_project_output.tf b/data-solutions/data-platform-foundations/environment/services_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/services_project_output.tf rename to data-solutions/data-platform-foundations/environment/services_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/services_project_variables.tf b/data-solutions/data-platform-foundations/environment/services_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/services_project_variables.tf rename to data-solutions/data-platform-foundations/environment/services_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/transformation_project.tf b/data-solutions/data-platform-foundations/environment/transformation_project.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/transformation_project.tf rename to data-solutions/data-platform-foundations/environment/transformation_project.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/transformation_project_output.tf b/data-solutions/data-platform-foundations/environment/transformation_project_output.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/transformation_project_output.tf rename to data-solutions/data-platform-foundations/environment/transformation_project_output.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/transformation_project_variables.tf b/data-solutions/data-platform-foundations/environment/transformation_project_variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/transformation_project_variables.tf rename to data-solutions/data-platform-foundations/environment/transformation_project_variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/variables.tf b/data-solutions/data-platform-foundations/environment/variables.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/variables.tf rename to data-solutions/data-platform-foundations/environment/variables.tf diff --git a/data-solutions/data-platform-foundations/infra/tf-phase1/versions.tf b/data-solutions/data-platform-foundations/environment/versions.tf similarity index 100% rename from data-solutions/data-platform-foundations/infra/tf-phase1/versions.tf rename to data-solutions/data-platform-foundations/environment/versions.tf diff --git a/data-solutions/data-platform-foundations/img/Data_Foundation_Multiple_project_Single_VPC.png b/data-solutions/data-platform-foundations/img/Data_Foundation_Multiple_project_Single_VPC.png deleted file mode 100644 index d96c90e209e856d22b6cba2b21dbd718806538d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36756 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 Ee;4zIS^xk5 diff --git a/data-solutions/data-platform-foundations/img/three_main_workflows.png b/data-solutions/data-platform-foundations/img/three_main_workflows.png deleted file mode 100644 index a6b20fdb7c2ddfa982261e72995b8469e86fad07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49219 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 Hclo~or7(3( diff --git a/data-solutions/data-platform-foundations/manageing_multiple_environments.md b/data-solutions/data-platform-foundations/manageing_multiple_environments.md deleted file mode 100644 index c6ea0893..00000000 --- a/data-solutions/data-platform-foundations/manageing_multiple_environments.md +++ /dev/null @@ -1,27 +0,0 @@ -# Manageing Multiple Environments - -Terraform is a great tool for provisioning immutable infrastructure. -There are several ways to get Terraform to provision different environments using one repo. Here I’m going to use the most basic and naive method - the State separation. -State separation signals more mature usage of Terraform but with additional maturity comes additional complexity. -There are two primary methods to separate state between environments: directories and workspaces. I’m going to use the directory method. - -For this example I’ll assume we have 3 environments: - -- Dev -- QA -- Prod - -```bash -export data_platform_folder="dpm" - -mkdir ${data_platform_folder} -cd ${data_platform_folder} - -git clone https://github.com/yorambenyaacov/cloud-foundation-fabric.git dev - -git clone https://github.com/yorambenyaacov/cloud-foundation-fabric.git prod - -git clone https://github.com/yorambenyaacov/cloud-foundation-fabric.git qa -``` - -Now you have a directory per environment in which you can do all the needed configurations (tfvars files) and provision it. diff --git a/data-solutions/data-platform-foundations/data-pipeline/README.md b/data-solutions/data-platform-foundations/pipeline/README.md similarity index 100% rename from data-solutions/data-platform-foundations/data-pipeline/README.md rename to data-solutions/data-platform-foundations/pipeline/README.md diff --git a/data-solutions/data-platform-foundations/data-pipeline/gcs_to_bigquery.md b/data-solutions/data-platform-foundations/pipeline/gcs_to_bigquery.md similarity index 100% rename from data-solutions/data-platform-foundations/data-pipeline/gcs_to_bigquery.md rename to data-solutions/data-platform-foundations/pipeline/gcs_to_bigquery.md diff --git a/data-solutions/data-platform-foundations/data-pipeline/pubsub_to_bigquery.md b/data-solutions/data-platform-foundations/pipeline/pubsub_to_bigquery.md similarity index 100% rename from data-solutions/data-platform-foundations/data-pipeline/pubsub_to_bigquery.md rename to data-solutions/data-platform-foundations/pipeline/pubsub_to_bigquery.md diff --git a/data-solutions/data-platform-foundations/data-pipeline/resource/raw_data.json b/data-solutions/data-platform-foundations/pipeline/resource/raw_data.json similarity index 100% rename from data-solutions/data-platform-foundations/data-pipeline/resource/raw_data.json rename to data-solutions/data-platform-foundations/pipeline/resource/raw_data.json