Files
hunfabric/modules/project-factory/schemas/project.schema.md
Ludovico Magnocavallo 36648b6b63 FAST light implementation (#3255)
* data wip

* wip data

* update org schema, add note on expansion

* all schemas, workload notes

* Update WORKLOG.md

* Update WORKLOG.md

* Update WORKLOG.md

* Update WORKLOG.md

* wip

* data wip

* wip

* wip

* wip

* wip

* org module IAM context (using lookup)

* new-style context expansion in project IAM

* remove spurious file

* project module contexts

* finalize context replacement format for project module

* revert org module changes

* fix tag id interpolation in project

* fix tag id interpolation in project

* organization module context

* organization context test

* context expansion for folder tag bindings

* test context expansion for tag bindings

* service account module context

* simplify context local

* context for iam service account

* nuke blueprints

* remove links to blueprints

* vpc sc context in project module

* Add context to GCS module

* Add inline deps to plan_summary script

* Make context a top-level variable for folder, organization, sa

* Add add context top-level to VPC-SC

* move context out of factories_config variable

* tfdoc

* fix merge

* fix merge

* fix examples

* net-vpc module context

* add parent ids to folder context

* rename folder parent context

* fix folder parent check

* new project factory stub

* wip

* wip

* refactor defaults

* project iam

* bueckts and service accounts

* start adding context replacements

* better test data

* automation resources for folders and projects

* automation

* add support for project id interpolation

* first tested apply

* improve IAM description in gcs module

* add context to billing account module

* add notification channels to billing account module context

* add billing budgets to new pf

* schemas and defaults

* bootstrap wip

* bootstrap wip

* bootstrap wip

* pf outputs

* pf fixes

* fix pf sample data

* bootstrap lite fixes

* add locations to organization module contexts

* bootstrap lite fixes

* org fixes, billing accounts

* fix default project parent

* bootstrap lite wip

* add locations to gcs module context

* add context support to logging bucket module

* add context to pubsub module

* split out iam variables in gcs module

* fix logging bucket context test

* bootstrap log sink destinations

* streamline logging-bucket module variables

* fix logging bucket context test

* align logging bucket module interface in fast bootstrap

* add support for project-level log buckets to project factory

* support full context expansion in organization module log sinks

* log buckets in fast-lite bootstrap

* make og sink type optional in organization module

* log sinks in fast-lite bootstrap

* set tag values in factory context

* bootstrap lite data

* output files schema

* billing account schema

* output files

* output providers

* gcs output files

* boilerplate

* tflint

* check documentation

* check docs

* fix project module parent variable validation

* fix log bucket examples

* allow null parent in project module

* silence folder test errors

* fix billing account sink example

* fix project example

* fix billing account module

* fix folder tests

* fix FAST

* fix fast

* tfvars outputs

* wif

* cicd service accounts

* cicd

* allow defaults in context, minimal org policies

* support gcs managed folders in project factory and bootstrap lite

* support prefix in provider output files

* rename bootstrap stage

* gitignore

* gitignore

* security folder, billing IAM

* wip tfvars

* fix typo

* security IAM

* control tag iam/context via variables in organization module

* split tag creation from tag IAM to avoid circular refs

* port organization module tag changes to project module

* implement new-style context expansion in vpc-sc module

* fix fast vpc-sc tests

* boilerplate

* vpc sc stage

* schemas

* fast-lite compatibility for vpc sc stage

* make log project number optional in vpc-sc stage

* networking

* networking

* networking

* networking

* rename and move new stage under fast

* clone pf tests

* use context replacement for internal notification channels in billing account module

* support service agents in project module iam context replacements

* support service agents in project module iam context replacements

* add support for kms keys to project module context

* experimental pf example test and fixes

* fix schemas

* fix tests

* tfdoc

* tfdoc

* pf config

* experimental pf

* remove redundant dot from gcs managed folder IAM keys

* bootstrap experimental test

* project factory exp stage test

* skip tflint for bootstrap experimental test

* tflint

* fix gcs test

* documentation work

* documentation work

* Update README.md

* tfdoc

* tfdoc

* readme

* tfdoc

* readme

* readme

* readme

* readme

* support universe in pf exp projects

* missing universe service agents

* org policies import, non-admin billing IAM

* todo

* fix test

* custom constraints

* fast classic dataset

* fix test data

* context replacements in billing module log sinks

* fix typo

* add support for billing log sinks

* update docs

* readme

* cicd fix and test

---------

Co-authored-by: Julio Castillo <jccb@google.com>
2025-09-02 08:38:57 +02:00

8.4 KiB

Project

Properties

additional properties: false

  • automation: object
    additional properties: false
  • billing_account: string
  • billing_budgets: array
    • items: string
  • buckets: reference(buckets)
  • contacts: object
    additional properties: false
    • ^[a-z0-9_-]+$: array
      • items: string
  • deletion_policy: string
    enum: ['PREVENT', 'DELETE', 'ABANDON']
  • iam: reference(iam)
  • iam_bindings: reference(iam_bindings)
  • iam_bindings_additive: reference(iam_bindings_additive)
  • iam_by_principals: reference(iam_by_principals)
  • labels: object
  • metric_scopes: array
    • items: string
  • name: string
  • org_policies: object
    additional properties: false
    • ^[a-z]+\.: object
      • inherit_from_parent: boolean
      • reset: boolean
      • rules: array
        • items: object
          additional properties: false
          • allow: object
            additional properties: false
            • all: boolean
            • values: array
              • items: string
          • deny: object
            additional properties: false
            • all: boolean
            • values: array
              • items: string
          • enforce: boolean
          • condition: object
            additional properties: false
            • description: string
            • expression: string
            • location: string
            • title: string
  • quotas: object
    additional properties: false
    • ^[a-zA-Z0-9_-]+$: object
      additional properties: false
      • service: string
      • quota_id: string
      • preferred_value: number
      • dimensions: object additional properties: String
      • justification: string
      • contact_email: string
      • annotations: object additional properties: String
      • ignore_safety_checks: string
        enum: ['QUOTA_DECREASE_BELOW_USAGE', 'QUOTA_DECREASE_PERCENTAGE_TOO_HIGH', 'QUOTA_SAFETY_CHECK_UNSPECIFIED']
  • parent: string
  • prefix: string
  • project_reuse: object
    additional properties: false
    • use_data_source: boolean
    • attributes: object
      • name: string
      • number: number
      • services_enabled: array
        • items: string
  • service_accounts: object
    additional properties: false
    • ^[a-z0-9-]+$: object
      additional properties: false
      • display_name: string
      • iam: reference(iam)
      • iam_self_roles: array
        • items: string
      • iam_project_roles: reference(iam_project_roles)
      • iam_sa_roles: reference(iam_sa_roles)
  • service_encryption_key_ids: object
    additional properties: false
    • ^[a-z-]+\.googleapis\.com$: array
      • items: string
  • services: array
    • items: string
      pattern: ^[a-z-]+.googleapis.com$
  • shared_vpc_host_config: object
    additional properties: false
    • enabled: boolean
    • service_projects: array
      • items: string
  • shared_vpc_service_config: object
    additional properties: false
    • host_project: string
    • iam_bindings_additive: reference(iam_bindings_additive)
    • network_users: array
      • items: string
    • service_agent_iam: object
      • ^[a-z0-9_-]+$: array
        • items: string
    • service_agent_subnet_iam: object
      • ^[a-z0-9_-]+$: array
        • items: string
    • service_iam_grants: array
      • items: string
    • network_subnet_users: object
      • ^[a-z0-9_-]+$: array
        • items: string
  • tag_bindings: object
    additional properties: false
    • ^[a-z0-9_-]+$: string
  • tags: object additional properties: Object
  • vpc_sc: object
    • perimeter_name: string
    • is_dry_run: boolean

Definitions

  • bucket: object
    additional properties: false
    • description: string
    • iam: reference(iam)
    • iam_bindings: reference(iam_bindings)
    • iam_bindings_additive: reference(iam_bindings_additive)
    • force_destroy: boolean
    • labels: object additional properties: String
    • location: string
    • prefix: string
    • storage_class: string
    • uniform_bucket_level_access: boolean
    • versioning: boolean
  • buckets: object
    additional properties: false
    • ^[a-z0-9-]+$: reference(bucket)
  • iam: object
    additional properties: false
    • ^roles/: array
      • items: string
        pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])
  • iam_bindings: object
    additional properties: false
    • ^[a-z0-9_-]+$: object
      additional properties: false
      • members: array
        • items: string
          pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])
      • role: string
        pattern: ^roles/
      • condition: object
        additional properties: false
        • expression: string
        • title: string
        • description: string
  • iam_bindings_additive: object
    additional properties: false
    • ^[a-z0-9_-]+$: object
      additional properties: false
      • member: string
        pattern: ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z])
      • role: string
        pattern: ^[a-zA-Z0-9_/.]+$
      • condition: object
        additional properties: false
        • expression: string
        • title: string
        • description: string
  • iam_by_principals: object
    additional properties: false
    • ^(?:domain:|group:|serviceAccount:|user:|principal:|principalSet:|[a-z]): array
      • items: string
        pattern: ^roles/
  • iam_billing_roles: object
    additional properties: false
    • ^[a-z0-9-]+$: array
      • items: string
  • iam_folder_roles: object
    additional properties: false
    • ^[a-z0-9-]+$: array
      • items: string
  • iam_organization_roles: object
    additional properties: false
    • ^[a-z0-9-]+$: array
      • items: string
  • iam_project_roles: object
    additional properties: false
    • ^[a-z0-9-]+$: array
      • items: string
  • iam_sa_roles: object
    additional properties: false
    • ^[a-z0-9-]+$: array
      • items: string
  • iam_storage_roles: object
    additional properties: false
    • ^[a-z0-9-]+$: array
      • items: string