cloud-foundation-fabric/fast/stages
Ludovico Magnocavallo 3972eb6df4
Align resource names in FAST networking stages (#2115)
* stage c nva

* fix tests

* remove moved blocks from net c stage

* simplify subnet naming in stage 2 net e

* address most renames in stage 2 e

* address most renames in stage 2 e

* address most renames in stage 2 e

* complete renames in stage 2 e

* use non-regional names in subnets

* use non-regional names in subnets

* use non-regional names in subnets
2024-02-29 07:45:19 +01:00
..
0-bootstrap Make all project_parent_ids fields optional (#2101) 2024-02-20 15:21:56 +00:00
1-resman Support domainless orgs in FAST (#2086) 2024-02-19 08:29:37 +00:00
2-networking-a-peering Align resource names in FAST networking stages (#2115) 2024-02-29 07:45:19 +01:00
2-networking-b-vpn Align resource names in FAST networking stages (#2115) 2024-02-29 07:45:19 +01:00
2-networking-c-nva Align resource names in FAST networking stages (#2115) 2024-02-29 07:45:19 +01:00
2-networking-d-separate-envs Align resource names in FAST networking stages (#2115) 2024-02-29 07:45:19 +01:00
2-networking-e-nva-bgp Align resource names in FAST networking stages (#2115) 2024-02-29 07:45:19 +01:00
2-security Extend FAST to support different principal types (#2064) 2024-02-12 14:35:30 +01:00
3-data-platform Fix Data platform foundation (#1992) 2024-01-20 08:49:46 +01:00
3-gke-multitenant enable shielded nodes by default on GKE mt blueprint and FAST stage (#2105) 2024-02-22 07:35:27 +00:00
3-project-factory Add support for billing budgets to project factory (#2112) 2024-02-27 18:13:49 +00:00
CLEANUP.md Fix data platform roles (#1725) 2023-10-04 07:31:40 +02:00
COMPANION.md Update COMPANION.md 2023-10-08 08:47:35 +02:00
IaC_SA.png Adding new file FAQ and an image 2022-12-19 16:07:41 -06:00
README.md FAST: move organization policies to stage 0 (#1698) 2023-09-21 14:03:21 +00:00

README.md

FAST stages

Each of the folders contained here is a separate "stage", or Terraform root module.

Each stage can be run in isolation (for example to only bring up a hub and spoke VPC in an existing environment), but when combined together they form a modular setup that allows top-down configuration of a whole GCP organization.

When combined together, each stage is designed to leverage the previous stage's resources and to provide outputs to the following stages via predefined contracts, that regulate what is exchanged.

This has two important consequences

  • any stage can be swapped out and replaced by different code as long as it respects the contract by providing a predefined set of outputs and optionally accepting a predefined set of variables
  • data flow between stages can be partially automated (see stage 00 documentation on output files), reducing the effort and pain required to compile variables by hand

One important assumption is that the flow of data is always forward looking, so no stage needs to depend on outputs generated further down the chain. This greatly simplifies both the logic and the implementation, and allows stages to be effectively independent.

To achieve this, we rely on specific GCP functionality like delegated role grants that allow controlled delegation of responsibilities, for example to allow managing IAM bindings at the organization level in different stages only for specific roles.

Refer to each stage's documentation for a detailed description of its purpose, the architectural choices made in its design, and how it can be configured and wired together to terraform a whole GCP organization. The following is a brief overview of each stage.

To destroy a previous FAST deployment follow the instructions detailed in cleanup.

Organization (0 and 1)

  • Bootstrap
    Enables critical organization-level functionality that depends on broad permissions. It has two primary purposes. The first is to bootstrap the resources needed for automation of this and the following stages (service accounts, GCS buckets). And secondly, it applies the minimum amount of configuration needed at the organization level to avoid the need of broad permissions later on, and to implement from the start critical auditing or security features like organization policies, sinks and exports.
    Exports: automation variables, organization-level custom roles
  • Resource Management
    Creates the base resource hierarchy (folders) and the automation resources that will be required later to delegate deployment of each part of the hierarchy to separate stages. This stage also configures resource management tags used in scoping specific IAM roles on the resource hierarchy.
    Exports: folder ids, automation service account emails, tags

Multitenancy

Implemented directly in stage 1 for lightweight tenants, and for complex tenancy via separate FAST-enabled hierarchies for each tenant available in the multitenant stages folder.

Shared resources (2)

Environment-level resources (3)

  • Project Factory
    YAML-based factory to create and configure application or team-level projects. Configuration includes VPC-level settings for Shared VPC, service-level configuration for CMEK encryption via centralized keys, and service account creation for workloads and applications. This stage is meant to be used once per environment.
  • Data Platform
  • GKE Multitenant
  • GCE Migration (in development)