diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8d8f6fc8b..740842358 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + workflow: rules: - when: never # This rule will always prevent the pipeline from running until we have a properly configured and registered runner instance. diff --git a/.tflint.hcl b/.tflint.hcl index 16198b068..32ca27d95 100644 --- a/.tflint.hcl +++ b/.tflint.hcl @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + // Copyright 2025 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/GEMINI.md b/GEMINI.md index 27fc8be96..bb172ab2d 100644 --- a/GEMINI.md +++ b/GEMINI.md @@ -1,3 +1,19 @@ + + # gemini.md - AI Assistant Guidelines for Stellar Engine ## Project Overview diff --git a/README.md b/README.md index 18464abc9..f4631c4d6 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,19 @@ + + ## Introduction Stellar Engine is a fork of the Google Cloud Foundation Fabric (CFF) repository, aimed at providing Infrastructure as Code (IaC) for Google Cloud Platform (GCP) customers who need to create a landing zone environment with the Assured Workload overlays. In addition to the IaC, there is [documentation available](docs/path-to-authorization.md) for both the DISA FedRAMP High (FRH), DoD Impact Level 4 (IL4) and DoD Impact Level (IL5) compliance regimes that provide a mapping of National Institute of Standards and Technology (NIST) 800-53r5 controls to enable projects that leverage the Stellar Engine codebase to accelerate the speed at which an Authorization to Operate (ATO) can be attained. diff --git a/automation/allow_bq.sh b/automation/allow_bq.sh new file mode 100644 index 000000000..55297ea3a --- /dev/null +++ b/automation/allow_bq.sh @@ -0,0 +1,47 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +cd "${SCRIPT_DIR}" || exit + +# shellcheck source=automation/config.env.sample +source "${SCRIPT_DIR}"/config.env + + +# Mapping abbreviations +if [[ ${COMPLIANCE_REGIME} == "FEDRAMP_HIGH" ]]; then + COMPLIANCE_REGIME="FRH" +elif [[ ${COMPLIANCE_REGIME} == "FEDRAMP_MODERATE" ]]; then + COMPLIANCE_REGIME="FRM" +fi + +aw_folder=$(gcloud resource-manager folders list --folder="${TOP_LEVEL_FOLDER_ID}" --filter="display_name:${COMPLIANCE_REGIME}-${PREFIX}" --format="value(ID)") +echo 'constraint: constraints/gcp.restrictServiceUsage' > tmp_aw_policy.yaml + +gcloud resource-manager org-policies describe constraints/gcp.restrictServiceUsage --folder="${aw_folder}" --format='yaml(listPolicy.allowedValues)' >> tmp_aw_policy.yaml +{ + echo " - bigquery.googleapis.com" + echo " - bigqueryconnection.googleapis.com" + echo " - bigquerydatapolicy.googleapis.com" + echo " - bigquerydatatransfer.googleapis.com" + echo " - bigquerymigration.googleapis.com" + echo " - bigqueryreservation.googleapis.com" + echo " - bigquerystorage.googleapis.com" + +} >> tmp_aw_policy.yaml + +gcloud resource-manager org-policies set-policy tmp_aw_policy.yaml --folder="${aw_folder}" \ No newline at end of file diff --git a/automation/allow_compliance_apis.sh b/automation/allow_compliance_apis.sh new file mode 100644 index 000000000..2b1e05dbc --- /dev/null +++ b/automation/allow_compliance_apis.sh @@ -0,0 +1,66 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +cd "${SCRIPT_DIR}" || exit + +compliance_LIST="${SCRIPT_DIR}/allowed_apis.yaml" +LZ_EXCEPTIONS="${SCRIPT_DIR}/lz_exceptions.yaml" +PLAN_FILE="tfplan" + +echo "-------------------------------------------------------" +echo "Running compliance IL5 + COA2 API Cross-Check..." +echo "-------------------------------------------------------" + +if [[ ! -f "$compliance_LIST" ]]; then + echo "[ERROR] compliance list not found at $compliance_LIST" + exit 1 +fi + +if [[ ! -f "$LZ_EXCEPTIONS" ]]; then + echo "[ERROR] LZ Exceptions list not found at $LZ_EXCEPTIONS" + exit 1 +fi + +ALLOWED_compliance=$(yq eval '.allowed_apis[]' "$compliance_LIST") +ALLOWED_COA2=$(yq eval '.COA2[]' "$LZ_EXCEPTIONS") + +ALLOWED_APIS=$(echo -e "${ALLOWED_compliance}\n${ALLOWED_COA2}" | sort -u | sed '/^null$/d') + +cd "${SCRIPT_DIR}/../fast/stages-aw/1-assured-workload" || exit 1 +if [[ ! -f "$PLAN_FILE" ]]; then + echo "Creating temporary plan for validation..." + terraform plan -out="$PLAN_FILE" > /dev/null +fi + +REQUESTED_APIS=$(terraform show -json "$PLAN_FILE" | jq -r '.resource_changes[]? | select(.type == "google_project_service") | .change.after.service' | sort -u) +MISSING_APIS="" + +for api in $REQUESTED_APIS; do + if ! echo "$ALLOWED_APIS" | grep -qx "$api"; then + echo "[!] VIOLATION: '$api' is NOT in the compliance approved list or COA2 exceptions." + MISSING_APIS+="$api " + fi +done + +if [[ -n "$MISSING_APIS" ]]; then + echo -e "\n[ERROR] compliance COMPLIANCE FAILURE" + echo "The following APIs are requested in code but missing from approved lists:" + for missing in $MISSING_APIS; do echo " - $missing"; done + exit 1 +else + echo "compliance/COA2 Cross-Check Passed: All requested services are authorized." + exit 0 +fi diff --git a/automation/allowed_apis.yaml b/automation/allowed_apis.yaml new file mode 100644 index 000000000..ba6d318c0 --- /dev/null +++ b/automation/allowed_apis.yaml @@ -0,0 +1,48 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#testing purposes API's that already match existing list in the org. +allowed_apis: + - artifactregistry.googleapis.com + - bigquery.googleapis.com + - bigquerydatatransfer.googleapis.com + - privateca.googleapis.com + - cloudbuild.googleapis.com + - composer.googleapis.com + - datafusion.googleapis.com + - dns.googleapis.com + - cloudidentity.googleapis.com + - cloudkms.googleapis.com + - logging.googleapis.com + - monitoring.googleapis.com + - run.googleapis.com + - spanner.googleapis.com + - sqladmin.googleapis.com + - storage.googleapis.com + - cloudtasks.googleapis.com + - vision.googleapis.com + - workstations.googleapis.com + - compute.googleapis.com + - dataflow.googleapis.com + - dataproc.googleapis.com + - eventarc.googleapis.com + - gkehub.googleapis.com + - container.googleapis.com + - iam.googleapis.com + - redis.googleapis.com + - pubsub.googleapis.com + - secretmanager.googleapis.com + - dlp.googleapis.com + - speech.googleapis.com + - datapipelines.googleapis.com diff --git a/automation/clean.sh b/automation/clean.sh new file mode 100644 index 000000000..554f6e0a6 --- /dev/null +++ b/automation/clean.sh @@ -0,0 +1,81 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#### This script is an experimental state, and is designed to help clean environments +#### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +# shellcheck source=automation/config.env.sample +source "${SCRIPT_DIR}"/config.env + +# Tags +parent_tag_name=$(gcloud resource-manager tags keys list \ + --parent=organizations/"${ORGANIZATION_ID}" \ + --format="value(name)") + +child_tag_name=$(gcloud resource-manager tags values list \ + --parent="${parent_tag_name}" \ + --format="value(name)") + +gcloud resource-manager tags values delete "$child_tag_name" +gcloud resource-manager tags keys delete "$parent_tag_name" + +# Custom Org Roles +declare -a custom_org_roles=() +while IFS= read -r role_name; do + custom_org_roles+=("$role_name") +done < <(gcloud iam roles list \ + --organization="${ORGANIZATION_ID}" \ + --filter='name~^organizations/' \ + --format='value(name)' | awk -F'/' '{print $NF}' 2>/dev/null) + +for i in "${custom_org_roles[@]}"; do + gcloud iam roles delete --organization="${ORGANIZATION_ID}" "$i" +done + +# Log Sinks +gcloud logging sinks delete "empty-audit-logs" --organization="$ORGANIZATION_ID" +gcloud logging sinks delete "workspace-audit-logs" --organization="$ORGANIZATION_ID" +gcloud logging sinks delete "vpc-sc" --organization="$ORGANIZATION_ID" +gcloud logging sinks delete "audit-logs" --organization="$ORGANIZATION_ID" + +# Org Roles +gcloud iam roles delete gcveNetworkAdmin --organization="$ORGANIZATION_ID" +gcloud iam roles delete storageViewer --organization="$ORGANIZATION_ID" +gcloud iam roles delete organizationIamAdmin --organization="$ORGANIZATION_ID" +gcloud iam roles delete tenantNetworkAdmin --organization="$ORGANIZATION_ID" +gcloud iam roles delete tagViewer --organization="$ORGANIZATION_ID" +gcloud iam roles delete serviceProjectNetworkAdmin --organization="$ORGANIZATION_ID" +gcloud iam roles delete organizationAdminViewer --organization="$ORGANIZATION_ID" + +# Org Policies +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/clouddeploy.disableServiceLabelGeneration +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/cloudfunctions.requireVPCConnector +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.disableAllIpv6 +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.disableHybridCloudIpv6 +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.disableInternetNetworkEndpointGroup +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.disableSshInBrowser +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.disableVpcExternalIpv6 +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.disableVpcInternalIpv6 +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.requireOsLogin +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/essentialcontacts.disableProjectSecurityContacts +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/firestore.requireP4SAforImportExport +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/gcp.detailedAuditLoggingMode +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/gcp.disableCloudLogging +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/iam.disableServiceAccountCreation +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/iap.requireGlobalIapWebDisabled +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/iap.requireRegionalIapWebDisabled +gcloud resource-manager org-policies delete --organization="$ORGANIZATION_ID" constraints/compute.requireOsLogin \ No newline at end of file diff --git a/automation/compliance_exceptions.yaml b/automation/compliance_exceptions.yaml new file mode 100644 index 000000000..3e801ebce --- /dev/null +++ b/automation/compliance_exceptions.yaml @@ -0,0 +1,43 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# lz_exceptions.yaml +# Combined list of Category 1 and Category 2 API exceptions for LZ Infrastructure +# These APIs are authorized for use in Core LZ projects only. +COA2: +# Category 1: IL5 Authorized / compliance Catalog Update Pending +#category_1_exceptions: + - accesscontextmanager.googleapis.com + - cloudasset.googleapis.com + - cloudbilling.googleapis.com + - networkconnectivity.googleapis.com + - servicedirectory.googleapis.com +# Category 2: Management/Enabling APIs Not Listed in compliance Catalog +# category_2_exceptions: + - assuredworkloads.googleapis.com + - bigqueryreservation.googleapis.com + - bigquerystorage.googleapis.com + - billingbudgets.googleapis.com + - cloudquotas.googleapis.com + - cloudresourcemanager.googleapis.com + - essentialcontacts.googleapis.com + - iamcredentials.googleapis.com + - iap.googleapis.com + - networksecurity.googleapis.com + - orgpolicy.googleapis.com + - servicenetworking.googleapis.com + - serviceusage.googleapis.com + - stackdriver.googleapis.com + - storage-component.googleapis.com + - sts.googleapis.com \ No newline at end of file diff --git a/automation/config.env.sample b/automation/config.env.sample new file mode 100644 index 000000000..d659afd06 --- /dev/null +++ b/automation/config.env.sample @@ -0,0 +1,56 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +BILLING_ACCOUNT=012345-67890-12345 +BOOTSTRAP_PROJECT_ID=bootstrap-project +COMPLIANCE_REGIME=IL5 +DIRECTORY_CUSTOMER_ID=012345678 +DEPLOYER_EMAIL_ADDRESS=user@example.com +FULLY_QUALIFIED_DOMAIN_NAME=example.com +LOGGING_ALERTS_EMAIL_ADDRESS=user@example.com +ORGANIZATION_ID=012345678912 +PREFIX=pre +REGIONS=us-east4 +AW_REGION=us +TENANT_ENVIRONMENTS=dev,prod +EXTERNAL_DIRECTORY_CUSTOMER_IDS= +EXTERNAL_ORGANIZATION_IDS= +TOP_LEVEL_FOLDER_NAME= +TOP_LEVEL_FOLDER_ID= +# Following are for Workload Identity Federation via GitLab (Leave blank if not using) +# Ex: google-cloud/army-example-lz +CI_PROJECT_PATH= +# URL of gitlab instance +GITLAB_URL= +# run --> curl -s https://GITLAB_DOMAIN/oauth/discovery/keys +# If that doesn't work run --> curl -s https://GITLAB_DOMAIN/-/jwks +# Leave blank if not using on the army network +JWKS_KEY= +# Group naming: +TF_VAR_gcp_organization_admins_group=gcp-organization-admins +TF_VAR_gcp_billing_admins_group=gcp-billing-admins +TF_VAR_gcp_vpc_network_admins_group=gcp-vpc-network-admins +TF_VAR_gcp_hybrid_connectivity_admins_group=gcp-hybrid-connectivity-admins +TF_VAR_gcp_logging_monitoring_admins_group=gcp-logging-monitoring-admins +TF_VAR_gcp_logging_monitoring_viewers_group=gcp-logging-monitoring-viewers +TF_VAR_gcp_security_admins_group=gcp-security-admins +TF_VAR_gcp_developers_group=gcp-developers +TF_VAR_gcp_devops_group=gcp-devops + +# Determines whether to create pubsub sink in Stage-1 +APPLY_TIER_1_PUBSUB_SINK=true + +# Determines requested network quota in Stage-3, defaults to 15 in variables +NETWORK_QUOTA_PREFERRED_VALUE=50 +TENANT_CI_PROJECT_PATH= diff --git a/automation/delete_projects_and_folders.sh b/automation/delete_projects_and_folders.sh new file mode 100644 index 000000000..ea1341290 --- /dev/null +++ b/automation/delete_projects_and_folders.sh @@ -0,0 +1,190 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Exit immediately if a command exits with a non-zero status. +set -euo pipefail + +# --- Configuration --- +DRY_RUN=false +GCLOUD_QUIET_FLAG="" # Will be set to "--quiet" if the corresponding flag is passed + +# --- Function Definitions --- + +# Function to print usage instructions +usage() { + echo "Usage: $0 [OPTIONS] " + echo "Recursively deletes all folders and projects within a GCP Organization." + echo "" + echo "Arguments:" + echo " ORGANIZATION_ID The numeric ID of the GCP Organization (e.g., 123456789012)." + echo "" + echo "Options:" + echo " --dry-run Show what would be deleted without actually deleting anything." + echo " --quiet Pass the '--quiet' flag to 'gcloud' delete commands to suppress their prompts." + echo " --help Display this help and exit." + exit 1 +} + +# Recursive function to delete a folder and its contents +delete_folder_recursively() { + local folder_id="$1" + echo "" + echo "--- Processing Folder ID: $folder_id ---" + + # 1. Delete all projects inside the current folder + echo "-> Searching for projects in folder $folder_id..." + # The '|| true' prevents the script from exiting if no projects are found + local project_ids + project_ids=$(gcloud projects list \ + --filter="parent.id=$folder_id AND parent.type=folder" \ + --format="value(projectId)" || true) + + if [[ -n "$project_ids" ]]; then + for project_id in $project_ids; do + if [ "$DRY_RUN" = false ]; then + echo "Deleting project: $project_id" + # The $GCLOUD_QUIET_FLAG variable is used here + gcloud projects delete "$project_id" $GCLOUD_QUIET_FLAG + else + echo "DRY RUN: Would delete project '$project_id'." + fi + done + else + echo "No projects found in folder $folder_id." + fi + + # 2. Recursively delete all sub-folders + echo "-> Searching for sub-folders in folder $folder_id..." + # The '|| true' prevents the script from exiting if no sub-folders are found + local sub_folder_ids + sub_folder_ids=$(gcloud resource-manager folders list \ + --folder="$folder_id" \ + --format="value(ID)" || true) + + if [[ -n "$sub_folder_ids" ]]; then + for sub_folder_id in $sub_folder_ids; do + # Recursive call for each sub-folder + delete_folder_recursively "$sub_folder_id" + done + else + echo "No sub-folders found in folder $folder_id." + fi + + # 3. Delete the (now empty) current folder + if [ "$DRY_RUN" = false ]; then + echo "-> Deleting folder itself: $folder_id" + # The $GCLOUD_QUIET_FLAG variable is used here + gcloud resource-manager folders delete "$folder_id" $GCLOUD_QUIET_FLAG + else + echo "-> DRY RUN: Would delete folder '$folder_id'." + fi + echo "--- Finished Processing Folder ID: $folder_id ---" +} + + +# --- Main Script Logic --- + +# Check for gcloud command +if ! command -v gcloud &> /dev/null; then + echo "ERROR: 'gcloud' command not found. Please install and configure the Google Cloud SDK." + exit 1 +fi + +# Robust argument parsing +POSITIONAL_ARGS=() +while [[ $# -gt 0 ]]; do + case $1 in + --dry-run) + DRY_RUN=true + shift # past argument + ;; + --quiet) + GCLOUD_QUIET_FLAG="--quiet" + shift # past argument + ;; + --help) + usage + ;; + -*) # Unknown option + echo "Error: Unknown option $1" + usage + ;; + *) # Positional argument + POSITIONAL_ARGS+=("$1") + shift + ;; + esac +done +set -- "${POSITIONAL_ARGS[@]}" # Restore positional parameters + +# Check for ORGANIZATION_ID +if [[ $# -ne 1 ]]; then + echo "Error: Missing ORGANIZATION_ID." + usage +fi +ORG_ID="$1" + +# Validate ORG_ID is a number +if ! [[ "$ORG_ID" =~ ^[0-9]+$ ]]; then + echo "Error: ORGANIZATION_ID must be a numeric value." + usage +fi + +# Main warning and confirmation prompt +echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" +echo "!!! W A R N I N G !!!" +echo "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" +echo "This is a destructive action, intended to clean up " +echo "A GCP ORG for DELETION" +echo "Common causes of failure are firewall associations" +echo "for shared VPC in the Networking Folders" +echo "----------------------------------------------------------------" +echo "This script will PERMANENTLY delete all folders and all projects" +echo "under the organization with ID: $ORG_ID." +echo "This action CANNOT be undone." +echo "" + +if [ "$DRY_RUN" = true ]; then + echo "✅ DRY RUN MODE ENABLED. NO RESOURCES WILL BE DELETED." +else + # Prompt for confirmation unless in dry-run mode + read -r -p "To confirm this destructive action, type the organization ID ($ORG_ID) again: " confirmation + if [[ "$confirmation" != "$ORG_ID" ]]; then + echo "Confirmation failed. Exiting without making changes." + exit 0 + fi +fi + +echo "" +echo "Starting process for Organization ID: $ORG_ID" + +# Get top-level folders in the organization +echo "Fetching top-level folders..." +top_level_folders=$(gcloud resource-manager folders list \ + --organization="$ORG_ID" \ + --format="value(ID)" || true) + +if [[ -z "$top_level_folders" ]]; then + echo "No folders found in organization $ORG_ID. Nothing to do." + exit 0 +fi + +# Loop through top-level folders and start the recursive deletion +for folder_id in $top_level_folders; do + delete_folder_recursively "$folder_id" +done + +echo "" +echo "✅ Script completed." \ No newline at end of file diff --git a/automation/migrate-tenants.sh b/automation/migrate-tenants.sh new file mode 100644 index 000000000..bd2db82d3 --- /dev/null +++ b/automation/migrate-tenants.sh @@ -0,0 +1,135 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This is a temporary script to migrate tenants from a single tenants.yml to the tenants directory. +# This script will only need to be ran once. + +# Exit immediately if a command exits with a non-zero status +set -e + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) + +compliance_regime_mapping() { + case "${1}" in + "COMPLIANCE_REGIME_UNSPECIFIED") echo "cru" ;; + "IL2") echo "il2" ;; + "IL4") echo "il4" ;; + "IL5") echo "il5" ;; + "FEDRAMP_HIGH") echo "frh" ;; + "FEDRAMP_MODERATE") echo "frm" ;; + *) echo "${1}" | tr '[:upper:]' '[:lower:]' ;; + esac +} + +# ========================================== +# CONFIGURATION & INITIALIZATION +# ========================================== + +# shellcheck source=automation/config.env.sample +if [ -f "$SCRIPT_DIR/config.env" ]; then + source "$SCRIPT_DIR"/config.env +else + echo "Error: config.env not found at $SCRIPT_DIR/config.env" + exit 1 +fi + +COMPLIANCE_REGIME_ABBREVIATION=$(compliance_regime_mapping "${COMPLIANCE_REGIME}") +TENANTS_BUCKET="gs://${PREFIX}-${COMPLIANCE_REGIME_ABBREVIATION}-prod-iac-core-tenants/tenant-config" + +OLD_TENANTS_FILE="${SCRIPT_DIR}/../tenants.yml" +TENANTS_DIR="${SCRIPT_DIR}/../tenants" + +# Ensure the local output directory exists +mkdir -p "$TENANTS_DIR" + +# ========================================== +# STEP 1: Pull the legacy tenants.yml +# ========================================== +echo "Downloading legacy tenants.yml from GCS..." +if ! gcloud storage cp "$TENANTS_BUCKET/tenants.yml" "$OLD_TENANTS_FILE" 2>/dev/null; then + echo "Error: Could not find or download tenants.yml from $TENANTS_BUCKET/tenants.yml" + exit 1 +fi + +if [ ! -s "$OLD_TENANTS_FILE" ]; then + echo "Error: The downloaded tenants.yml file is empty." + exit 1 +fi + +# ========================================== +# STEP 2: Parse and Split Tenants +# ========================================== +# Count how many tenants exist in the array +TOTAL_TENANTS=$(yq '.tenants | length' "$OLD_TENANTS_FILE") + +if [ "$TOTAL_TENANTS" -eq 0 ] || [ "$TOTAL_TENANTS" == "null" ]; then + echo "No tenants found in the legacy file to migrate." + exit 0 +fi + +echo "Found $TOTAL_TENANTS tenants to migrate. Processing..." +echo "------------------------------------------------" + +for (( idx=0; idx "$TEN_FILE" + chmod 444 "$TEN_FILE" + + # ========================================== + # STEP 3: Push individual file to GCS + # ========================================== + echo " -> Uploading ${TEN_NAME}.yml to GCS..." + gcloud storage cp "$TEN_FILE" "$TENANTS_BUCKET/${TEN_NAME}.yml" +done + +echo "------------------------------------------------" +echo "Success! Cleaned up and split $TOTAL_TENANTS tenants into individual files." + +# ========================================== +# STEP 4: Remove Legacy artifacts +# ========================================== +echo "------------------------------------------------" +echo "[!] Migration processing is complete." +read -r -p "Would you like to permanently delete the legacy tenants.yml file from GCS and local storage? (y/N): " CONFIRM + +if [[ "$CONFIRM" =~ ^[Yy](es)?$ ]]; then + echo "Cleaning up legacy artifacts..." + + echo " -> Removing legacy tenants.yml from GCS..." + gcloud storage rm "$TENANTS_BUCKET/tenants.yml" + + echo " -> Removing legacy tenants.yml locally..." + rm -f "$OLD_TENANTS_FILE" + + echo "------------------------------------------------" + echo "Success! Split $TOTAL_TENANTS tenants into individual files and uploaded them." + echo "The legacy tenants.yml file has been completely deleted from both GCS and your local drive." +else + echo "------------------------------------------------" + echo "Success! Split $TOTAL_TENANTS tenants into individual files and uploaded them." + echo "[*] Cleanup skipped. The legacy tenants.yml files have been left intact on GCS and locally." +fi \ No newline at end of file diff --git a/automation/restore.sh b/automation/restore.sh new file mode 100644 index 000000000..f67fe4ec9 --- /dev/null +++ b/automation/restore.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#### This script is an experimental state, and is designed to help restore environment where the prefix has not been changed +#### It is currently best used via copy-and-paste of commands as needed (after sourcing config.env) +#### You may still need to change the name of custom org policies in the yaml files for a successful deployment +#### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. + +# Source config.env to get TENANT_ENVIRONMENTS +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +# shellcheck source=automation/config.env.sample +source "$SCRIPT_DIR"/config.env + +terraform import "module.organization.google_org_policy_policy.default[\"{}\"]" + +# Undelete projects for each tenant environment +IFS=',' read -r -a ENV_ARRAY <<< "$TENANT_ENVIRONMENTS" +for ENV_NAME in "${ENV_ARRAY[@]}"; do + ENV_NAME=$(echo "$ENV_NAME" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]') # Ensure lowercase + gcloud projects undelete "${PREFIX}"-"${ENV_NAME}"-net-host +done + +# Give projects time to be undeleted +sleep 60 + +# Re-enable billing for each tenant environment +for ENV_NAME in "${ENV_ARRAY[@]}"; do + ENV_NAME=$(echo "$ENV_NAME" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]') # Ensure lowercase + gcloud alpha billing projects link "${PREFIX}"-"${ENV_NAME}"-net-host --billing-account "${BILLING_ACCOUNT}" +done + +if promptUser "Stage 2 - Networking"; then + # Choose networking paradigm + echo "Please type \"1\", \"2\", or \"3\" below that corresponds to the network paradigm you want: " + echo "1) IL2/FedRAMP Moderate" + echo "2) FedRAMP High" + echo "3) IL4/IL5" + read -r choice + + ########### IL2/FedRAMP Moderate ########### + if [ "$choice" == 1 ]; then + echo "This stage is still under development." + + ########### FedRAMP High ########### + elif [ "$choice" == 2 ]; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/2-networking-a-fedramp-high || exit + + ########### IL4/IL5 ########### + elif [ "$choice" == 3 ]; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/2-networking-b-il5-ngfw || exit + fi +fi + +# Import projects for each tenant environment +for ENV_NAME in "${ENV_ARRAY[@]}"; do + ENV_NAME=$(echo "$ENV_NAME" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]') # Ensure lowercase + terraform import "module.env-spoke-projects[\"${ENV_NAME}\"].google_project.project[0]" "${PREFIX}"-"${ENV_NAME}"-net-host +done + +# KMS +gcloud kms keys versions restore 1 --location="${REGIONS}" --keyring='vdss-keyring' --key=default --project="${PREFIX}"-net-vdss-host +gcloud kms keys versions enable 1 --location="${REGIONS}" --keyring=vdss-keyring --key=default --project="${PREFIX}"-net-vdss-host +terraform import 'module.kms.google_kms_key_ring.default[0]' projects/"${PREFIX}"-net-vdss-host/locations/"${REGIONS}"/keyRings/vdss-keyring +terraform import 'module.kms.google_kms_crypto_key.default["default"]' projects/"${PREFIX}"-net-vdss-host/locations/"${REGIONS}"/keyRings/vdss-keyring/cryptoKeys/default diff --git a/automation/shared-services-deploy.sh b/automation/shared-services-deploy.sh new file mode 100644 index 000000000..a4a8c056b --- /dev/null +++ b/automation/shared-services-deploy.sh @@ -0,0 +1,675 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#### Shared Services Deploy Script +#### Deploys shared-services stage resources (e.g., BCAP) independently of stellar-deploy.sh. +#### Prerequisites: Stages 0-5 must already be deployed via stellar-deploy.sh. + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +cd "${SCRIPT_DIR}" || exit + +# --- Helper Functions (from stellar-deploy.sh) --- + +cleanup() { + local resourceFile=${1} + local statusFile=${2} + if [[ -f $resourceFile ]]; then + rm "$resourceFile" + fi + if [[ -f $statusFile ]]; then + rm "$statusFile" + fi +} + +tfRun() { + local tf_cmd="$1" + local resources_file="$2" + local status_file="$3" + + if [[ ! -d $SCRIPT_DIR/tmp ]]; then + mkdir -p "${SCRIPT_DIR}"/tmp + fi + + local cmd="terraform $tf_cmd" + + eval "$cmd" 2>&1| tee >(sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' >> "$resources_file") + local tf_exit_code=${PIPESTATUS[0]} + echo "$tf_exit_code" > "$status_file" +} + +errorChecking() { + local tf_cmd="$1" + local resource_file="$2" + local status_file="$3" + + local upper_cmd="" + upper_cmd=$(upper "${tf_cmd%% *}") + + while [[ $(cat "$statusFile") -ne 0 ]]; do + echo -e "\n--- ${upper_cmd} FAILED ---" + if grep -q "BigQuery service account: googleapi: Error 403: Request is disallowed by organization's constraints/gcp.restrictServiceUsage constraint" "$resource_file"; then + echo -e "\n--- ${upper_cmd} FAILED WITH BQ USAGE CONSTRAINT ERROR ---" + if promptUser "Would you like to update the Assured Workloads folder to allow BigQuery and Cloud KMS?"; then + ("${SCRIPT_DIR}/allow_bq.sh") + sleep 120 + fi + return 1 + fi + if promptUser "Would you like to see what the terraform errors are?"; then + awk '/[Ee]rror/{p=1;print;next} p' "$resource_file" + fi + if promptUser "Do you want to re-run 'terraform ${tf_cmd}' now?"; then + echo "Initiating manual 'terraform ${tf_cmd}'..." + tfRun "$tf_cmd" "$resource_file" "$status_file" + else + echo "Skipping 'terraform ${tf_cmd}'." + return 1 + fi + done + cleanup "$resource_file" "$status_file" +} + +runTerraformCommand() { + local tf_cmd="$1" + local resource_file="$2" + local status_file="$3" + + tfRun "$tf_cmd" "$resource_file" "$status_file" + + if [[ -f "$status_file" ]] && [[ $(cat "$status_file") -ne 0 ]]; then + errorChecking "$tf_cmd" "$resource_file" "$status_file" + else + cleanup "$resource_file" "$status_file" + fi +} + +upper() { + if [[ -n "$1" ]]; then + echo "${1}" | tr '[:lower:]' '[:upper:]' + fi + return 0 +} + +compliance_regime_mapping() { + case "${1}" in + "COMPLIANCE_REGIME_UNSPECIFIED") + echo "cru" + ;; + "IL2") + echo "il2" + ;; + "IL4") + echo "il4" + ;; + "IL5") + echo "il5" + ;; + "FEDRAMP_HIGH") + echo "frh" + ;; + "FEDRAMP_MODERATE") + echo "frm" + ;; + *) + echo "${1}" | tr '[:upper:]' '[:lower:]' + ;; + esac +} + +promptUser() { + echo -e "\n${1} Type 's' to skip, or 'c' to continue'." + read -r choice + if [[ "$choice" == "s" ]]; then + return 255 # Won't run command + else + shift + for i in "$@"; do + eval "$i" + done + fi +} + +# --- Configuration --- + +if [[ ! -f "${SCRIPT_DIR}/config.env" ]]; then + echo "ERROR: config.env not found in ${SCRIPT_DIR}." + echo "Please ensure stages 0-5 have been deployed via stellar-deploy.sh first." + echo "Copy config.env.sample to config.env and configure it for your deployment." + exit 1 +fi + +# shellcheck source=automation/config.env.sample +source "${SCRIPT_DIR}/config.env" +IFS=',' read -r -a REGIONS_ARRAY <<< "$REGIONS" + +COMPLIANCE_REGIME_ABBREVIATION=$(compliance_regime_mapping "${COMPLIANCE_REGIME}") +GCS_BUCKET="gs://${PREFIX}-${COMPLIANCE_REGIME_ABBREVIATION}-prod-iac-core-outputs" +BCAP_DIR="${SCRIPT_DIR}/../fast/stages-aw/shared-services/bcap" +NTP_DIR="${SCRIPT_DIR}/../fast/stages-aw/shared-services/ntp" +DNS_DIR="${SCRIPT_DIR}/../fast/stages-aw/shared-services/dns" +SMTP_DIR="${SCRIPT_DIR}/../fast/stages-aw/shared-services/smtp" +AD_DIR="${SCRIPT_DIR}/../fast/stages-aw/shared-services/ad" + +# --- Shared Services - BCAP Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - BCAP Deployment" +echo "#######################################################" +echo "" +echo "This script deploys the Boundary Cloud Access Point (BCAP) infrastructure." +echo "Prerequisites: Stages 0-2 must already be deployed via stellar-deploy.sh." + +if promptUser "Shared Services - BCAP -"; then + cd "${BCAP_DIR}" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-bcap_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-bcap_tf_status_$$" + + if promptUser "Would you like to pull the remote tfvars files created in Stage 3?" "${cmd[@]}"; then + gcloud storage cp "${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json" ./ + fi + + if promptUser "Would you like to pull the shared-services providers file from GCS?"; then + gcloud storage cp "${GCS_BUCKET}/providers/shared-services-providers.tf" ./ + fi + + REGIONS_CONFIG=$(printf '%s", "' "${REGIONS_ARRAY[@]}" | sed 's/", "$//') + REGIONS_CONFIG="[\"$REGIONS_CONFIG\"]" + + if promptUser "Would you to generate a new tfvars file?"; then + yq -o=json '.' data/config.yml > terraform.tfvars.json + jq '.bcap' 3-networking-shared-services.auto.tfvars.json > networking-bcap.auto.tfvars.json + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init -backend-config=prefix=bcap" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform a terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "" + echo "Congratulations, you have completed the BCAP deployment!" + echo "" + echo "Post-Apply Steps:" + echo " 1. Retrieve pairing keys: terraform output -json pairing_keys" + echo " 2. Provide pairing keys to the BCAP provider (DISA/Google BCAP Team)" + echo " 3. Once attachments are active, configure BGP peering on Cloud Routers" + echo "" +fi + +# --- Shared Services - NTP Relay Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - NTP Relay Deployment" +echo "#######################################################" +echo "" +echo "This script deploys STIG-compliant NTP relay VMs that sync to USNO." +echo "Prerequisites: Stages 0-2 must already be deployed via stellar-deploy.sh." + +if promptUser "Shared Services - NTP Relay -"; then + cd "${NTP_DIR}" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-ntp_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-ntp_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + ) + promptUser "Would you like to pull the remote tfvars files created in Stage 1 and Stage 3?" "${cmd[@]}" + + if promptUser "Would you like to pull the shared-services providers file from GCS?"; then + gcloud storage cp "${GCS_BUCKET}/providers/shared-services-providers.tf" ./ + fi + + if promptUser "Would you to generate a new tfvars file?"; then + yq -o=json '.' data/config.yml > ntp-config.auto.tfvars.json + cat <ntp-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init -backend-config=prefix=ntp" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform a terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "" + echo "Congratulations, you have completed the NTP Relay deployment!" + echo "" + echo "Post-Apply Steps:" + echo " 1. Retrieve relay IP: terraform output relay_ip" + echo " 2. Relay IP has been published to GCS at:" + echo " ${GCS_BUCKET}/tfvars/shared-services-ntp.auto.tfvars.json" + echo " 3. Configure spoke VMs' /etc/chrony.conf to point at the relay IPs:" + echo " server iburst maxpoll 6" + echo " 4. Remove any metadata.google.internal or pool.ntp.org NTP sources" + echo "" +fi + +# --- Shared Services - DNS Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - DNS Deployment" +echo "#######################################################" +echo "" +echo "This script deploys IL5-compliant DNS forwarding zones that route" +echo "domain-specific queries to the Army DNS resolver in Azure via VPN." +echo "Prerequisites: Stages 0-3 and 3-vpn must already be deployed." + +if promptUser "Shared Services - DNS -"; then + cd "${DNS_DIR}" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-dns_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-dns_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + ) + promptUser "Would you like to pull the remote tfvars files created in Stage 1 and Stage 3?" "${cmd[@]}" + + if promptUser "Would you like to pull the shared-services providers file from GCS?"; then + gcloud storage cp "${GCS_BUCKET}/providers/shared-services-providers.tf" ./ + fi + + if promptUser "Would you to generate a new tfvars file?"; then + yq -o=json '.' data/config.yml > dns-config.auto.tfvars.json + cat <dns-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init -backend-config=prefix=dns" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform a terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "" + echo "Congratulations, you have completed the DNS deployment!" + echo "" + echo "Post-Apply Steps:" + echo " 1. Forwarding zone info has been published to GCS at:" + echo " ${GCS_BUCKET}/tfvars/shared-services-dns.auto.tfvars.json" + echo " 2. Verify forwarding from a GCP VM:" + echo " dig test.army.mil @35.199.192.0" + echo " 3. Verify internal DNS still works:" + echo " dig vm-name.us-east4-a.c.project.internal" + echo "" +fi +# --- Shared Services - SMTP Relay Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - SMTP Relay Deployment" +echo "#######################################################" +echo "" +echo "This script deploys a STIG-compliant Postfix SMTP relay (smarthost)" +echo "that relays all outbound email through the DISA EESG via BCAP." +echo "Prerequisites: Stages 0-3 must already be deployed via stellar-deploy.sh." + +if promptUser "Shared Services - SMTP Relay -"; then + cd "${SMTP_DIR}" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-smtp_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-smtp_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + ) + promptUser "Would you like to pull the remote tfvars files created in Stage 1 and Stage 3?" "${cmd[@]}" + + if promptUser "Would you like to pull the shared-services providers file from GCS?"; then + gcloud storage cp "${GCS_BUCKET}/providers/shared-services-providers.tf" ./ + fi + + if promptUser "Would you to generate a new tfvars file?"; then + yq -o=json '.' data/config.yml > smtp-config.auto.tfvars.json + # Override encryption_key with the SMTP-specific KMS key from the shared-services output. + # The shared-services tfvars exports encryption_key (NTP) and smtp_encryption_key (SMTP). + jq -n --arg key "$(jq -r '.smtp_encryption_key' 3-networking-shared-services.auto.tfvars.json)" \ + '{encryption_key: $key}' > smtp-encryption.auto.tfvars.json + cat <smtp-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init -backend-config=prefix=smtp" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform a terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "" + echo "Congratulations, you have completed the SMTP Relay deployment!" + echo "" + echo "Post-Apply Steps:" + echo " 1. Retrieve relay IP: terraform output relay_ip" + echo " 2. Relay IP has been published to GCS at:" + echo " ${GCS_BUCKET}/tfvars/shared-services-smtp.auto.tfvars.json" + echo " 3. Configure spoke applications to relay mail through:" + echo " SMTP_HOST= SMTP_PORT=25" + echo " 4. Verify from a spoke VM: telnet 25" + echo "" +fi + +# --- Shared Services - SMTP Relay Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - SMTP Relay Deployment" +echo "#######################################################" +echo "" +echo "This script deploys a STIG-compliant Postfix SMTP relay (smarthost)" +echo "that relays all outbound email through the DISA EESG via BCAP." +echo "Prerequisites: Stages 0-3 must already be deployed via stellar-deploy.sh." + +if promptUser "Shared Services - SMTP Relay -"; then + cd "${SMTP_DIR}" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-smtp_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-smtp_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + ) + promptUser "Would you like to pull the remote tfvars files created in Stage 1 and Stage 3?" "${cmd[@]}" + + if promptUser "Would you like to pull the shared-services providers file from GCS?"; then + gcloud storage cp "${GCS_BUCKET}/providers/shared-services-providers.tf" ./ + fi + + if promptUser "Would you to generate a new tfvars file?"; then + yq -o=json '.' data/config.yml > smtp-config.auto.tfvars.json + # Override encryption_key with the SMTP-specific KMS key from the shared-services output. + # The shared-services tfvars exports encryption_key (NTP) and smtp_encryption_key (SMTP). + jq -n --arg key "$(jq -r '.smtp_encryption_key' 3-networking-shared-services.auto.tfvars.json)" \ + '{encryption_key: $key}' > smtp-encryption.auto.tfvars.json + cat <smtp-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init -backend-config=prefix=smtp" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform a terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "" + echo "Congratulations, you have completed the SMTP Relay deployment!" + echo "" + echo "Post-Apply Steps:" + echo " 1. Retrieve relay IP: terraform output relay_ip" + echo " 2. Relay IP has been published to GCS at:" + echo " ${GCS_BUCKET}/tfvars/shared-services-smtp.auto.tfvars.json" + echo " 3. Configure spoke applications to relay mail through:" + echo " SMTP_HOST= SMTP_PORT=25" + echo " 4. Verify from a spoke VM: telnet 25" + echo "" +fi + +# --- Shared Services - Active Directory Domain Controller Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - Active Directory Domain Controller Deployment" +echo "#######################################################" +echo "" +echo "This script deploys a STIG-compliant Active Directory Domain Controller" +echo "that replicates from the the Domain Controllers in Azure." +echo "Prerequisites: Stages 0-3 must already be deployed via stellar-deploy.sh." + +if promptUser "Shared Services - Active Directory -"; then + cd "${AD_DIR}" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-ad_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-ad_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + ) + promptUser "Would you like to pull the remote tfvars files created in Stage 1 and Stage 3?" "${cmd[@]}" + + if promptUser "Would you like to pull the shared-services providers file from GCS?"; then + gcloud storage cp "${GCS_BUCKET}/providers/shared-services-providers.tf" ./ + fi + + if promptUser "Would you to generate a new tfvars file?"; then + yq -o=json '.' data/config.yml > ad-config.auto.tfvars.json + cat <ad-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init -backend-config=prefix=ad" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform a terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "" + echo "Congratulations, you have completed the Active Directory Domain Controller deployment!" + echo "" + echo "1. Hand off networking to Palo Alto / Security Team" + echo " Provide the provisioned GCP DC IPs above to the firewall administrators." + echo " Request ingress/egress policy mapping to authorize AD traffic to/from Azure." + echo "" + echo "2. Stage Google Cloud Subnet in Azure Active Directory" + echo " Coordinated with the Azure AD identity team to open 'dssite.msc'." + echo " Map the GCP Subnet CIDR block directly to a new" + echo " Active Directory Site object (e.g., 'GCP-Region-Shared-Services')." + echo "" + echo "3. Execute Active Directory Replica Promotion" + echo " RDP to the newly provisioned Windows instances using approved secure access." + echo " Verify the local NTP clock is actively syncing against NTP Server." + echo " Run the AD replica promotion wizard or utilize the Offline Domain Join (.blob)" + echo " file generated by the primary forest authorities." + echo "" + echo "4. Verify Replication Health with Azure" + echo " From an administrative PowerShell terminal on the new GCP DCs, run:" + echo " > repadmin /showrepl" + echo " Verify all inbound neighbor statuses return SUCCESS." + echo "=========================================================================" + echo "" +fi + +# --- Shared Services - ACAS (Assured Compliance Assessment Solution) Deployment --- + +echo -e "\n#######################################################" +echo " Shared Services - ACAS Deployment" +echo "#######################################################" +echo "" +echo "This script deploys the ACAS solution (Image Factory, Nessus Scanner, and SecurityCenter)." +echo "Prerequisites: Stages 0-3 must already be deployed via stellar-deploy.sh." + +if promptUser "Shared Services - ACAS -"; then + ACAS_DIR="${SCRIPT_DIR}/../fast/stages-aw/shared-services/acas" + + # -------------------------------------------------------- + # A. ACAS Image Factory + # -------------------------------------------------------- + if promptUser "Deploy ACAS Component [1/3]: Image Factory?"; then + cd "${ACAS_DIR}/image-factory" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-acas-factory_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-acas-factory_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/providers/shared-services-providers.tf ./" + ) + promptUser "Pull remote tfvars and providers from GCS?" "${cmd[@]}" + + if promptUser "Generate local tfvars file from centralized config.yml?"; then + yq -o=json '.image_factory' "${ACAS_DIR}/data/config.yml" > acas-factory.auto.tfvars.json + cat <acas-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Pull ACAS RPM packages from GCS staging?"; then + mkdir -p rpms + # RPM Ingestion Check + if ! gcloud storage ls "${GCS_BUCKET}/acas-staging/*.rpm" &>/dev/null; then + echo -e "\n=========================================================================" + echo -e " [!] CONFIGURATION ERROR: No ACAS RPMs found in GCS staging!" + echo -e "=========================================================================" + echo " Path Checked: ${GCS_BUCKET}/acas-staging/" + echo "" + echo " Please download the RHEL8 RPMs from the DoD Patch Repository:" + echo " -> https://patches.csd.disa.mil (CAC required)" + echo "" + echo " Then upload them to your GCS outputs bucket using this command:" + echo " $ gcloud storage cp *.rpm ${GCS_BUCKET}/acas-staging/" + echo "" + echo " For detailed instructions, refer to: " + echo " fast/stages-aw/shared-services/acas/README.md" + echo "=========================================================================" + exit 1 + fi + gcloud storage cp "${GCS_BUCKET}/acas-staging/*.rpm" ./rpms/ + fi + + if promptUser "Perform terraform init?"; then + runTerraformCommand "init -backend-config=prefix=acas-factory" "$resourceFile" "$statusFile" + fi + if promptUser "Perform terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + if promptUser "Perform terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + fi + + # -------------------------------------------------------- + # B. ACAS Nessus Scanner + # -------------------------------------------------------- + if [[ $(yq '.scanner_deployment.enable' "${ACAS_DIR}/data/config.yml") == "true" ]]; then + if promptUser "Deploy ACAS Component [2/3]: Nessus Scanner VM(s)?"; then + cd "${ACAS_DIR}/scanner" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-acas-scanner_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-acas-scanner_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/providers/shared-services-providers.tf ./" + ) + promptUser "Pull remote tfvars and providers from GCS?" "${cmd[@]}" + + if promptUser "Generate local tfvars file from centralized config.yml?"; then + yq -o=json '.scanner_deployment' "${ACAS_DIR}/data/config.yml" | jq 'del(.enable)' > acas-scanner.auto.tfvars.json + cat <acas-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Perform terraform init?"; then + runTerraformCommand "init -backend-config=prefix=acas-scanner" "$resourceFile" "$statusFile" + fi + if promptUser "Perform terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + if promptUser "Perform terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + fi + else + echo -e "\n--- ACAS Scanner Deployment is disabled in config.yml. Skipping. ---" + fi + + # -------------------------------------------------------- + # C. ACAS SecurityCenter + # -------------------------------------------------------- + if [[ $(yq '.securitycenter_deployment.enable' "${ACAS_DIR}/data/config.yml") == "true" ]]; then + if promptUser "Deploy ACAS Component [3/3]: SecurityCenter VM?"; then + cd "${ACAS_DIR}/securitycenter" || exit + + resourceFile="${SCRIPT_DIR}/tmp/shared-services-acas-sc_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/shared-services-acas-sc_tf_status_$$" + + cmd=( + "gcloud storage cp ${GCS_BUCKET}/tfvars/1-assured-workload.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/tfvars/3-networking-shared-services.auto.tfvars.json ./" + "gcloud storage cp ${GCS_BUCKET}/providers/shared-services-providers.tf ./" + ) + promptUser "Pull remote tfvars and providers from GCS?" "${cmd[@]}" + + if promptUser "Generate local tfvars file from centralized config.yml?"; then + yq -o=json '.securitycenter_deployment' "${ACAS_DIR}/data/config.yml" | jq 'del(.enable)' > acas-sc.auto.tfvars.json + cat <acas-global.auto.tfvars +prefix = "${PREFIX}" +EOF + fi + + if promptUser "Perform terraform init?"; then + runTerraformCommand "init -backend-config=prefix=acas-sc" "$resourceFile" "$statusFile" + fi + if promptUser "Perform terraform plan?"; then + runTerraformCommand "plan" "$resourceFile" "$statusFile" + fi + if promptUser "Perform terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + fi + else + echo -e "\n--- ACAS SecurityCenter Deployment is disabled in config.yml. Skipping. ---" + fi + + echo "" + echo "Congratulations, you have completed the ACAS Shared Service deployment!" + echo "" +fi \ No newline at end of file diff --git a/automation/stellar-deploy.sh b/automation/stellar-deploy.sh new file mode 100644 index 000000000..1f3500aa5 --- /dev/null +++ b/automation/stellar-deploy.sh @@ -0,0 +1,998 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. + +GCP_ROLES=( + "roles/resourcemanager.organizationAdmin:roles/resourcemanager.folderAdmin:roles/resourcemanager.projectCreator:roles/billing.user:roles/iam.organizationRoleAdmin:roles/orgpolicy.policyAdmin:roles/securitycenter.admin:roles/cloudsupport.admin:roles/pubsub.admin:roles/cloudkms.admin" + "roles/billing.admin:roles/billing.creator:roles/resourcemanager.organizationViewer" + "roles/compute.networkAdmin:roles/compute.xpnAdmin:roles/compute.securityAdmin:roles/resourcemanager.folderViewer" + "roles/compute.networkAdmin:roles/resourcemanager.folderViewer" + "roles/logging.admin:roles/monitoring.admin:roles/pubsub.admin" + "roles/logging.viewer:roles/monitoring.viewer" + "roles/orgpolicy.policyAdmin:roles/iam.securityAdmin:roles/iam.securityReviewer:roles/iam.serviceAccountCreator:roles/iam.organizationRoleViewer:roles/securitycenter.admin:roles/resourcemanager.folderIamAdmin:roles/logging.privateLogViewer:roles/logging.configWriter:roles/container.viewer:roles/compute.viewer:roles/logging.admin:roles/monitoring.admin:roles/cloudkms.admin" + "" + "roles/resourcemanager.folderViewer" +) + +GCP_DESCRIPTIONS=( + "Organization administrators have access to administer all resources belonging to the organization." + "Billing administrators are responsible for setting up billing accounts and monitoring their usage." + "Network administrators are responsible for creating VPC networks, subnets, and firewall rules." + "Hybrid Connectivity administrators are responsible for creating network devices such as Cloud VPN instances and cloud routers." + "Logging-monitoring administrators have access to all features of Logging and Cloud Monitoring." + "Logging-monitoring viewers have read-only access to a defined subset of both ingested logs and monitoring data." + "Security administrators are responsible for establishing and managing security policies for the entire organization, including access management and organization constraint policies." + "Developers are responsible for designing, coding, and testing applications." + "DevOps practitioners create or manage end-to-end pipelines that support continuous integration and delivery, monitoring, and system provisioning." +) + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +if [ -n "$1" ]; then + if [ ! -f "$1" ]; then + echo "Error: The configuration file '$1' does not exist." >&2 + exit 1 + fi + CONFIG_FILE="$(realpath "$1")" +else + CONFIG_FILE="$SCRIPT_DIR/config.env" +fi + +echo Running deploy with configuration at path: "${CONFIG_FILE}" +echo "#######################################################" + +cd "${SCRIPT_DIR}" || exit + +# Allows us to decide when this array is populated if we are using environment variables +populateGroups() { + GCP_GROUPS=( + "${TF_VAR_gcp_organization_admins_group:-gcp-organization-admins}" + "${TF_VAR_gcp_billing_admins_group:-gcp-billing-admins}" + "${TF_VAR_gcp_vpc_network_admins_group:-gcp-vpc-network-admins}" + "${TF_VAR_gcp_hybrid_connectivity_admins_group:-gcp-hybrid-connectivity-admins}" + "${TF_VAR_gcp_logging_monitoring_admins_group:-gcp-logging-monitoring-admins}" + "${TF_VAR_gcp_logging_monitoring_viewers_group:-gcp-logging-monitoring-viewers}" + "${TF_VAR_gcp_security_admins_group:-gcp-security-admins}" + "${TF_VAR_gcp_developers_group:-gcp-developers}" + "${TF_VAR_gcp_devops_group:-gcp-devops}" + ) +} + +cleanup() { + local resourceFile=${1} + local statusFile=${2} + if [[ -f $resourceFile ]]; then + rm "$resourceFile" + fi + if [[ -f $statusFile ]]; then + rm "$statusFile" + fi +} + +tfRun() { + local tf_cmd="$1" + local resources_file="$2" + local status_file="$3" + + if [[ ! -d $SCRIPT_DIR/tmp ]]; then + mkdir -p "${SCRIPT_DIR}"/tmp + fi + + local cmd="terraform $tf_cmd" + + eval "$cmd" 2>&1| tee >(sed 's/\x1b\[[0-9;]*[a-zA-Z]//g' >> "$resources_file") + local tf_exit_code=${PIPESTATUS[0]} + echo "$tf_exit_code" > "$status_file" +} + +errorChecking() { + local tf_cmd="$1" + local resource_file="$2" + local status_file="$3" + + local upper_cmd="" + upper_cmd=$(upper "${tf_cmd%% *}") + + while [[ $(cat "$statusFile") -ne 0 ]]; do + echo -e "\n--- ${upper_cmd} FAILED ---" + if grep -q "BigQuery service account: googleapi: Error 403: Request is disallowed by organization's constraints/gcp.restrictServiceUsage constraint" "$resource_file"; then + echo -e "\n--- ${upper_cmd} FAILED WITH BQ USAGE CONSTRAINT ERROR ---" + if promptUser "Would you like to update the Assured Workloads folder to allow BigQuery and Cloud KMS?"; then + ("${SCRIPT_DIR}/allow_bq.sh") + sleep 120 + fi + return 1 + fi + if promptUser "Would you like to see what the terraform errors are?"; then + awk '/[Ee]rror/{p=1;print;next} p' "$resource_file" + fi + if promptUser "Do you want to re-run 'terraform ${tf_cmd}' now?"; then + echo "Initiating manual 'terraform ${tf_cmd}'..." + tfRun "$tf_cmd" "$resource_file" "$status_file" + else + echo "Skipping 'terraform ${tf_cmd}'." + return 1 + fi + done + cleanup "$resource_file" "$status_file" +} + +runTerraformCommand() { + local tf_cmd="$1" + local resource_file="$2" + local status_file="$3" + + tfRun "$tf_cmd" "$resource_file" "$status_file" + + if [[ -f "$status_file" ]] && [[ $(cat "$status_file") -ne 0 ]]; then + errorChecking "$tf_cmd" "$resource_file" "$status_file" + else + cleanup "$resource_file" "$status_file" + fi +} + +automateGroupsAdminAccess() { + local TEMP_DIR="${SCRIPT_DIR}/tmp" + if [[ ! -d $TEMP_DIR ]]; then + mkdir -p "${TEMP_DIR}" + fi + POLICY_JSON="${TEMP_DIR}/policy.json" + gcloud organizations get-iam-policy "$ORGANIZATION_ID" --format=json > "$POLICY_JSON" + CURRENT_GROUPS_RAW=$(gcloud identity groups search --customer "$DIRECTORY_CUSTOMER_ID" --labels "cloudidentity.googleapis.com/groups.discussion_forum" --format 'value(groups.groupKey.id)') + CURRENT_GROUPS=$(echo "$CURRENT_GROUPS_RAW" | tr ';' ' ') + GROUP_SLEEP_FLAG=false + for i in "${!GCP_GROUPS[@]}"; do + group="${GCP_GROUPS[$i]}"@"$FULLY_QUALIFIED_DOMAIN_NAME" + if ! echo "$CURRENT_GROUPS" | grep -q -w "$group"; then + echo "Creating group ${group}" + gcloud identity groups create "$group" --display-name="${GCP_GROUPS[$i]}" --organization "$ORGANIZATION_ID" --description "${GCP_DESCRIPTIONS[$i]}" + GROUP_SLEEP_FLAG=true + fi + done + if [[ $GROUP_SLEEP_FLAG == true ]]; then + echo "Sleeping for 30s to allow groups to propagate in GCP" + sleep 30 + fi + for i in "${!GCP_GROUPS[@]}"; do + group="${GCP_GROUPS[$i]}"@"$FULLY_QUALIFIED_DOMAIN_NAME" + if [[ "${GCP_ROLES[$i]}" ]]; then + IFS=':' read -ra ROLES_ARRAY <<< "${GCP_ROLES[$i]}" + echo "Assigning roles to group: $GROUP_NAME" + for role in "${ROLES_ARRAY[@]}"; do + jq --arg role "$role" --arg member "group:$group" ' + .bindings |= + ( + if any(.[]; .role == $role) then + map( + if .role ==$role and (.members | index($member) | not) then + .members += [$member] + else + . + end + ) + else + . + [ {"role": $role, "members": [$member]} ] + end + ) + ' "$POLICY_JSON" > temp.json && mv temp.json "$POLICY_JSON" + done + unset IFS + fi + done + gcloud organizations set-iam-policy "$ORGANIZATION_ID" "$POLICY_JSON" + rm -rf "$TEMP_DIR" +} + +upper() { + if [[ -n "$1" ]]; then + echo "${1}" | tr '[:lower:]' '[:upper:]' + fi + return 0 +} + +compliance_regime_mapping() { + case "${1}" in + "COMPLIANCE_REGIME_UNSPECIFIED") + echo "cru" + ;; + "IL2") + echo "il2" + ;; + "IL4") + echo "il4" + ;; + "IL5") + echo "il5" + ;; + "FEDRAMP_HIGH") + echo "frh" + ;; + "FEDRAMP_MODERATE") + echo "frm" + ;; + *) + echo "${1}" | tr '[:upper:]' '[:lower:]' + ;; + esac +} + +promptUser() { + echo -e "\n${1} Type 's' to skip, or 'c' to continue'." + read -r choice + if [[ "$choice" == "s" ]]; then + return 255 # Won't run command + else + shift + for i in "$@"; do + eval "$i" + done + fi +} + + +############ Prerequisites ############ +echo "Welcome to the Secure Cloud Landing Zone automated deployment! +This is designed for the initial deployment. For a redeployment, please make sure you change the prefix and run the delete.sh script prior to redeployment. + +If you do not have a large enough quota for your billing projects, follow the below link: +https://support.google.com/code/contact/billing_quota_increase + +Also, please make sure you have Super Admin privileges - if not, please contact your oganization administrator." + +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Prerequisites -"; then + # Authentication + promptUser 'Would you like to (re)authenticate with Google Cloud?' "gcloud auth login; gcloud auth application-default login" + + # Set variables + if [ ! -f "$CONFIG_FILE" ] || promptUser "Would you like to overwrite your .env file?"; then + gcloud organizations list + + read -r -p "Enter your billing account: " BILLING_ACCOUNT + read -r -p "Enter your bootstrap project ID: " BOOTSTRAP_PROJECT_ID + read -r -p "Enter the compliance regime: " COMPLIANCE_REGIME + read -r -p "Enter your directory customer ID : " DIRECTORY_CUSTOMER_ID + read -r -p "Enter your deployer email address: " DEPLOYER_EMAIL_ADDRESS + read -r -p "Enter your fully qualified domain name: " FULLY_QUALIFIED_DOMAIN_NAME + read -r -p "Enter your logging alerts email address: " LOGGING_ALERTS_EMAIL_ADDRESS + read -r -p "Enter your organization ID: " ORGANIZATION_ID + read -r -p "Enter your prefix (6 chars or less): " PREFIX + read -r -p "Enter your regions: " REGIONS + read -r -p "Enter your Assured Workload region: " AW_REGION + read -r -p "Enter your tenant environment(s) (dev,prod): " TENANT_ENVIRONMENTS + read -r -p "Enter your external Directory Customer IDs (comma-separated, or blank): " EXTERNAL_DIRECTORY_CUSTOMER_IDS + read -r -p "Enter your external Organization IDs (comma-separated, or blank): " EXTERNAL_ORGANIZATION_IDS + read -r -p "Enter the top level folder name: " TOP_LEVEL_FOLDER_NAME + read -r -p "Enter the top level folder ID: " TOP_LEVEL_FOLDER_ID + read -r -p "Enter the project path in gitlab for Workload Identity Federation (leave blank if not using): " CI_PROJECT_PATH + read -r -p "Enter the branch name in gitlab where Workload Identity Federation will authenticate from (leave blank if not using): " CI_COMMIT_BRANCH + read -r -p "Enter the GitLab URL if using Workload Identity Federation excluding trailing forward slash (leave blank if not using): " GITLAB_URL + read -r -p "Enter the JWKS (JSON Web Key Set) for GitLab-to-GCP authentication. Note: This is only required if operating on the secure Army network: " JWKS_KEY + + read -r -p "Enter the group name for gcp_organization_admins [default: gcp-organization-admins]: " TF_VAR_gcp_organization_admins_group + TF_VAR_gcp_organization_admins_group=${TF_VAR_gcp_organization_admins_group:-gcp-organization-admins} + read -r -p "Enter the group name for gcp_billing_admins [default: gcp-billing-admins]: " TF_VAR_gcp_billing_admins_group + TF_VAR_gcp_billing_admins_group=${TF_VAR_gcp_billing_admins_group:-gcp-billing-admins} + read -r -p "Enter the group name for gcp_vpc_network_admins [default: gcp-vpc-network-admins]: " TF_VAR_gcp_vpc_network_admins_group + TF_VAR_gcp_vpc_network_admins_group=${TF_VAR_gcp_vpc_network_admins_group:-gcp-vpc-network-admins} + read -r -p "Enter the group name for gcp_hybrid_connectivity_admins [default: gcp-hybrid-connectivity-admins]: " TF_VAR_gcp_hybrid_connectivity_admins_group + TF_VAR_gcp_hybrid_connectivity_admins_group=${TF_VAR_gcp_hybrid_connectivity_admins_group:-gcp-hybrid-connectivity-admins} + read -r -p "Enter the group name for gcp_logging_monitoring_admins [default: gcp-logging-monitoring-admins]: " TF_VAR_gcp_logging_monitoring_admins_group + TF_VAR_gcp_logging_monitoring_admins_group=${TF_VAR_gcp_logging_monitoring_admins_group:-gcp-logging-monitoring-admins} + read -r -p "Enter the group name for gcp_logging_monitoring_viewers [default: gcp-logging-monitoring-viewers]: " TF_VAR_gcp_logging_monitoring_viewers_group + TF_VAR_gcp_logging_monitoring_viewers_group=${TF_VAR_gcp_logging_monitoring_viewers_group:-gcp-logging-monitoring-viewers} + read -r -p "Enter the group name for gcp_security_admins [default: gcp-security-admins]: " TF_VAR_gcp_security_admins_group + TF_VAR_gcp_security_admins_group=${TF_VAR_gcp_security_admins_group:-gcp-security-admins} + read -r -p "Enter the group name for gcp_developers [default: gcp-developers]: " TF_VAR_gcp_developers_group + TF_VAR_gcp_developers_group=${TF_VAR_gcp_developers_group:-gcp-developers} + read -r -p "Enter the group name for gcp_devops [default: gcp-devops]: " TF_VAR_gcp_devops_group + TF_VAR_gcp_devops_group=${TF_VAR_gcp_devops_group:-gcp-devops} + + echo "--- Configuration Summary ---" + echo "billing-account: $BILLING_ACCOUNT" + echo "bootstrap-project-id: $BOOTSTRAP_PROJECT_ID" + echo "compliance-regime: $COMPLIANCE_REGIME" + echo "directory-customer-id: $DIRECTORY_CUSTOMER_ID" + echo "deployer-email-address: $DEPLOYER_EMAIL_ADDRESS" + echo "fully-qualified-domain-name: $FULLY_QUALIFIED_DOMAIN_NAME" + echo "logging-alerts-email-address: $LOGGING_ALERTS_EMAIL_ADDRESS" + echo "organization-id: $ORGANIZATION_ID" + echo "prefix: $PREFIX" + echo "regions: $REGIONS" + echo "aw-region: $AW_REGION" + echo "tenant-environments: $TENANT_ENVIRONMENTS" + echo "external-directory-customer-ids: $EXTERNAL_DIRECTORY_CUSTOMER_IDS" + echo "external-organization-ids: $EXTERNAL_ORGANIZATION_IDS" + echo "top-level-folder-name: $TOP_LEVEL_FOLDER_NAME" + echo "top-level-folder-id: $TOP_LEVEL_FOLDER_ID" + echo "ci-project-path: $CI_PROJECT_PATH" + echo "ci-commit-branch: $CI_COMMIT_BRANCH" + echo "gitlab-url: $GITLAB_URL" + echo "jwks-key: $JWKS_KEY" + echo "gcp-organization-admins: $TF_VAR_gcp_organization_admins_group" + echo "gcp-billing-admins: $TF_VAR_gcp_billing_admins_group" + echo "gcp-vpc-network-admins: $TF_VAR_gcp_vpc_network_admins_group" + echo "gcp-hybrid-connectivity-admins: $TF_VAR_gcp_hybrid_connectivity_admins_group" + echo "gcp-logging-monitoring-admins: $TF_VAR_gcp_logging_monitoring_admins_group" + echo "gcp-logging-monitoring-viewers: $TF_VAR_gcp_logging_monitoring_viewers_group" + echo "gcp-security-admins: $TF_VAR_gcp_security_admins_group" + echo "gcp-developers: $TF_VAR_gcp_developers_group" + echo "gcp-devops: $TF_VAR_gcp_devops_group" + + + { + echo "BILLING_ACCOUNT=$BILLING_ACCOUNT" + echo "BOOTSTRAP_PROJECT_ID=$BOOTSTRAP_PROJECT_ID" + echo "COMPLIANCE_REGIME=$COMPLIANCE_REGIME" + echo "DIRECTORY_CUSTOMER_ID=$DIRECTORY_CUSTOMER_ID" + echo "DEPLOYER_EMAIL_ADDRESS=$DEPLOYER_EMAIL_ADDRESS" + echo "FULLY_QUALIFIED_DOMAIN_NAME=$FULLY_QUALIFIED_DOMAIN_NAME" + echo "LOGGING_ALERTS_EMAIL_ADDRESS=$LOGGING_ALERTS_EMAIL_ADDRESS" + echo "ORGANIZATION_ID=$ORGANIZATION_ID" + echo "PREFIX=$PREFIX" + echo "REGIONS=$REGIONS" + echo "AW_REGION=$AW_REGION" + echo "TENANT_ENVIRONMENTS=$TENANT_ENVIRONMENTS" + echo "EXTERNAL_DIRECTORY_CUSTOMER_IDS=$EXTERNAL_DIRECTORY_CUSTOMER_IDS" + echo "EXTERNAL_ORGANIZATION_IDS=$EXTERNAL_ORGANIZATION_IDS" + echo "TOP_LEVEL_FOLDER_NAME=$TOP_LEVEL_FOLDER_NAME" + echo "TOP_LEVEL_FOLDER_ID=$TOP_LEVEL_FOLDER_ID" + echo "CI_PROJECT_PATH=$CI_PROJECT_PATH" + echo "CI_COMMIT_BRANCH=$CI_COMMIT_BRANCH" + echo "GITLAB_URL=$GITLAB_URL" + echo "JWKS_KEY=$JWKS_KEY" + echo "TF_VAR_gcp_organization_admins_group=$TF_VAR_gcp_organization_admins_group" + echo "TF_VAR_gcp_billing_admins_group=$TF_VAR_gcp_billing_admins_group" + echo "TF_VAR_gcp_vpc_network_admins_group=$TF_VAR_gcp_vpc_network_admins_group" + echo "TF_VAR_gcp_hybrid_connectivity_admins_group=$TF_VAR_gcp_hybrid_connectivity_admins_group" + echo "TF_VAR_gcp_logging_monitoring_admins_group=$TF_VAR_gcp_logging_monitoring_admins_group" + echo "TF_VAR_gcp_logging_monitoring_viewers_group=$TF_VAR_gcp_logging_monitoring_viewers_group" + echo "TF_VAR_gcp_security_admins_group=$TF_VAR_gcp_security_admins_group" + echo "TF_VAR_gcp_developers_group=$TF_VAR_gcp_developers_group" + echo "TF_VAR_gcp_devops_group=$TF_VAR_gcp_devops_group" + } >"$CONFIG_FILE" + else + # shellcheck source=automation/config.env.sample + source "$CONFIG_FILE" + echo "------------------------------------------------------------------" + basename "$CONFIG_FILE" + cat "$CONFIG_FILE" + echo -e "\n------------------------------------------------------------------" + echo "If the above does not look correct your .env file may be wrong!" + fi + + echo -e "\n--- Compliance List Verification ---" + if promptUser "Are the .yaml files accurately reflecting the compliance catalog?"; then + sync_compliance_lists() { + local target_dir=$1 + mkdir -p "${target_dir}" + echo "[SYNC] Copying compliance lists to ${target_dir}..." + cp "${SCRIPT_DIR}/allowed_apis.yaml" "${target_dir}/" + cp "${SCRIPT_DIR}/lz_exceptions.yaml" "${target_dir}/" + chmod 444 "${target_dir}/allowed_apis.yaml" + chmod 444 "${target_dir}/lz_exceptions.yaml" + } + + sync_compliance_lists "${SCRIPT_DIR}/../fast/stages-aw/1-assured-workload/data" + sync_compliance_lists "${SCRIPT_DIR}/../fast/stages-aw/3-networking/data" + + echo "[SUCCESS] Compliance lists synced and locked (Read-Only)." + fi + # -------------------------------------------- + + # Set Bootstrap Project + echo -e "\nChecking to make sure the bootstrap project exists" + bootstrap_state=$(gcloud projects describe "${BOOTSTRAP_PROJECT_ID}" --format 'value(lifecycleState)' 2>/dev/null) + bootstrap_status=$? + if [[ "$bootstrap_status" -ne 0 ]]; then + if promptUser "Project '${BOOTSTRAP_PROJECT_ID}' does not exist. Would you like to create it and set it to the default project?"; then + gcloud projects create "${BOOTSTRAP_PROJECT_ID}" --folder="${TOP_LEVEL_FOLDER_ID}" + gcloud config set project "${BOOTSTRAP_PROJECT_ID}" + fi + elif [[ "${bootstrap_state}" == "DELETE_REQUESTED" ]]; then + if promptUser "Project '${BOOTSTRAP_PROJECT_ID}' is pending deletion. Would you like to re-enable it and set it to the default project?"; then + gcloud projects undelete "${BOOTSTRAP_PROJECT_ID}" + gcloud config set project "${BOOTSTRAP_PROJECT_ID}" + fi + elif [[ "${bootstrap_state}" != "ACTIVE" ]]; then + echo "Project '${BOOTSTRAP_PROJECT_ID}' exists but is in non-active state: ${bootstrap_state}. This can be caused by the project still being in a provisioning state or by the lifecycleStatus not having been set yet." + else + promptUser "Would you like to set the bootstrap project as the default project?" "gcloud config set project ${BOOTSTRAP_PROJECT_ID}" + fi + + # setIAM + promptUser "Would you like to set your IAM permissions?" "\"${SCRIPT_DIR}/../fast/stages-aw/0-organization-bootstrap/setIAM.sh\" ${DEPLOYER_EMAIL_ADDRESS} ${ORGANIZATION_ID}" + + # enable Services + promptUser "Would you like to enable all Google Cloud Services?" "\"${SCRIPT_DIR}/../fast/stages-aw/0-organization-bootstrap/enableServices.sh\" ${DEPLOYER_EMAIL_ADDRESS} ${ORGANIZATION_ID}" + + if promptUser "Would you like to link the billing account to the bootstrap project?"; then + gcloud billing projects link "${BOOTSTRAP_PROJECT_ID}" --billing-account="${BILLING_ACCOUNT}" + fi + + # Groups and Admin setup + populateGroups + if promptUser "Would you like to create the Users and Groups and set up Administrative access?"; then + automateGroupsAdminAccess + fi + + echo -e "\nPlease follow the link below (if you have not yet done so) to enable access transparency for your organization" + echo "https://console.cloud.google.com/iam-admin/settings?invt=AbuKFg&organizationId=${ORGANIZATION_ID}" + echo "Press any key when complete to go to the next step." + read -r -n 1 -s -p "" + + echo -e "\nCongratulations, you have finished the prerequisites!" + +else + + # shellcheck source=automation/config.env.sample + source "$CONFIG_FILE" + populateGroups + echo "------------------------------------------------------------------" + basename "$CONFIG_FILE" + cat "$CONFIG_FILE" + echo -e "\n------------------------------------------------------------------" + echo -e "If the above does not look correct your configuration file may be wrong!\n" +fi + +# Mapping abbreviations +COMPLIANCE_REGIME_ABBREVIATION=$(compliance_regime_mapping "${COMPLIANCE_REGIME}") + +# Convert REGIONS from a string to an array +IFS=',' read -r -a REGIONS_ARRAY <<< "$REGIONS" +REGIONS_CONFIG=$(printf '%s", "' "${REGIONS_ARRAY[@]}" | sed 's/", "$//') +REGIONS_CONFIG="[\"$REGIONS_CONFIG\"]" + +########### Stage 0 - Organization ########### +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 0 - Organization Bootstrap -"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap || exit + resourceFile="${SCRIPT_DIR}/tmp/0-organization-bootstrap_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/0-organization-bootstrap_tf_status_$$" + + TOP_LEVEL_FOLDER_NAME_LOWER=$(echo "$TOP_LEVEL_FOLDER_NAME" | tr '[:upper:]' '[:lower:]') + # Check for remote Terraform state for organization + GCS_SOURCE_URL="gs://${TOP_LEVEL_FOLDER_NAME_LOWER}-prod-iac-core/terraform/state/default.tfstate" + SKIP_STAGE=false + + # # Check if the state exists in GCS + echo "Checking for file existence in Cloud Storage: ${GCS_SOURCE_URL}" + if gcloud storage ls "${GCS_SOURCE_URL}" &>/dev/null; then + echo "Skipping stage as the remote state is already present" + SKIP_STAGE=true + fi + + if [ "$SKIP_STAGE" = false ]; then + # Confirm billing account privileges + echo "Please make sure you have billing account admin privileges, and billing is enabled on the bootstrap project." + echo "Press any key to confirm, and go to the next step." + read -r -n 1 -s -p "" + + if promptUser "Would you to generate a new tfvars file?"; then + # Organization Policy: Allowed Policy Member Domains + if [ -z "$EXTERNAL_DIRECTORY_CUSTOMER_IDS" ]; then + # No External Customer Directory IDs + allowed_policy_member_domains_config="[]" + else + # Trim and Format Member Domains + allowed_policy_member_domains_config="[\"$(echo "$EXTERNAL_DIRECTORY_CUSTOMER_IDS" | tr -d '[:space:]' | sed 's/,/\", \"/g')\"]" + fi + + # Organization Policy: Access Boundaries + if [ -z "$EXTERNAL_ORGANIZATION_IDS" ]; then + # No External Organization IDs + allowed_access_boundaries_config="[]" + else + # Trim and Format Access Boundaries + allowed_access_boundaries_config="[\"$(echo "$EXTERNAL_ORGANIZATION_IDS" | tr -d '[:space:]' | sed 's/,/\", \"/g')\"]" + fi + GROUPS_BLOCK="" + + # Check each variable and append to our string if it exists + [ -n "${TF_VAR_gcp_billing_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-billing-admins = \"${TF_VAR_gcp_billing_admins_group}\"\n" + [ -n "${TF_VAR_gcp_devops_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-devops = \"${TF_VAR_gcp_devops_group}\"\n" + [ -n "${TF_VAR_gcp_vpc_network_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-vpc-network-admins = \"${TF_VAR_gcp_vpc_network_admins_group}\"\n" + [ -n "${TF_VAR_gcp_organization_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-organization-admins = \"${TF_VAR_gcp_organization_admins_group}\"\n" + [ -n "${TF_VAR_gcp_security_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-security-admins = \"${TF_VAR_gcp_security_admins_group}\"\n" + [ -n "${TF_VAR_gcp_devops_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-support = \"${TF_VAR_gcp_devops_group}\"\n" + + # Wrap it in the Terraform object syntax, interpreting the \n newlines safely + # If GROUPS_BLOCK is entirely empty, this outputs a clean "groups = {}" + if [ -n "$GROUPS_BLOCK" ]; then + GROUPS_OUTPUT=$(printf "{\n%b}" "$GROUPS_BLOCK") + else + GROUPS_OUTPUT="{}" + fi + + cat <terraform.tfvars +assured_workloads = { + regime = "${COMPLIANCE_REGIME}" # "IL4, IL5, FEDRAMP_HIGH, etc... if you wish to not use assured_workloads, set this value to COMPLIANCE_REGIME_UNSPECIFIED" + location = "${AW_REGION}" +} + +billing_account = { + id = "${BILLING_ACCOUNT}" +} + +bootstrap_project = "${BOOTSTRAP_PROJECT_ID}" + +groups = ${GROUPS_OUTPUT} + +# locations for GCS, BigQuery, KMS, and logging buckets created here +locations = { + bq = "$(echo "$REGIONS_CONFIG" | jq -r '.[0]')" + gcs = ${REGIONS_CONFIG} + logging = ${REGIONS_CONFIG} + pubsub = ${REGIONS_CONFIG} + kms = ${REGIONS_CONFIG} +} + +# use \`gcloud organizations list\` +organization = { + domain = "${FULLY_QUALIFIED_DOMAIN_NAME}" + id = "${ORGANIZATION_ID}" + customer_id = "${DIRECTORY_CUSTOMER_ID}" +} + +org_policies_config = { + import_defaults = false # No policies to import as of 27 SEP 2024 + constraints = { + allowed_policy_member_domains = ${allowed_policy_member_domains_config} # Additional externally allowed customer_ids + allowed_access_boundaries = ${allowed_access_boundaries_config} # Additional externally allowed organization_ids + } +} + +top_level_folder = { + name = "${TOP_LEVEL_FOLDER_NAME}" + id = "${TOP_LEVEL_FOLDER_ID}" +} +EOF + fi + + if promptUser "Would you like to ensure essential APIs are enabled for the folder context?"; then + echo "Enabling APIs for project: ${TOP_LEVEL_FOLDER_NAME}..." + + apis=( + "cloudbilling.googleapis.com" + "iam.googleapis.com" + "billingbudgets.googleapis.com" + "kmsinventory.googleapis.com" + "cloudkms.googleapis.com" + "assuredworkloads.googleapis.com" + "orgpolicy.googleapis.com" + "cloudresourcemanager.googleapis.com" + ) + + for api in "${apis[@]}"; do + echo "Activating $api for Folder: ${TOP_LEVEL_FOLDER_ID}..." + gcloud beta services enable "$api" --folder="${TOP_LEVEL_FOLDER_ID}" + done + + echo "Waiting for API propagation (120s)..." + sleep 120 + fi + + # Create temporary providers.tf + if [ ! -f "0-organization-bootstrap-providers.tf" ] || promptUser "Would you like to generate your initial providers.tf?"; then + cp providers.tf.tmp 0-organization-bootstrap-providers.tf + fi + + if promptUser "Would you like to perform the initial terraform init?"; then + runTerraformCommand "init" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + + # Update Providers + cmd=("gcloud storage cp gs://${TOP_LEVEL_FOLDER_NAME_LOWER}-org-iac-bootstrap/providers/0-organization-bootstrap-providers.tf ./") + promptUser "Would you like to update your providers file?" "${cmd[@]}" # Pass the array elements + + # Migrate State + if promptUser "Would you like to migrate to the remote state to ${TOP_LEVEL_FOLDER_NAME_LOWER}-org-iac?"; then + runTerraformCommand "init --migrate-state" "$resourceFile" "$statusFile" + fi + + echo "Congratulations, you have completed Stage 0!" + fi +fi + + + +########### Stage 1 - Assured Workload ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 1 - Assured Workload -"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/1-assured-workload || exit + resourceFile="${SCRIPT_DIR}/tmp/1-assured-workload_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/1-assured-workload_tf_status_$$" + + # # Set file paths for tfvars file + # GCS_SOURCE_URL="gs://${PREFIX}-prod-iac-core-inputs-0/stage-1/stage-1-inputs.auto.tfvars.json" + # LOCAL_DEST_PATH="./stage-1-inputs.auto.tfvars.json" + + # # Check if the file exists in GCS + # echo "Checking for file existence in Cloud Storage: ${GCS_SOURCE_URL}" + # if gcloud storage ls "${GCS_SOURCE_URL}" &>/dev/null; then + # cmd=("gcloud storage cp ${GCS_SOURCE_URL} ${LOCAL_DEST_PATH}") + # promptUser "Would you like to download your tfvars file for stage-1 from ${PREFIX}-prod-iac-core-inputs-0/stage-1?" "${cmd[@]}" + # fi + + # Generate TF Vars - This will NOT work indented + if promptUser "Would you to generate a new tfvars file?"; then + GROUPS_BLOCK="" + + # Check each variable and append to our string if it exists + [ -n "${TF_VAR_gcp_billing_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-billing-admins = \"${TF_VAR_gcp_billing_admins_group}\"\n" + [ -n "${TF_VAR_gcp_devops_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-devops = \"${TF_VAR_gcp_devops_group}\"\n" + [ -n "${TF_VAR_gcp_vpc_network_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-vpc-network-admins = \"${TF_VAR_gcp_vpc_network_admins_group}\"\n" + [ -n "${TF_VAR_gcp_organization_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-organization-admins = \"${TF_VAR_gcp_organization_admins_group}\"\n" + [ -n "${TF_VAR_gcp_security_admins_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-security-admins = \"${TF_VAR_gcp_security_admins_group}\"\n" + [ -n "${TF_VAR_gcp_devops_group}" ] && GROUPS_BLOCK="${GROUPS_BLOCK} gcp-support = \"${TF_VAR_gcp_devops_group}\"\n" + + # Wrap it in the Terraform object syntax, interpreting the \n newlines safely + # If GROUPS_BLOCK is entirely empty, this outputs a clean "groups = {}" + if [ -n "$GROUPS_BLOCK" ]; then + GROUPS_OUTPUT=$(printf "{\n%b}" "$GROUPS_BLOCK") + else + GROUPS_OUTPUT="{}" + fi + cat <terraform.tfvars +billing_account = { + id = "${BILLING_ACCOUNT}" +} + +groups = ${GROUPS_OUTPUT} + +# locations for GCS, BigQuery, KMS, and logging buckets created here +locations = { + bq = "$(echo "$REGIONS_CONFIG" | jq -r '.[0]')" + gcs = ${REGIONS_CONFIG} + logging = ${REGIONS_CONFIG} + pubsub = ${REGIONS_CONFIG} + kms = ${REGIONS_CONFIG} +} + +# use \`gcloud organizations list\` +organization = { + domain = "${FULLY_QUALIFIED_DOMAIN_NAME}" + id = "${ORGANIZATION_ID}" + customer_id = "${DIRECTORY_CUSTOMER_ID}" +} + +outputs_location = "~/fast-config" + +# use something unique and no longer than 9 characters +prefix = "${PREFIX}" + +fast_features = { + envs = true +} + +assured_workloads = { + regime = "${COMPLIANCE_REGIME}" # "IL4, IL5, FEDRAMP_HIGH, etc... if you wish to not use assured_workloads, set this value to COMPLIANCE_REGIME_UNSPECIFIED" + location = "${AW_REGION}" +} + +bootstrap_project = "${BOOTSTRAP_PROJECT_ID}" + +alert_email = "${LOGGING_ALERTS_EMAIL_ADDRESS}" + +top_level_folder = { + name = "${TOP_LEVEL_FOLDER_NAME}" + id = "${TOP_LEVEL_FOLDER_ID}" +} +EOF + + if [ -n "${APPLY_TIER_1_PUBSUB_SINK}" ]; then + echo "apply_tier_1_pubsub_sink = ${APPLY_TIER_1_PUBSUB_SINK}" >> terraform.tfvars + fi + + if [[ -n "$CI_PROJECT_PATH" && -n "$GITLAB_URL" ]]; then + export CI_PROJECT_PATH GITLAB_URL TENANT_CI_PROJECT_PATH + jq -n ' + .workload_identity_providers["gitlab-fed"] = { + "issuer": "gitlab", + "attribute_condition": "attribute.project_path == \"\(env.CI_PROJECT_PATH)\"", + "custom_settings": { + "issuer_uri": env.GITLAB_URL, + "audiences": [env.GITLAB_URL], + "jwks_json": env.JWKS_KEY + } + } | + .cicd_repositories.bootstrap = { + "name": env.CI_PROJECT_PATH, + "type": "gitlab", + "identity_provider": "gitlab-fed" + } | + .cicd_repositories.resman = { + "name": env.CI_PROJECT_PATH, + "type": "gitlab", + "identity_provider": "gitlab-fed" + } | + + if (env.TENANT_CI_PROJECT_PATH != null and env.TENANT_CI_PROJECT_PATH != "") then + .workload_identity_providers["gitlab-tenants"] = { + "issuer": "gitlab", + "attribute_condition": "attribute.project_path == \"\(env.TENANT_CI_PROJECT_PATH)\"", + "custom_settings": { + "issuer_uri": env.GITLAB_URL, + "audiences": [env.GITLAB_URL], + "jwks_json": env.JWKS_KEY + } + } | + .cicd_repositories.tenant = { + "name": env.TENANT_CI_PROJECT_PATH, + "type": "gitlab", + "identity_provider": "gitlab-tenants" + } + else + .cicd_repositories.tenant = { + "name": env.CI_PROJECT_PATH, + "type": "gitlab", + "identity_provider": "gitlab-fed" + } + end + ' > identity-providers.auto.tfvars.json + fi + fi + + # Create temporary providers.tf + if [ ! -f "1-assured-workload-providers.tf" ] || promptUser "Would you like to generate your initial providers.tf?"; then + cp providers.tf.tmp 1-assured-workload-providers.tf + fi + + if promptUser "Would you like to perform the initial terraform init?"; then + runTerraformCommand "init" "$resourceFile" "$statusFile" + fi + + if promptUser "Do you want to cross reference with the compliance and LZ Exception lists to ensure compliance?"; then + echo "Verifying project-level API allowlists against compliance and LZ Exception catalogs" + if ! bash "${SCRIPT_DIR}/allow_compliance_apis.sh"; then + echo "[ERROR] Exiting deployment: Unauthorized APIs detected in Terraform Plan." + exit 1 + fi + echo "[SUCCESS] Cross-check passed. Proceeding with Tiered Enforcement (COA 2)." + fi + + # Terraform Apply #1 + if promptUser "Would you like to run the first terraform apply with the bootstrap user?"; then + runTerraformCommand "apply -var bootstrap_user=${DEPLOYER_EMAIL_ADDRESS}" "$resourceFile" "$statusFile" + fi + + # Terraform Apply #2 + if promptUser "Would you like to run the second terraform apply with the bootstrap user?"; then + runTerraformCommand "apply -var bootstrap_user=${DEPLOYER_EMAIL_ADDRESS}" "$resourceFile" "$statusFile" + fi + + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' "${SCRIPT_DIR}"/../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" + cmd=("gcloud config set project ${PROJ_NAME}") + promptUser "Would you like to set the default project to ${PROJ_NAME}" "${cmd[@]}" + + # Update Providers + cmd=("gcloud storage cp gs://${PREFIX}-${COMPLIANCE_REGIME_ABBREVIATION}-prod-iac-core-outputs/providers/1-assured-workload-providers.tf ./") + promptUser "Would you like to update your providers file?" "${cmd[@]}" # Pass the array elements + + # Migrate State + if promptUser "Would you like to migrate to the remote state to ${PROJ_NAME}?"; then + runTerraformCommand "init --migrate-state" "$resourceFile" "$statusFile" + fi + + # Terraform Apply #3 + if promptUser "Would you like to run the third terraform apply (without the bootstrap user)?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + echo "Congratulations, you have completed Stage 1!" +fi + +########### Stage 2 - Resman ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 2 - Resource Manager -"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/2-resman || exit + resourceFile="${SCRIPT_DIR}/tmp/2-resman_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/2-resman_tf_status_$$" + + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' "${SCRIPT_DIR}"/../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" + + ## Set file paths for tfvars file + # GCS_SOURCE_URL="gs://${PREFIX}-prod-iac-core-inputs-0/stage-2/stage-2-inputs.auto.tfvars.json" + # LOCAL_DEST_PATH="./stage-1-inputs.auto.tfvars.json" + + # # Check if the file exists in GCS + # echo "Checking for file existence in Cloud Storage: ${GCS_SOURCE_URL}" + # if gcloud storage ls "${GCS_SOURCE_URL}" &>/dev/null; then + # cmd=("gcloud storage cp ${GCS_SOURCE_URL} ${LOCAL_DEST_PATH}") + # promptUser "Would you like to download your tfvars file for stage-2 from ${PREFIX}-prod-iac-core-inputs-0/stage-2?" "${cmd[@]}" + # fi + + # Generate new tfvars - this will not work indented + if promptUser "Would you like to generate a new 2-resman tfvars?"; then # Tenant Loop Logic + # Tenant Environment Configuration ---" + tenant_environments_config="" + IFS=',' read -r -a ENV_ARRAY <<< "$TENANT_ENVIRONMENTS" + for ENV_NAME in "${ENV_ARRAY[@]}"; do + ENV_NAME=$(echo "$ENV_NAME" | tr -d '[:space:]') + + tenant_environments_config+=" + ${ENV_NAME} = { + admin = \"${TF_VAR_gcp_organization_admins_group:-gcp-organization-admins}@${FULLY_QUALIFIED_DOMAIN_NAME}\" + }," + done + # Remove the trailing comma + if [[ -n "$tenant_environments_config" ]]; then + tenant_environments_config="${tenant_environments_config%,*}" + fi + + cat <terraform.tfvars +fast_features = { + envs = true +} + +tenant_environments = { +${tenant_environments_config:1} +} +EOF + + if [[ -n "$CI_PROJECT_PATH" && -n "$GITLAB_URL" ]]; then + cat <>terraform.tfvars + +cicd_repositories = { + networking = { + name = "${CI_PROJECT_PATH}" + type = "gitlab" + identity_provider = "gitlab-fed" + } + security = { + name = "${CI_PROJECT_PATH}" + type = "gitlab" + identity_provider = "gitlab-fed" + } + shared_services = { + name = "${CI_PROJECT_PATH}" + type = "gitlab" + identity_provider = "gitlab-fed" + } +} +EOF + fi + fi + + # Copy remote tfvars + cmd=( + "gcloud storage cp gs://${PREFIX}-${COMPLIANCE_REGIME_ABBREVIATION}-prod-iac-core-outputs/providers/2-resman-providers.tf ./" + "gcloud storage cp gs://${PREFIX}-${COMPLIANCE_REGIME_ABBREVIATION}-prod-iac-core-outputs/tfvars/1-globals.auto.tfvars.json ./" + "gcloud storage cp gs://${PREFIX}-${COMPLIANCE_REGIME_ABBREVIATION}-prod-iac-core-outputs/tfvars/1-assured-workload.auto.tfvars.json ./" + ) + promptUser "Would you like to pull the remote tfvars files created in Stage 1?" "${cmd[@]}" + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "Congratulations, you have completed Stage 2!" +fi + +########### Stage 3 - Networking ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 3 - Networking -"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/3-networking || exit + # Add external billing account + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' "${SCRIPT_DIR}"/../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" + + resourceFile="${SCRIPT_DIR}/tmp/3-networking-ngfw_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/3-networking-ngfw_tf_status_$$" + + # cmd=("./pre-redeploy.sh") + # promptUser "If this is a redeployment (<30 days), would you like to run the redeploy script?" "${cmd[@]}" + + if promptUser "Would you like to pull the remote tfvars files created in Stages 1 and 2?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/providers/3-networking-providers.tf ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-globals.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-assured-workload.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/2-resman.auto.tfvars.json ./ + fi + + if [ -n "${NETWORK_QUOTA_PREFERRED_VALUE}" ]; then + echo "network_quota_preferred_value = ${NETWORK_QUOTA_PREFERRED_VALUE}" >> terraform.tfvars + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the targeted terraform apply?"; then + runTerraformCommand "apply \ + -target=google_cloud_quotas_quota_preference.network_quota \ + -target=google_project_iam_custom_role.ngfw-custom-role \ + -target=local_file.generated_ingress_rule" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the full terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + echo "Congratulations, you have completed Stage 3!" +fi + +########### Stage 4 - Security ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 4 - Security -"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/4-security || exit + resourceFile="${SCRIPT_DIR}/tmp/4-security_tf_resources_$$" + statusFile="${SCRIPT_DIR}/tmp/4-security_tf_status_$$" + + # Add external billing account + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' "${SCRIPT_DIR}"/../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" + + if promptUser "Would you like to pull the remote tfvars files created in Stages 1 and 2?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/providers/4-security-providers.tf ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-globals.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-assured-workload.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/2-resman.auto.tfvars.json ./ + fi + + if promptUser "Would you like to perform the terraform init?"; then + runTerraformCommand "init" "$resourceFile" "$statusFile" + fi + + if promptUser "Would you like to perform the terraform apply?"; then + runTerraformCommand "apply" "$resourceFile" "$statusFile" + fi + + promptUser "Would you like to run the lockdown script?" "./sa_lockdown.sh" + + # promptUser "Would you like to delete the bootstrap project?" "./delete_gcp_project.sh --project-id=${BOOTSTRAP_PROJECT_ID}" + + echo "Congratulations, you have finished Stage 4! Please see the SBPG linked below for further hardening." + echo 'https://docs.google.com/document/d/1bkPg-Uj6cf6_w1IHPCTZ66SC0fVWz9pUfTZy9v6hcr0/' +fi + +m -rf "${SCRIPT_DIR}"/tmp \ No newline at end of file diff --git a/automation/stellar-destroy.sh b/automation/stellar-destroy.sh new file mode 100644 index 000000000..c7a72957c --- /dev/null +++ b/automation/stellar-destroy.sh @@ -0,0 +1,473 @@ +#!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. + +SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) +cd "${SCRIPT_DIR}" || exit + +promptUser() { + echo -e "\n${1} Type 's' to skip, or 'c' to continue'." + read -r choice + if [[ "$choice" == "s" ]]; then + return 255 # Won't run command + else + shift + for i in "$@"; do + eval "$i" + done + fi +} + +compliance_regime_mapping() { + case "${1}" in + "COMPLIANCE_REGIME_UNSPECIFIED") + echo "cru" + ;; + "IL2") + echo "il2" + ;; + "IL4") + echo "il4" + ;; + "IL5") + echo "il5" + ;; + "FEDRAMP_HIGH") + echo "frh" + ;; + "FEDRAMP_MODERATE") + echo "frm" + ;; + *) + echo "${1}" | tr '[:upper:]' '[:lower:]' + ;; + esac +} + +############ Prerequisites ############ +echo "Welcome to the Secure Cloud Landing Zone automated destruction!" + +if ! promptUser "This script will delete your entire environment, and all local .terraform dirs. Proceed with caution."; then exit; fi + +promptUser 'Would you like to authenticate with Google Cloud?' "gcloud auth login; gcloud auth application-default login" + +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Prerequisites -"; then + + # Pull Config File + if promptUser "Would you like to use an existing config file from a Google Storage Bucket?"; then + + echo -e "\nSearching for existing config.env files in GCS buckets..." + config_files=() + while IFS= read -r line; do + config_files+=("$line") + done < <( + for project in $(gcloud projects list --format="value(projectId)"); do + gcloud storage ls --project="$project" "gs://*-iac-core-config*/config.env" 2>/dev/null + done + ) + + if [ ${#config_files[@]} -eq 0 ]; then + echo "No existing config.env files found in any accessible GCS buckets." + else + echo -e "\nThe following config files were found:" + for i in "${!config_files[@]}"; do + printf "%s) %s\n" "$((i+1))" "${config_files[$i]#"gs://"}" + done + + echo "" + read -r -p "Please select the config file to use: " choice + + if [[ "$choice" =~ ^[0-9]+$ ]] && [ "$choice" -ge 1 ] && [ "$choice" -le ${#config_files[@]} ]; then + selected_index=$((choice-1)) + GCS_SOURCE_URL="${config_files[$selected_index]}" + display_path="${GCS_SOURCE_URL#"gs://"}" + echo "You selected: $display_path" + promptUser "Would you like to copy $display_path to $SCRIPT_DIR/config.env ?" "gcloud storage cp \"$GCS_SOURCE_URL\" \"$SCRIPT_DIR/config.env\"" + else + echo "Invalid selection. Please try again." + fi + fi + fi + + # Set variables + if [ ! -f "$SCRIPT_DIR"/config.env ] || promptUser "Would you like to overwrite your config.env file?"; then + gcloud organizations list + + read -r -p "Enter your billing account: " BILLING_ACCOUNT + read -r -p "Enter your bootstrap project ID: " BOOTSTRAP_PROJECT_ID + read -r -p "Enter the compliance regime: " COMPLIANCE_REGIME + read -r -p "Enter your directory customer ID : " DIRECTORY_CUSTOMER_ID + read -r -p "Enter your deployer email address: " DEPLOYER_EMAIL_ADDRESS + read -r -p "Enter your fully qualified domain name: " FULLY_QUALIFIED_DOMAIN_NAME + read -r -p "Enter your logging alerts email address: " LOGGING_ALERTS_EMAIL_ADDRESS + read -r -p "Enter your organization ID: " ORGANIZATION_ID + read -r -p "Enter your prefix (6 chars or less): " PREFIX + read -r -p "Enter your regions: " REGIONS + read -r -p "Enter your Assured Workload region: " AW_REGION + read -r -p "Enter your tenant environment(s) (dev,prod): " TENANT_ENVIRONMENTS + read -r -p "Enter your external Directory Customer IDs (comma-separated, or blank): " EXTERNAL_DIRECTORY_CUSTOMER_IDS + read -r -p "Enter your external Organization IDs (comma-separated, or blank): " EXTERNAL_ORGANIZATION_IDS + read -r -p "Enter the top level folder name: " TOP_LEVEL_FOLDER_NAME + read -r -p "Enter the top level folder ID: " TOP_LEVEL_FOLDER_ID + read -r -p "Enter the project path in gitlab for Workload Identity Federation (leave blank if not using): " CI_PROJECT_PATH + read -r -p "Enter the branch name in gitlab where Workload Identity Federation will authenticate from (leave blank if not using): " CI_COMMIT_BRANCH + read -r -p "Enter the GitLab URL if using Workload Identity Federation excluding trailing forward slash (leave blank if not using): " GITLAB_URL + read -r -p "Enter the JWKS (JSON Web Key Set) for GitLab-to-GCP authentication. Note: This is only required if operating on the secure Army network: " JWKS_KEY + + echo "--- Configuration Summary ---" + echo "billing-account: $BILLING_ACCOUNT" + echo "bootstrap-project-id: $BOOTSTRAP_PROJECT_ID" + echo "compliance-regime: $COMPLIANCE_REGIME" + echo "directory-customer-id: $DIRECTORY_CUSTOMER_ID" + echo "deployer-email-address: $DEPLOYER_EMAIL_ADDRESS" + echo "fully-qualified-domain-name: $FULLY_QUALIFIED_DOMAIN_NAME" + echo "logging-alerts-email-address: $LOGGING_ALERTS_EMAIL_ADDRESS" + echo "organization-id: $ORGANIZATION_ID" + echo "prefix: $PREFIX" + echo "regions: $REGIONS" + echo "aw-region: $AW_REGION" + echo "tenant-environments: $TENANT_ENVIRONMENTS" + echo "external-directory-customer-ids: $EXTERNAL_DIRECTORY_CUSTOMER_IDS" + echo "external-organization-ids: $EXTERNAL_ORGANIZATION_IDS" + echo "top-level-folder-name: $TOP_LEVEL_FOLDER_NAME" + echo "top-level-folder-id: $TOP_LEVEL_FOLDER_ID" + echo "ci-project-path: $CI_PROJECT_PATH" + echo "ci-commit-branch: $CI_COMMIT_BRANCH" + echo "gitlab-url: $GITLAB_URL" + echo "jwks-key: $JWKS_KEY" + + { + echo "BILLING_ACCOUNT=$BILLING_ACCOUNT" + echo "BOOTSTRAP_PROJECT_ID=$BOOTSTRAP_PROJECT_ID" + echo "COMPLIANCE_REGIME=$COMPLIANCE_REGIME" + echo "DIRECTORY_CUSTOMER_ID=$DIRECTORY_CUSTOMER_ID" + echo "DEPLOYER_EMAIL_ADDRESS=$DEPLOYER_EMAIL_ADDRESS" + echo "FULLY_QUALIFIED_DOMAIN_NAME=$FULLY_QUALIFIED_DOMAIN_NAME" + echo "LOGGING_ALERTS_EMAIL_ADDRESS=$LOGGING_ALERTS_EMAIL_ADDRESS" + echo "ORGANIZATION_ID=$ORGANIZATION_ID" + echo "PREFIX=$PREFIX" + echo "REGIONS=$REGIONS" + echo "AW_REGION=$AW_REGION" + echo "TENANT_ENVIRONMENTS=$TENANT_ENVIRONMENTS" + echo "EXTERNAL_DIRECTORY_CUSTOMER_IDS=$EXTERNAL_DIRECTORY_CUSTOMER_IDS" + echo "EXTERNAL_ORGANIZATION_IDS=$EXTERNAL_ORGANIZATION_IDS" + echo "TOP_LEVEL_FOLDER_NAME=$TOP_LEVEL_FOLDER_NAME" + echo "TOP_LEVEL_FOLDER_ID=$TOP_LEVEL_FOLDER_ID" + echo "CI_PROJECT_PATH=$CI_PROJECT_PATH" + echo "CI_COMMIT_BRANCH=$CI_COMMIT_BRANCH" + echo "GITLAB_URL=$GITLAB_URL" + echo "JWKS_KEY=$JWKS_KEY" + } > "$SCRIPT_DIR"/config.env + else + # shellcheck source=automation/config.env.sample + source "$SCRIPT_DIR"/config.env + echo "------------------------------------------------------------------" + echo "config.env" + cat config.env + echo -e "\n------------------------------------------------------------------" + echo "If the above does not look correct your config.env may be wrong!" + fi + + # Mapping abbreviations + COMPLIANCE_REGIME_ABBREVIATION=$(compliance_regime_mapping "${COMPLIANCE_REGIME}") + + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' ../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" + promptUser "Would you like to set your default project to ${PROJ_NAME}?" "gcloud config set project ${PROJ_NAME}" + + # if promptUser "Would you to set your IAM permissions?"; then + # "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap/setIam.sh "${DEPLOYER_EMAIL_ADDRESS}" "${ORGANIZATION_ID}" + # fi + + if promptUser "Would you like to disable org policies to allow for deletion?"; then + # gcloud org-policies delete-custom-constraint custom.kmsRotation"${PREFIX}" --organization="${ORGANIZATION_ID}" + gcloud resource-manager org-policies disable-enforce compute.requireOsLogin --folder="${TOP_LEVEL_FOLDER_ID}" + echo "Sleeping for 60 seconds to allow disabling policies to take effect" + sleep 60 + fi +else + # shellcheck source=automation/config.env.sample + source "$SCRIPT_DIR"/config.env + echo "------------------------------------------------------------------" + echo "${SCRIPT_DIR}/config.env" + cat "${SCRIPT_DIR}"/config.env + echo -e "\n------------------------------------------------------------------" + echo "If the above does not look correct your config.env may be wrong!" + + COMPLIANCE_REGIME_ABBREVIATION=$(compliance_regime_mapping "${COMPLIANCE_REGIME}") +fi + +# Convert REGIONS from a string to an array +IFS=',' read -r -a REGIONS_ARRAY <<< "$REGIONS" +REGIONS_CONFIG=$(printf '%s", "' "${REGIONS_ARRAY[@]}" | sed 's/", "$//') +REGIONS_CONFIG="[\"$REGIONS_CONFIG\"]" + +########### Stage 4 - Security ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 4 - Security"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/4-security || exit + + # if promptUser "Would you like to restore your bootstrap project if it was deleted?"; then + # gcloud projects undelete "${BOOTSTRAP_PROJECT_ID}" + # sleep 60 + # gcloud billing projects link "${BOOTSTRAP_PROJECT_ID}" --billing-account="${BILLING_ACCOUNT}" + # fi + + if promptUser "Would you like to pull the remote tfvars files created in Stages 0 and 1?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/providers/4-security-providers.tf ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-globals.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-assured-workload.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/2-resman.auto.tfvars.json ./ + fi + + if promptUser "Would you like to re-enable disabled Service Accounts?"; then + ./sa_lockdown.sh --enable + sleep 30 + fi + + promptUser "Would you like to perform the terraform init?" "terraform init" + promptUser "Would you like to run terraform destroy?" "terraform destroy" + promptUser "Would you like to delete your .terraform dir?" "rm -r .terraform" + + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' "${SCRIPT_DIR}"/../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" +fi + +########## Stage 3 - Networking ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 3 - Networking"; then + + cd "${SCRIPT_DIR}"/../fast/stages-aw/3-networking || exit + + if promptUser "Would you like to pull the remote tfvars files created in Stages 0 and 1?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/providers/3-networking-providers.tf ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-globals.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-assured-workload.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/2-resman.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/3-networking.auto.tfvars.json ./ # TESTING + fi + + promptUser "Would you like to perform the terraform init?" "terraform init" + promptUser "Would you like to generate your hierarchical-ingress-rules.yml file?" "terraform apply -target=local_file.generated_ingress_rule" + promptUser "Would you like to run terraform destroy?" "terraform destroy" + promptUser "If you receive a peering error, would you like to rerun terraform destroy?" "terraform destroy" + promptUser "Would you like to delete your .terraform dir?" "rm -r .terraform" + + export PROJ="automation-project" + RAW_PROJ_NAME=$(yq '.projects[] | select(.name == env(PROJ)) | .project_name' "${SCRIPT_DIR}"/../project-config.yml) + PROJ_NAME="${RAW_PROJ_NAME///$PREFIX}" + PROJ_NAME="${PROJ_NAME///$COMPLIANCE_REGIME_ABBREVIATION}" +fi + + +########### Stage 2 - Resman ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + +if promptUser "Stage 2 - Resource Manager"; then # Left Here + cd "${SCRIPT_DIR}"/../fast/stages-aw/2-resman || exit + + if promptUser "Would you like to pull the remote tfvars files created in Stage 0?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/providers/2-resman-providers.tf ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-globals.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/1-assured-workload.auto.tfvars.json ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/tfvars/2-resman.auto.tfvars.json ./ ### TESTING - Find something similar for networking deletion + fi + + promptUser "Would you like to perform the terraform init?" "terraform init" + + if promptUser "Would you like to remove all storage buckets?"; then + terraform state rm "module.branch-security-gcs.google_storage_bucket.bucket[0]" \ + "module.branch-network-gcs.google_storage_bucket.bucket[0]" + sleep 2 + + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-resman-sec + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-resman-net-0 + fi + promptUser "Would you like to run terraform destroy?" "terraform destroy -lock=false" + + # if promptUser "If you received an error for TagValues, would you like to delete all child tags?"; then + # read -r -p "Please enter the TagValue from the above error - numbers only" TAG + # gcloud resource-manager tags values delete tagValues/"${TAG}" + # terraform destroy + # fi + + promptUser "Would you like to delete your .terraform dir?" "rm -r .terraform" +fi + +########### Stage 1 - Assured Workload ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + + +if promptUser "Stage 1 - Assured Workload"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/1-assured-workload || exit + + if promptUser "Would you like to pull the remote tfvars files created in Stage 1?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs/providers/1-assured-workload-providers.tf ./ + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-inputs/stage-1/stage-1-inputs.auto.tfvars.json ./ + fi + + if promptUser "Would you like to set the bootstrap project as your default project?"; then + gcloud config set project "${BOOTSTRAP_PROJECT_ID}" + fi + + if promptUser "Would you like to copy the remote state to your local device, revert your providers, and migrate to the local state?"; then + gcloud storage cp gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-bootstrap/default.tfstate ./terraform.tfstate + cp providers.tf.tmp 1-assured-workload-providers.tf + terraform init -migrate-state + fi + + if promptUser "Would you to set your IAM permissions?"; then + "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap/setIam.sh "${DEPLOYER_EMAIL_ADDRESS}" "${ORGANIZATION_ID}" + fi + + if promptUser "Would you like to delete storage buckets?"; then + terraform state rm 'module.automation-tf-bootstrap-gcs.google_storage_bucket.bucket[0]' \ + 'module.automation-tf-output-gcs.google_storage_bucket.bucket[0]' \ + 'module.automation-tf-resman-gcs.google_storage_bucket.bucket[0]' \ + 'module.automation-tf-inputs-gcs.google_storage_bucket.bucket[0]' \ + 'module.automation-tf-config-gcs[0].google_storage_bucket.bucket[0]' \ + 'module.automation-tf-tenant-gcs.google_storage_bucket.bucket[0]' + sleep 2 + + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-outputs + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-bootstrap + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-inputs + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-config-0 + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-config + gcloud storage rm -r gs://"${PREFIX}"-"${COMPLIANCE_REGIME_ABBREVIATION}"-prod-iac-core-tenants + fi + + if promptUser "Would you like to run terraform destroy?"; then + terraform destroy -var bootstrap_user="$(gcloud config list --format 'value(core.account)')" + fi + + if promptUser "Did you receive any errors deleting projects or Assured Workloads resources?"; then + "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap/setIam.sh "${DEPLOYER_EMAIL_ADDRESS}" "${ORGANIZATION_ID}" + sleep 60 + terraform destroy + fi + + ### Keeping the below in for reference + # if promptUser "Did you receive any errors deleting projects"; then + # "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap/setIam.sh "${DEPLOYER_EMAIL_ADDRESS}" "${ORGANIZATION_ID}" + # gcloud projects delete "${PREFIX}"-prod-audit-logs-0 + # gcloud projects delete "${PREFIX}"-prod-iac-core-0 + # fi + + # if promptUser "Did you receive any errors deleting Assured Workloads?"; then + # "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap/setIam.sh "${DEPLOYER_EMAIL_ADDRESS}" "${ORGANIZATION_ID}" + + # aw_folder=$(gcloud resource-manager folders list --organization="${ORGANIZATION_ID}" | grep stellar-engine-"${PREFIX}" | awk '{print $3}') + # common_folder=$(gcloud resource-manager folders list --folder="${aw_folder}" --format='value(ID)') + # aw_environment=$(gcloud assured workloads list \ + # --organization="${ORGANIZATION_ID}" \ + # --location=us-east4 \ + # --format='value(name)' 2>/dev/null) + + # gcloud resource-manager folders delete "${common_folder}" + # gcloud resource-manager folders delete "${aw_folder}" + # echo 'Waiting 2 minutes to ensure child folders and projects are properly deleted, then deleting the Assured Workloads Environment' + # sleep 120 + # gcloud assured workloads delete "${aw_environment}" + # fi + + if promptUser "Would you like to delete your .terraform dir?"; then + rm -r .terraform + fi + + if promptUser "Would you like to delete your .tfstate?"; then + rm terraform.tfstate* + fi +fi + +########### Stage 0 - Organization ############ +echo -e "\n#######################################################" +echo "#######################################################" +echo "#######################################################" + + +if promptUser "Stage 0 - Organization -"; then + cd "${SCRIPT_DIR}"/../fast/stages-aw/0-organization-bootstrap || exit + + # Check for remaining AW folders + echo "Checking for other Assured Workloads in the folder ${TOP_LEVEL_FOLDER_ID}" + AW_COUNT=$(gcloud resource-manager folders list --folder="${TOP_LEVEL_FOLDER_ID}" --format="value(display_name)" | grep -Ec "CRU-|FRH-|IL2-|IL4-|IL5-") + + if [[ "$AW_COUNT" -gt 0 ]]; then + echo "There are still other Assured Workload folders deployed to this organization. Please run this script against the remaining Assured Workloads those before running this step." + exit + fi + TOP_LEVEL_FOLDER_NAME_LOWER=$(echo "$TOP_LEVEL_FOLDER_NAME" | tr '[:upper:]' '[:lower:]') + if promptUser "Would you like to pull the remote providers file created in Stage 0 and initialize the remote bucket?"; then + gcloud storage cp gs://"${TOP_LEVEL_FOLDER_NAME_LOWER}"-org-iac-bootstrap/tfvars/stage-0-inputs.auto.tfvars.json ./ + gcloud storage cp gs://"${TOP_LEVEL_FOLDER_NAME_LOWER}"-org-iac-bootstrap/providers/0-organization-bootstrap-providers.tf ./ + terraform init + fi + + if promptUser "Would you like to copy the remote state to your local device, revert your providers, and migrate to the local state?"; then + gcloud storage cp gs://"${TOP_LEVEL_FOLDER_NAME_LOWER}"-org-iac/terraform/state/default.tfstate ./terraform.tfstate + cp providers.tf.tmp 0-organization-bootstrap-providers.tf + terraform init -migrate-state + fi + + + if promptUser "Would you like to delete storage buckets?"; then + terraform state rm 'module.lz-logs-bootstrap-gcs.google_storage_bucket.bucket[0]' \ + 'module.lz-logs-state-gcs.google_storage_bucket.bucket[0]' + sleep 2 + + gcloud storage rm -r gs://"${TOP_LEVEL_FOLDER_NAME_LOWER}"-org-iac-bootstrap + gcloud storage rm -r gs://"${TOP_LEVEL_FOLDER_NAME_LOWER}"-org-iac + fi + + if promptUser "Would you like to run terraform destroy?"; then + terraform destroy + fi +fi + +if promptUser "Would you like re-enable compute.requireOsLogin?"; then + gcloud resource-manager org-policies enable-enforce compute.requireOsLogin --organization="${ORGANIZATION_ID}" +fi + +if promptUser "Would you like to remove your gcloud configuration?"; then + gcloud auth revoke "${DEPLOYER_EMAIL_ADDRESS}" +fi + +echo -e "\nCongratulations! You have deleted your environment. Please run clean.sh if you are still running into issues." + +# TODO - Remove user permissions +# Keep these +# Organization Policy Administrator +# Organization Role Administrator +# Service Account Admin diff --git a/blueprints/README.md b/blueprints/README.md index 80b61b0ac..d29a0c83f 100644 --- a/blueprints/README.md +++ b/blueprints/README.md @@ -1,3 +1,19 @@ + + # Terraform End-to-End Blueprints for Google Cloud This repository contains Terraform Blueprints for Google Cloud, designed to accelerate the deployment of various Google Cloud services. The table below provides a comprehensive list of available blueprints, indicating their applicability for FedRAMP High (FRH) and/or Impact Level 5 (IL5) compliance regimes. Each blueprint name links directly to its respective folder containing detailed documentation and Terraform code. diff --git a/blueprints/fedramp-high/access-context-manager/README.md b/blueprints/fedramp-high/access-context-manager/README.md index ece9a5db8..5e19da848 100644 --- a/blueprints/fedramp-high/access-context-manager/README.md +++ b/blueprints/fedramp-high/access-context-manager/README.md @@ -1,3 +1,19 @@ + + # Access Control Manager diff --git a/blueprints/fedramp-high/access-context-manager/main.tf b/blueprints/fedramp-high/access-context-manager/main.tf index 2add1e2cb..322c1ea75 100644 --- a/blueprints/fedramp-high/access-context-manager/main.tf +++ b/blueprints/fedramp-high/access-context-manager/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module "access_context_manager" { source = "../../../modules/access-context-manager" diff --git a/blueprints/fedramp-high/access-context-manager/outputs.tf b/blueprints/fedramp-high/access-context-manager/outputs.tf index 0c946e571..7171d3f54 100644 --- a/blueprints/fedramp-high/access-context-manager/outputs.tf +++ b/blueprints/fedramp-high/access-context-manager/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "access_levels" { description = "The list of created access levels with their details." diff --git a/blueprints/fedramp-high/access-context-manager/provider.tf b/blueprints/fedramp-high/access-context-manager/provider.tf index 5b34969e1..d59c5acd9 100644 --- a/blueprints/fedramp-high/access-context-manager/provider.tf +++ b/blueprints/fedramp-high/access-context-manager/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/access-context-manager/terraform.tfvars.sample b/blueprints/fedramp-high/access-context-manager/terraform.tfvars.sample index 780ca49f9..08af349ce 100644 --- a/blueprints/fedramp-high/access-context-manager/terraform.tfvars.sample +++ b/blueprints/fedramp-high/access-context-manager/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + organization_id = "1234567890" domain = "your-company.com" region = "us-central1" diff --git a/blueprints/fedramp-high/access-context-manager/variables.tf b/blueprints/fedramp-high/access-context-manager/variables.tf index ec4673fdb..8090ff552 100644 --- a/blueprints/fedramp-high/access-context-manager/variables.tf +++ b/blueprints/fedramp-high/access-context-manager/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "access_levels" { description = "List of access levels to create. Each access level is a map containing 'name', 'description', and 'conditions'." diff --git a/blueprints/fedramp-high/app-engine/README.md b/blueprints/fedramp-high/app-engine/README.md index 7342bfa1d..d028a6bd7 100644 --- a/blueprints/fedramp-high/app-engine/README.md +++ b/blueprints/fedramp-high/app-engine/README.md @@ -1,3 +1,19 @@ + + # App Engine diff --git a/blueprints/fedramp-high/app-engine/main.tf b/blueprints/fedramp-high/app-engine/main.tf index e23125405..86841414c 100644 --- a/blueprints/fedramp-high/app-engine/main.tf +++ b/blueprints/fedramp-high/app-engine/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module "app-engine" { source = "../../../modules/app-engine" diff --git a/blueprints/fedramp-high/app-engine/outputs.tf b/blueprints/fedramp-high/app-engine/outputs.tf index 6d215b57e..90eaada9d 100644 --- a/blueprints/fedramp-high/app-engine/outputs.tf +++ b/blueprints/fedramp-high/app-engine/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "app_id" { value = module.app-engine.app_id diff --git a/blueprints/fedramp-high/app-engine/provider.tf b/blueprints/fedramp-high/app-engine/provider.tf index 1883e0d73..ee0f59cb7 100644 --- a/blueprints/fedramp-high/app-engine/provider.tf +++ b/blueprints/fedramp-high/app-engine/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/app-engine/terraform.tfvars.sample b/blueprints/fedramp-high/app-engine/terraform.tfvars.sample index d610db218..a9044d4c1 100644 --- a/blueprints/fedramp-high/app-engine/terraform.tfvars.sample +++ b/blueprints/fedramp-high/app-engine/terraform.tfvars.sample @@ -1,2 +1,18 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" region = "us-east4" \ No newline at end of file diff --git a/blueprints/fedramp-high/app-engine/variables.tf b/blueprints/fedramp-high/app-engine/variables.tf index 9e012568a..5b9b2b20a 100644 --- a/blueprints/fedramp-high/app-engine/variables.tf +++ b/blueprints/fedramp-high/app-engine/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "main_project_id" { description = "Main project ID." diff --git a/blueprints/fedramp-high/beyondcorp/README.md b/blueprints/fedramp-high/beyondcorp/README.md index 68948c987..34f9f5558 100644 --- a/blueprints/fedramp-high/beyondcorp/README.md +++ b/blueprints/fedramp-high/beyondcorp/README.md @@ -1,3 +1,19 @@ + + ## Introduction to BeyondCorp BeyondCorp is Google Cloud's zero-trust network security framework, enabling secure access to applications and resources without relying on traditional VPNs. diff --git a/blueprints/fedramp-high/beyondcorp/main.tf b/blueprints/fedramp-high/beyondcorp/main.tf index 6b2030239..a7097a2a5 100644 --- a/blueprints/fedramp-high/beyondcorp/main.tf +++ b/blueprints/fedramp-high/beyondcorp/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module "beyondcorp" { source = "../../../modules/beyondcorp" diff --git a/blueprints/fedramp-high/beyondcorp/outputs.tf b/blueprints/fedramp-high/beyondcorp/outputs.tf index 2b0212f81..464e45071 100644 --- a/blueprints/fedramp-high/beyondcorp/outputs.tf +++ b/blueprints/fedramp-high/beyondcorp/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "endpoint_name" { description = "Name of the endpoint that was created." diff --git a/blueprints/fedramp-high/beyondcorp/provider.tf b/blueprints/fedramp-high/beyondcorp/provider.tf index 9d85cb3aa..72ff648d7 100644 --- a/blueprints/fedramp-high/beyondcorp/provider.tf +++ b/blueprints/fedramp-high/beyondcorp/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/beyondcorp/terraform.tfvars.sample b/blueprints/fedramp-high/beyondcorp/terraform.tfvars.sample index 3276be368..48bd1ffcb 100644 --- a/blueprints/fedramp-high/beyondcorp/terraform.tfvars.sample +++ b/blueprints/fedramp-high/beyondcorp/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + organization_id = "xxxxxxxxxxxx" main_project_id = "xxxx-xxxx-xxxx-main-0" diff --git a/blueprints/fedramp-high/beyondcorp/variables.tf b/blueprints/fedramp-high/beyondcorp/variables.tf index 9e6e9233d..f7b127f86 100644 --- a/blueprints/fedramp-high/beyondcorp/variables.tf +++ b/blueprints/fedramp-high/beyondcorp/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "endpoint_name" { description = "Name for endpoint." diff --git a/blueprints/fedramp-high/bigtable/README.md b/blueprints/fedramp-high/bigtable/README.md index 1c9990c70..3ecbc77ea 100644 --- a/blueprints/fedramp-high/bigtable/README.md +++ b/blueprints/fedramp-high/bigtable/README.md @@ -1,3 +1,19 @@ + + # Bigtable diff --git a/blueprints/fedramp-high/bigtable/main.tf b/blueprints/fedramp-high/bigtable/main.tf index d90016770..11fdb84b3 100644 --- a/blueprints/fedramp-high/bigtable/main.tf +++ b/blueprints/fedramp-high/bigtable/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "project" {} diff --git a/blueprints/fedramp-high/bigtable/outputs.tf b/blueprints/fedramp-high/bigtable/outputs.tf index 144ca9aac..37c9cfcc7 100644 --- a/blueprints/fedramp-high/bigtable/outputs.tf +++ b/blueprints/fedramp-high/bigtable/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "bigtable_service_identity_email" { description = "The email of the Bigtable Service Identity." diff --git a/blueprints/fedramp-high/bigtable/provider.tf b/blueprints/fedramp-high/bigtable/provider.tf index b1661f133..bfba739c4 100644 --- a/blueprints/fedramp-high/bigtable/provider.tf +++ b/blueprints/fedramp-high/bigtable/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/bigtable/terraform.tfvars.sample b/blueprints/fedramp-high/bigtable/terraform.tfvars.sample index 2854f4772..ef2d7e332 100644 --- a/blueprints/fedramp-high/bigtable/terraform.tfvars.sample +++ b/blueprints/fedramp-high/bigtable/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" diff --git a/blueprints/fedramp-high/bigtable/variables.tf b/blueprints/fedramp-high/bigtable/variables.tf index fad46aee2..da706d95b 100644 --- a/blueprints/fedramp-high/bigtable/variables.tf +++ b/blueprints/fedramp-high/bigtable/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "auto_delete" { description = "Persistent Disk auto delete options." diff --git a/blueprints/fedramp-high/cloud-armor/README.md b/blueprints/fedramp-high/cloud-armor/README.md index 6b9499eb4..e74da59e7 100644 --- a/blueprints/fedramp-high/cloud-armor/README.md +++ b/blueprints/fedramp-high/cloud-armor/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Armor diff --git a/blueprints/fedramp-high/cloud-armor/main.tf b/blueprints/fedramp-high/cloud-armor/main.tf index b180baec7..3f7750042 100644 --- a/blueprints/fedramp-high/cloud-armor/main.tf +++ b/blueprints/fedramp-high/cloud-armor/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { file = yamldecode(file(var.rules_file)) diff --git a/blueprints/fedramp-high/cloud-armor/outputs.tf b/blueprints/fedramp-high/cloud-armor/outputs.tf index b681c0e7b..9ed6370fa 100644 --- a/blueprints/fedramp-high/cloud-armor/outputs.tf +++ b/blueprints/fedramp-high/cloud-armor/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "policies" { description = "All created policy resources." value = google_compute_region_security_policy.policy diff --git a/blueprints/fedramp-high/cloud-armor/provider.tf b/blueprints/fedramp-high/cloud-armor/provider.tf index e8f900b4f..96e6d0614 100644 --- a/blueprints/fedramp-high/cloud-armor/provider.tf +++ b/blueprints/fedramp-high/cloud-armor/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-armor/rules.yaml b/blueprints/fedramp-high/cloud-armor/rules.yaml index 89c00ffa9..f02583a99 100644 --- a/blueprints/fedramp-high/cloud-armor/rules.yaml +++ b/blueprints/fedramp-high/cloud-armor/rules.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + gitlab-waf-policy: #Policy name description: WAF Policy tested for protecting GitLab for FEDRAMP High compliance rules: #List of rules in order of priority diff --git a/blueprints/fedramp-high/cloud-armor/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-armor/terraform.tfvars.sample index 22434ba54..88df87890 100644 --- a/blueprints/fedramp-high/cloud-armor/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-armor/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" region = "us-east4" rules_file = "rules.yaml" \ No newline at end of file diff --git a/blueprints/fedramp-high/cloud-armor/variables.tf b/blueprints/fedramp-high/cloud-armor/variables.tf index 33cb04d94..e9fb880d6 100644 --- a/blueprints/fedramp-high/cloud-armor/variables.tf +++ b/blueprints/fedramp-high/cloud-armor/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "main_project_id" { description = "Main project ID for Cloud Armor policies." diff --git a/blueprints/fedramp-high/cloud-composer-environment/README.md b/blueprints/fedramp-high/cloud-composer-environment/README.md index 3d32718cb..f2bc3ecc7 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/README.md +++ b/blueprints/fedramp-high/cloud-composer-environment/README.md @@ -1,3 +1,19 @@ + + # Cloud Composer diff --git a/blueprints/fedramp-high/cloud-composer-environment/iam.tf b/blueprints/fedramp-high/cloud-composer-environment/iam.tf index 5880f16c2..42fcf10c4 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/iam.tf +++ b/blueprints/fedramp-high/cloud-composer-environment/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_iam_member" "composer_worker" { project = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-composer-environment/main.tf b/blueprints/fedramp-high/cloud-composer-environment/main.tf index 4262b04ef..27d1b1486 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/main.tf +++ b/blueprints/fedramp-high/cloud-composer-environment/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "current" { project_id = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-composer-environment/outputs.tf b/blueprints/fedramp-high/cloud-composer-environment/outputs.tf index 9a896f6cc..9ce4d3675 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/outputs.tf +++ b/blueprints/fedramp-high/cloud-composer-environment/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "airflow_uri" { value = google_composer_environment.main.config[0].airflow_uri diff --git a/blueprints/fedramp-high/cloud-composer-environment/provider.tf b/blueprints/fedramp-high/cloud-composer-environment/provider.tf index d155278b8..e58e2e590 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/provider.tf +++ b/blueprints/fedramp-high/cloud-composer-environment/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-composer-environment/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-composer-environment/terraform.tfvars.sample index 358b9831e..87feef010 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-composer-environment/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/fedramp-high/cloud-composer-environment/variables.tf b/blueprints/fedramp-high/cloud-composer-environment/variables.tf index f40713a6f..11770bfa1 100644 --- a/blueprints/fedramp-high/cloud-composer-environment/variables.tf +++ b/blueprints/fedramp-high/cloud-composer-environment/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "composer_env_name" { diff --git a/blueprints/fedramp-high/cloud-functions/README.md b/blueprints/fedramp-high/cloud-functions/README.md index bca93362f..8f47b807a 100644 --- a/blueprints/fedramp-high/cloud-functions/README.md +++ b/blueprints/fedramp-high/cloud-functions/README.md @@ -1,3 +1,19 @@ + + # Cloud Functions This blueprint deploys a 2nd Generation Cloud Function. The Cloud Function Module and resource do not have the ability to set the binary authorization to default, so the only way around this is to deploy the cloud function with the gcloud command. diff --git a/blueprints/fedramp-high/cloud-functions/main.tf b/blueprints/fedramp-high/cloud-functions/main.tf index e1bcc8b8d..96987e484 100644 --- a/blueprints/fedramp-high/cloud-functions/main.tf +++ b/blueprints/fedramp-high/cloud-functions/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "current" { project_id = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-functions/outputs.tf b/blueprints/fedramp-high/cloud-functions/outputs.tf index a27fdf15d..5aba05bab 100644 --- a/blueprints/fedramp-high/cloud-functions/outputs.tf +++ b/blueprints/fedramp-high/cloud-functions/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "artifact_registry_iam_member" { description = "IAM member assigned to roles/artifactregistry.createOnPushWriter." diff --git a/blueprints/fedramp-high/cloud-functions/provider.tf b/blueprints/fedramp-high/cloud-functions/provider.tf index 570abf718..8c273e482 100644 --- a/blueprints/fedramp-high/cloud-functions/provider.tf +++ b/blueprints/fedramp-high/cloud-functions/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-functions/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-functions/terraform.tfvars.sample index 4f3be833d..be7f00848 100644 --- a/blueprints/fedramp-high/cloud-functions/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-functions/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" function_name = "function-name-00" diff --git a/blueprints/fedramp-high/cloud-functions/variables.tf b/blueprints/fedramp-high/cloud-functions/variables.tf index 9186fed2f..1d9bac421 100644 --- a/blueprints/fedramp-high/cloud-functions/variables.tf +++ b/blueprints/fedramp-high/cloud-functions/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "artifact_registry_name" { description = "Name of the Artifact Registry being deployed." diff --git a/blueprints/fedramp-high/cloud-ids/README.md b/blueprints/fedramp-high/cloud-ids/README.md index 023e4d8da..de89fa43d 100644 --- a/blueprints/fedramp-high/cloud-ids/README.md +++ b/blueprints/fedramp-high/cloud-ids/README.md @@ -1,3 +1,19 @@ + + # Cloud IDS diff --git a/blueprints/fedramp-high/cloud-ids/main.tf b/blueprints/fedramp-high/cloud-ids/main.tf index 348c94ff6..9e01cb994 100644 --- a/blueprints/fedramp-high/cloud-ids/main.tf +++ b/blueprints/fedramp-high/cloud-ids/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_service" "net-host-services" { project = var.network_project_id diff --git a/blueprints/fedramp-high/cloud-ids/outputs.tf b/blueprints/fedramp-high/cloud-ids/outputs.tf index 078eb456e..078819416 100644 --- a/blueprints/fedramp-high/cloud-ids/outputs.tf +++ b/blueprints/fedramp-high/cloud-ids/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "ids_name" { description = "The name of the Cloud IDS instance." diff --git a/blueprints/fedramp-high/cloud-ids/providers.tf b/blueprints/fedramp-high/cloud-ids/providers.tf index 19ba596d1..87f84d295 100644 --- a/blueprints/fedramp-high/cloud-ids/providers.tf +++ b/blueprints/fedramp-high/cloud-ids/providers.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-ids/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-ids/terraform.tfvars.sample index d3a742657..b1bd692ff 100644 --- a/blueprints/fedramp-high/cloud-ids/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-ids/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/fedramp-high/cloud-ids/variables.tf b/blueprints/fedramp-high/cloud-ids/variables.tf index 2eccdd933..30a18ece6 100644 --- a/blueprints/fedramp-high/cloud-ids/variables.tf +++ b/blueprints/fedramp-high/cloud-ids/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "ids_name" { description = "Name for IDS." diff --git a/blueprints/fedramp-high/cloud-run/README.md b/blueprints/fedramp-high/cloud-run/README.md index 55991e849..65fe9b00e 100644 --- a/blueprints/fedramp-high/cloud-run/README.md +++ b/blueprints/fedramp-high/cloud-run/README.md @@ -1,3 +1,19 @@ + + # Cloud Run diff --git a/blueprints/fedramp-high/cloud-run/main.tf b/blueprints/fedramp-high/cloud-run/main.tf index 9cade1cc1..9b8dfb3b6 100644 --- a/blueprints/fedramp-high/cloud-run/main.tf +++ b/blueprints/fedramp-high/cloud-run/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "project" { project_id = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-run/outputs.tf b/blueprints/fedramp-high/cloud-run/outputs.tf index 8b9bca30e..2ddef8116 100644 --- a/blueprints/fedramp-high/cloud-run/outputs.tf +++ b/blueprints/fedramp-high/cloud-run/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "cloud_run" { description = "Cloud Run Service that was created." diff --git a/blueprints/fedramp-high/cloud-run/provider.tf b/blueprints/fedramp-high/cloud-run/provider.tf index 2176c32b6..6dcabd4fb 100644 --- a/blueprints/fedramp-high/cloud-run/provider.tf +++ b/blueprints/fedramp-high/cloud-run/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">=1.0.0" diff --git a/blueprints/fedramp-high/cloud-run/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-run/terraform.tfvars.sample index e687650da..503384363 100644 --- a/blueprints/fedramp-high/cloud-run/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-run/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" diff --git a/blueprints/fedramp-high/cloud-run/variables.tf b/blueprints/fedramp-high/cloud-run/variables.tf index 7553695ee..69af884d4 100644 --- a/blueprints/fedramp-high/cloud-run/variables.tf +++ b/blueprints/fedramp-high/cloud-run/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "binary_authorization_mode" { description = "Binary Authorization mode for the Cloud Run service." diff --git a/blueprints/fedramp-high/cloud-scheduler-job/README.md b/blueprints/fedramp-high/cloud-scheduler-job/README.md index 290dcd5f2..6150a32a0 100644 --- a/blueprints/fedramp-high/cloud-scheduler-job/README.md +++ b/blueprints/fedramp-high/cloud-scheduler-job/README.md @@ -1,3 +1,19 @@ + + # Cloud Scheduler Job Blueprint This blueprint schedules a cron job to publish messages to an *existing* Google Cloud Pub/Sub topic. diff --git a/blueprints/fedramp-high/cloud-scheduler-job/main.tf b/blueprints/fedramp-high/cloud-scheduler-job/main.tf index d5722a9cd..8f15dce93 100644 --- a/blueprints/fedramp-high/cloud-scheduler-job/main.tf +++ b/blueprints/fedramp-high/cloud-scheduler-job/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "current" { project_id = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-scheduler-job/outputs.tf b/blueprints/fedramp-high/cloud-scheduler-job/outputs.tf index 1aee02ad3..33d704f0f 100644 --- a/blueprints/fedramp-high/cloud-scheduler-job/outputs.tf +++ b/blueprints/fedramp-high/cloud-scheduler-job/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "id" { description = "Job ID." diff --git a/blueprints/fedramp-high/cloud-scheduler-job/provider.tf b/blueprints/fedramp-high/cloud-scheduler-job/provider.tf index 5a8b3340b..59626538e 100644 --- a/blueprints/fedramp-high/cloud-scheduler-job/provider.tf +++ b/blueprints/fedramp-high/cloud-scheduler-job/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-scheduler-job/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-scheduler-job/terraform.tfvars.sample index 3884aba6a..628f94e54 100644 --- a/blueprints/fedramp-high/cloud-scheduler-job/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-scheduler-job/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" # The Google Cloud Project ID where the Cloud Scheduler job will be created. name = "cloud-scheduler-job-name-00" # Name of the Cloud Scheduler job. diff --git a/blueprints/fedramp-high/cloud-scheduler-job/variables.tf b/blueprints/fedramp-high/cloud-scheduler-job/variables.tf index 21e233050..50f4e58d3 100644 --- a/blueprints/fedramp-high/cloud-scheduler-job/variables.tf +++ b/blueprints/fedramp-high/cloud-scheduler-job/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "data" { description = "The base64-encoded data to be sent as the Pub/Sub message payload." diff --git a/blueprints/fedramp-high/cloud-spanner/README.md b/blueprints/fedramp-high/cloud-spanner/README.md index 6660afdc0..d1346c565 100644 --- a/blueprints/fedramp-high/cloud-spanner/README.md +++ b/blueprints/fedramp-high/cloud-spanner/README.md @@ -1,3 +1,19 @@ + + # Cloud Spanner - [Introduction to Cloud Spanner](#introduction-to-cloud-spanner) diff --git a/blueprints/fedramp-high/cloud-spanner/main.tf b/blueprints/fedramp-high/cloud-spanner/main.tf index 19deed3bb..b3894353f 100644 --- a/blueprints/fedramp-high/cloud-spanner/main.tf +++ b/blueprints/fedramp-high/cloud-spanner/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_service" "spanner_api" { project = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-spanner/outputs.tf b/blueprints/fedramp-high/cloud-spanner/outputs.tf index c6acd03b4..0f43ddbfe 100644 --- a/blueprints/fedramp-high/cloud-spanner/outputs.tf +++ b/blueprints/fedramp-high/cloud-spanner/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "instance" { description = "Cloud spanner instance." diff --git a/blueprints/fedramp-high/cloud-spanner/provider.tf b/blueprints/fedramp-high/cloud-spanner/provider.tf index 1883e0d73..ee0f59cb7 100644 --- a/blueprints/fedramp-high/cloud-spanner/provider.tf +++ b/blueprints/fedramp-high/cloud-spanner/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-spanner/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-spanner/terraform.tfvars.sample index cd0c09181..14d49a229 100644 --- a/blueprints/fedramp-high/cloud-spanner/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-spanner/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" instance_name = "cloud-spanner-instance-name-00" diff --git a/blueprints/fedramp-high/cloud-spanner/variables.tf b/blueprints/fedramp-high/cloud-spanner/variables.tf index be4b9faff..17fd6cfee 100644 --- a/blueprints/fedramp-high/cloud-spanner/variables.tf +++ b/blueprints/fedramp-high/cloud-spanner/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "config_name" { description = "Cloud spanner instance config name." diff --git a/blueprints/fedramp-high/cloud-translation/README.md b/blueprints/fedramp-high/cloud-translation/README.md index 0b35b771a..7d50dfe94 100644 --- a/blueprints/fedramp-high/cloud-translation/README.md +++ b/blueprints/fedramp-high/cloud-translation/README.md @@ -1,3 +1,19 @@ + + # Cloud Translation diff --git a/blueprints/fedramp-high/cloud-translation/code/example.yaml b/blueprints/fedramp-high/cloud-translation/code/example.yaml index 4e2608617..3c9cc4848 100644 --- a/blueprints/fedramp-high/cloud-translation/code/example.yaml +++ b/blueprints/fedramp-high/cloud-translation/code/example.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + main: steps: - init: diff --git a/blueprints/fedramp-high/cloud-translation/main.tf b/blueprints/fedramp-high/cloud-translation/main.tf index 01055407f..5fc00801c 100644 --- a/blueprints/fedramp-high/cloud-translation/main.tf +++ b/blueprints/fedramp-high/cloud-translation/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Enable the API service resource "google_project_service" "translate" { diff --git a/blueprints/fedramp-high/cloud-translation/outputs.tf b/blueprints/fedramp-high/cloud-translation/outputs.tf index f55489a13..f510566c7 100644 --- a/blueprints/fedramp-high/cloud-translation/outputs.tf +++ b/blueprints/fedramp-high/cloud-translation/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "input_bucket" { description = "Bucket that takes documents as input." diff --git a/blueprints/fedramp-high/cloud-translation/provider.tf b/blueprints/fedramp-high/cloud-translation/provider.tf index 4a580dc98..fd3388782 100644 --- a/blueprints/fedramp-high/cloud-translation/provider.tf +++ b/blueprints/fedramp-high/cloud-translation/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-translation/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-translation/terraform.tfvars.sample index d321cd193..06efd569c 100644 --- a/blueprints/fedramp-high/cloud-translation/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-translation/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" region = "us-east4" diff --git a/blueprints/fedramp-high/cloud-translation/variables.tf b/blueprints/fedramp-high/cloud-translation/variables.tf index 0af22aa25..7472d1f46 100644 --- a/blueprints/fedramp-high/cloud-translation/variables.tf +++ b/blueprints/fedramp-high/cloud-translation/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "deletion_protection" { description = "Deletion proteciton." diff --git a/blueprints/fedramp-high/cloud-workstations/README.md b/blueprints/fedramp-high/cloud-workstations/README.md index 538eb9353..acc61fed8 100644 --- a/blueprints/fedramp-high/cloud-workstations/README.md +++ b/blueprints/fedramp-high/cloud-workstations/README.md @@ -1,3 +1,19 @@ + + # Cloud Workstations Blueprint This blueprint demonstrates how to create Workstations on Google Cloud Platform (GCP) with Customer-Managed Encryption Keys (CMEK) using Cloud KMS. diff --git a/blueprints/fedramp-high/cloud-workstations/iam.tf b/blueprints/fedramp-high/cloud-workstations/iam.tf index 0fcbd459c..381f5184c 100644 --- a/blueprints/fedramp-high/cloud-workstations/iam.tf +++ b/blueprints/fedramp-high/cloud-workstations/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_service_account" "workstation_config_key_user" { project = var.main_project_id diff --git a/blueprints/fedramp-high/cloud-workstations/main.tf b/blueprints/fedramp-high/cloud-workstations/main.tf index c6933ed46..289832b8b 100644 --- a/blueprints/fedramp-high/cloud-workstations/main.tf +++ b/blueprints/fedramp-high/cloud-workstations/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { landing_project = var.network_project_id == null ? var.main_project_id : var.network_project_id diff --git a/blueprints/fedramp-high/cloud-workstations/outputs.tf b/blueprints/fedramp-high/cloud-workstations/outputs.tf index e8a385728..a0f5206d9 100644 --- a/blueprints/fedramp-high/cloud-workstations/outputs.tf +++ b/blueprints/fedramp-high/cloud-workstations/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "workstation_cluster" { description = "The cluster that was created to host the workstations." diff --git a/blueprints/fedramp-high/cloud-workstations/provider.tf b/blueprints/fedramp-high/cloud-workstations/provider.tf index 4b3f8df3f..97e0ea2c1 100644 --- a/blueprints/fedramp-high/cloud-workstations/provider.tf +++ b/blueprints/fedramp-high/cloud-workstations/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cloud-workstations/terraform.tfvars.sample b/blueprints/fedramp-high/cloud-workstations/terraform.tfvars.sample index 14506df58..e0b219500 100644 --- a/blueprints/fedramp-high/cloud-workstations/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cloud-workstations/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/fedramp-high/cloud-workstations/variables.tf b/blueprints/fedramp-high/cloud-workstations/variables.tf index 2422bb42e..4acf30e23 100644 --- a/blueprints/fedramp-high/cloud-workstations/variables.tf +++ b/blueprints/fedramp-high/cloud-workstations/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "cluster_id" { description = "The ID of the workstation cluster." diff --git a/blueprints/fedramp-high/cnap/README.md b/blueprints/fedramp-high/cnap/README.md index dcea70f84..9c014ae91 100644 --- a/blueprints/fedramp-high/cnap/README.md +++ b/blueprints/fedramp-high/cnap/README.md @@ -1,3 +1,19 @@ + + # Cloud Native Access Point This blueprint bootstraps a minimal environment using the concepts for a Cloud Native Access Point and BeyondCorp. For more information about the CNAP, please see the [Department of Defence Cloud Native Access Point Reference Design](https://dodcio.defense.gov/Portals/0/Documents/Library/CNAP_RefDesign_v1.0.pdf). diff --git a/blueprints/fedramp-high/cnap/access_policy.tf b/blueprints/fedramp-high/cnap/access_policy.tf index 7b0ebbb93..8621da93e 100644 --- a/blueprints/fedramp-high/cnap/access_policy.tf +++ b/blueprints/fedramp-high/cnap/access_policy.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_access_context_manager_access_levels" "access-levels" { parent = "accessPolicies/${var.access_policy_number}" diff --git a/blueprints/fedramp-high/cnap/cloud_armor.tf b/blueprints/fedramp-high/cnap/cloud_armor.tf index cf8439401..8fda64635 100644 --- a/blueprints/fedramp-high/cnap/cloud_armor.tf +++ b/blueprints/fedramp-high/cnap/cloud_armor.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { waf = yamldecode(file("data/cloudarmor.yaml")) diff --git a/blueprints/fedramp-high/cnap/cloud_ids.tf b/blueprints/fedramp-high/cnap/cloud_ids.tf index 77feae4ad..26ed1bb02 100644 --- a/blueprints/fedramp-high/cnap/cloud_ids.tf +++ b/blueprints/fedramp-high/cnap/cloud_ids.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - module "cloud_ids" { source = "../../../modules/intrusion-detection-system" project = var.network_project_id diff --git a/blueprints/fedramp-high/cnap/cloud_run.tf b/blueprints/fedramp-high/cnap/cloud_run.tf index 546ad16e8..5aa8fcbdc 100644 --- a/blueprints/fedramp-high/cnap/cloud_run.tf +++ b/blueprints/fedramp-high/cnap/cloud_run.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # These Cloud Run services are meant to represent real applications deployed behind the CNAP # This isn't mean to imply that *only* Cloud Run applications can be hosted behind the CNAP diff --git a/blueprints/fedramp-high/cnap/compute_engine.tf b/blueprints/fedramp-high/cnap/compute_engine.tf index 51155a7b9..e7ae3744e 100644 --- a/blueprints/fedramp-high/cnap/compute_engine.tf +++ b/blueprints/fedramp-high/cnap/compute_engine.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_compute_default_service_account" "default" { project = data.google_project.project.project_id } diff --git a/blueprints/fedramp-high/cnap/data/cloudarmor.yaml b/blueprints/fedramp-high/cnap/data/cloudarmor.yaml index 0475fdd52..dc6ebbc45 100644 --- a/blueprints/fedramp-high/cnap/data/cloudarmor.yaml +++ b/blueprints/fedramp-high/cnap/data/cloudarmor.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + basic_rules: #Rules called basic_rules xss: expression: "xss-v33-stable" # Preconfigured rule name diff --git a/blueprints/fedramp-high/cnap/data/cloudrun.yaml b/blueprints/fedramp-high/cnap/data/cloudrun.yaml index c0b9e37c1..2380f17a3 100644 --- a/blueprints/fedramp-high/cnap/data/cloudrun.yaml +++ b/blueprints/fedramp-high/cnap/data/cloudrun.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + easy: cloud_run_image: "us-docker.pkg.dev/cloudrun/container/hello" members: diff --git a/blueprints/fedramp-high/cnap/data/compute-engine.yaml b/blueprints/fedramp-high/cnap/data/compute-engine.yaml index 0aa00d48b..0381a5005 100644 --- a/blueprints/fedramp-high/cnap/data/compute-engine.yaml +++ b/blueprints/fedramp-high/cnap/data/compute-engine.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Terraform will puke if you try to have it parse an empty yaml file --- easy-vm: diff --git a/blueprints/fedramp-high/cnap/iap.tf b/blueprints/fedramp-high/cnap/iap.tf index 06e55b686..bdaf5c42a 100644 --- a/blueprints/fedramp-high/cnap/iap.tf +++ b/blueprints/fedramp-high/cnap/iap.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_service" "project_service" { diff --git a/blueprints/fedramp-high/cnap/load_balancer.tf b/blueprints/fedramp-high/cnap/load_balancer.tf index ce21bca41..802cc7be3 100644 --- a/blueprints/fedramp-high/cnap/load_balancer.tf +++ b/blueprints/fedramp-high/cnap/load_balancer.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { cr_backends = { for key, _ in try(local.cloud_runs, {}) : key => diff --git a/blueprints/fedramp-high/cnap/main.tf b/blueprints/fedramp-high/cnap/main.tf index 92e3e9d0b..2f7365127 100644 --- a/blueprints/fedramp-high/cnap/main.tf +++ b/blueprints/fedramp-high/cnap/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { diff --git a/blueprints/fedramp-high/cnap/org_policy.tf b/blueprints/fedramp-high/cnap/org_policy.tf index 26c65cfbc..caed7c531 100644 --- a/blueprints/fedramp-high/cnap/org_policy.tf +++ b/blueprints/fedramp-high/cnap/org_policy.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_org_policy_policy" "allow_external_lb" { name = "projects/${data.google_project.landing_project.number}/policies/compute.restrictLoadBalancerCreationForTypes" diff --git a/blueprints/fedramp-high/cnap/provider.tf b/blueprints/fedramp-high/cnap/provider.tf index 10a7f0fe3..5fd92d421 100644 --- a/blueprints/fedramp-high/cnap/provider.tf +++ b/blueprints/fedramp-high/cnap/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/cnap/terraform.tfvars.sample b/blueprints/fedramp-high/cnap/terraform.tfvars.sample index d99a16bc9..620fa9273 100644 --- a/blueprints/fedramp-high/cnap/terraform.tfvars.sample +++ b/blueprints/fedramp-high/cnap/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + domain = "xxxx.example.com" main_project_id = "xxxx-xxxx-xxxx-main-0" diff --git a/blueprints/fedramp-high/cnap/variables.tf b/blueprints/fedramp-high/cnap/variables.tf index ab5df3ff5..0aa10fa22 100644 --- a/blueprints/fedramp-high/cnap/variables.tf +++ b/blueprints/fedramp-high/cnap/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "access_policy_number" { description = "There can only be one Access Policy per GCP Org. Use gcloud access-context-manager policies list --organization to list it." type = number diff --git a/blueprints/fedramp-high/datafusion/README.md b/blueprints/fedramp-high/datafusion/README.md index 8709b0f84..53636e69c 100644 --- a/blueprints/fedramp-high/datafusion/README.md +++ b/blueprints/fedramp-high/datafusion/README.md @@ -1,3 +1,19 @@ + + # Data Fusion diff --git a/blueprints/fedramp-high/datafusion/iam.tf b/blueprints/fedramp-high/datafusion/iam.tf index a71d6dd05..163d4457b 100644 --- a/blueprints/fedramp-high/datafusion/iam.tf +++ b/blueprints/fedramp-high/datafusion/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_service_account" "datafusion_sa" { project = var.main_project_id diff --git a/blueprints/fedramp-high/datafusion/main.tf b/blueprints/fedramp-high/datafusion/main.tf index 73433756f..b487ecf69 100644 --- a/blueprints/fedramp-high/datafusion/main.tf +++ b/blueprints/fedramp-high/datafusion/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "project" { project_id = var.main_project_id diff --git a/blueprints/fedramp-high/datafusion/outputs.tf b/blueprints/fedramp-high/datafusion/outputs.tf index 9e7fde70c..52b6a4042 100644 --- a/blueprints/fedramp-high/datafusion/outputs.tf +++ b/blueprints/fedramp-high/datafusion/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "id" { description = "Fully qualified instance id." diff --git a/blueprints/fedramp-high/datafusion/provider.tf b/blueprints/fedramp-high/datafusion/provider.tf index e17e7b392..c7bf3b90f 100644 --- a/blueprints/fedramp-high/datafusion/provider.tf +++ b/blueprints/fedramp-high/datafusion/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/datafusion/terraform.tfvars.sample b/blueprints/fedramp-high/datafusion/terraform.tfvars.sample index 5a94820ac..3ef39d559 100644 --- a/blueprints/fedramp-high/datafusion/terraform.tfvars.sample +++ b/blueprints/fedramp-high/datafusion/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/fedramp-high/datafusion/variables.tf b/blueprints/fedramp-high/datafusion/variables.tf index 4ad55cb8b..1a5c6de62 100644 --- a/blueprints/fedramp-high/datafusion/variables.tf +++ b/blueprints/fedramp-high/datafusion/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "core_project_id" { description = "Core project ID." diff --git a/blueprints/fedramp-high/dataproc-cluster/README.md b/blueprints/fedramp-high/dataproc-cluster/README.md index 069bdcb6e..e828607cf 100644 --- a/blueprints/fedramp-high/dataproc-cluster/README.md +++ b/blueprints/fedramp-high/dataproc-cluster/README.md @@ -1,3 +1,19 @@ + + Copyright 2023 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/blueprints/fedramp-high/dataproc-cluster/iam.tf b/blueprints/fedramp-high/dataproc-cluster/iam.tf index 3bd6f9534..02ce80e6f 100644 --- a/blueprints/fedramp-high/dataproc-cluster/iam.tf +++ b/blueprints/fedramp-high/dataproc-cluster/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_iam_member" "worker" { project = var.main_project_id diff --git a/blueprints/fedramp-high/dataproc-cluster/main.tf b/blueprints/fedramp-high/dataproc-cluster/main.tf index 36035e2bb..1e2211990 100644 --- a/blueprints/fedramp-high/dataproc-cluster/main.tf +++ b/blueprints/fedramp-high/dataproc-cluster/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" { project_id = var.main_project_id } diff --git a/blueprints/fedramp-high/dataproc-cluster/outputs.tf b/blueprints/fedramp-high/dataproc-cluster/outputs.tf index f441c94c1..c41b0a1df 100644 --- a/blueprints/fedramp-high/dataproc-cluster/outputs.tf +++ b/blueprints/fedramp-high/dataproc-cluster/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "dataproc_bucket" { description = "GCS Bucket for DataProc." diff --git a/blueprints/fedramp-high/dataproc-cluster/provider.tf b/blueprints/fedramp-high/dataproc-cluster/provider.tf index 6e485bd7b..54ffe5959 100644 --- a/blueprints/fedramp-high/dataproc-cluster/provider.tf +++ b/blueprints/fedramp-high/dataproc-cluster/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">=1.0.0" diff --git a/blueprints/fedramp-high/dataproc-cluster/terraform.tfvars.sample b/blueprints/fedramp-high/dataproc-cluster/terraform.tfvars.sample index fd7f68bb6..a63dfd2ac 100644 --- a/blueprints/fedramp-high/dataproc-cluster/terraform.tfvars.sample +++ b/blueprints/fedramp-high/dataproc-cluster/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/fedramp-high/dataproc-cluster/variables.tf b/blueprints/fedramp-high/dataproc-cluster/variables.tf index 14c81fa29..0e3ce5ed3 100644 --- a/blueprints/fedramp-high/dataproc-cluster/variables.tf +++ b/blueprints/fedramp-high/dataproc-cluster/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "core_project_id" { description = "The ID of the iac core project where the KMS key is." type = string diff --git a/blueprints/fedramp-high/datastore/README.md b/blueprints/fedramp-high/datastore/README.md index 2dd6ee84b..d686d40bf 100644 --- a/blueprints/fedramp-high/datastore/README.md +++ b/blueprints/fedramp-high/datastore/README.md @@ -1,3 +1,19 @@ + + # Datastore Blueprint diff --git a/blueprints/fedramp-high/datastore/index.yaml b/blueprints/fedramp-high/datastore/index.yaml index d76e88945..0087a3f40 100644 --- a/blueprints/fedramp-high/datastore/index.yaml +++ b/blueprints/fedramp-high/datastore/index.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + indexes: - kind: Task diff --git a/blueprints/fedramp-high/datastore/main.tf b/blueprints/fedramp-high/datastore/main.tf index 439267640..6fafce3ed 100644 --- a/blueprints/fedramp-high/datastore/main.tf +++ b/blueprints/fedramp-high/datastore/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_service" "datastore_api" { project = var.main_project_id diff --git a/blueprints/fedramp-high/datastore/provider.tf b/blueprints/fedramp-high/datastore/provider.tf index 2014efec8..a176e5d5a 100644 --- a/blueprints/fedramp-high/datastore/provider.tf +++ b/blueprints/fedramp-high/datastore/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/datastore/terraform.tfvars.sample b/blueprints/fedramp-high/datastore/terraform.tfvars.sample index d610db218..a9044d4c1 100644 --- a/blueprints/fedramp-high/datastore/terraform.tfvars.sample +++ b/blueprints/fedramp-high/datastore/terraform.tfvars.sample @@ -1,2 +1,18 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" region = "us-east4" \ No newline at end of file diff --git a/blueprints/fedramp-high/datastore/variables.tf b/blueprints/fedramp-high/datastore/variables.tf index 5302b5e87..b9abf030b 100644 --- a/blueprints/fedramp-high/datastore/variables.tf +++ b/blueprints/fedramp-high/datastore/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "main_project_id" { description = "The ID of your project. This project must contain an app engine instance." diff --git a/blueprints/fedramp-high/document-ai/README.md b/blueprints/fedramp-high/document-ai/README.md index 9c5315514..5ead3f315 100644 --- a/blueprints/fedramp-high/document-ai/README.md +++ b/blueprints/fedramp-high/document-ai/README.md @@ -1,3 +1,19 @@ + + # Document AI diff --git a/blueprints/fedramp-high/document-ai/code/example.yaml b/blueprints/fedramp-high/document-ai/code/example.yaml index 3ac295d9d..0c9a4ee22 100644 --- a/blueprints/fedramp-high/document-ai/code/example.yaml +++ b/blueprints/fedramp-high/document-ai/code/example.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + main: steps: - start: diff --git a/blueprints/fedramp-high/document-ai/iam.tf b/blueprints/fedramp-high/document-ai/iam.tf index 05c3f6f2e..60edb03fd 100644 --- a/blueprints/fedramp-high/document-ai/iam.tf +++ b/blueprints/fedramp-high/document-ai/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_service_account" "workflow_sa" { account_id = "docai-workflow-sa" diff --git a/blueprints/fedramp-high/document-ai/main.tf b/blueprints/fedramp-high/document-ai/main.tf index de2b2cd8d..0e3227cfa 100644 --- a/blueprints/fedramp-high/document-ai/main.tf +++ b/blueprints/fedramp-high/document-ai/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Enable the API service resource "google_project_service" "documentai" { diff --git a/blueprints/fedramp-high/document-ai/outputs.tf b/blueprints/fedramp-high/document-ai/outputs.tf index f89959784..2e0097923 100644 --- a/blueprints/fedramp-high/document-ai/outputs.tf +++ b/blueprints/fedramp-high/document-ai/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "id" { description = "Document AI processor id." diff --git a/blueprints/fedramp-high/document-ai/provider.tf b/blueprints/fedramp-high/document-ai/provider.tf index 4a580dc98..fd3388782 100644 --- a/blueprints/fedramp-high/document-ai/provider.tf +++ b/blueprints/fedramp-high/document-ai/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/document-ai/terraform.tfvars.sample b/blueprints/fedramp-high/document-ai/terraform.tfvars.sample index 6eb0b7fa4..18f9b3b2a 100644 --- a/blueprints/fedramp-high/document-ai/terraform.tfvars.sample +++ b/blueprints/fedramp-high/document-ai/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" name = "document-ai-processor-name-00" diff --git a/blueprints/fedramp-high/document-ai/variables.tf b/blueprints/fedramp-high/document-ai/variables.tf index f8b89eb3e..733ccf14b 100644 --- a/blueprints/fedramp-high/document-ai/variables.tf +++ b/blueprints/fedramp-high/document-ai/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "deletion_protection" { description = "Deletion proteciton." diff --git a/blueprints/fedramp-high/firestore/README.md b/blueprints/fedramp-high/firestore/README.md index 63397f463..ff6a3eb99 100644 --- a/blueprints/fedramp-high/firestore/README.md +++ b/blueprints/fedramp-high/firestore/README.md @@ -1,3 +1,19 @@ + + # Firestore diff --git a/blueprints/fedramp-high/firestore/main.tf b/blueprints/fedramp-high/firestore/main.tf index a42ac67c6..7fc1d8f36 100644 --- a/blueprints/fedramp-high/firestore/main.tf +++ b/blueprints/fedramp-high/firestore/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_service" "datastore_api" { project = var.main_project_id diff --git a/blueprints/fedramp-high/firestore/outputs.tf b/blueprints/fedramp-high/firestore/outputs.tf index 2a11ae15d..a01c89f3c 100644 --- a/blueprints/fedramp-high/firestore/outputs.tf +++ b/blueprints/fedramp-high/firestore/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "firestore_earliest_version_time" { value = module.firestore.firestore_database.earliest_version_time diff --git a/blueprints/fedramp-high/firestore/provider.tf b/blueprints/fedramp-high/firestore/provider.tf index 139d6d95d..d978e880d 100644 --- a/blueprints/fedramp-high/firestore/provider.tf +++ b/blueprints/fedramp-high/firestore/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/firestore/terraform.tfvars.sample b/blueprints/fedramp-high/firestore/terraform.tfvars.sample index 0852a0742..ba612247d 100644 --- a/blueprints/fedramp-high/firestore/terraform.tfvars.sample +++ b/blueprints/fedramp-high/firestore/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" firestore_database_name = "firestore-database-00" diff --git a/blueprints/fedramp-high/firestore/variables.tf b/blueprints/fedramp-high/firestore/variables.tf index 160d15f06..3ca468a99 100644 --- a/blueprints/fedramp-high/firestore/variables.tf +++ b/blueprints/fedramp-high/firestore/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "backup_schedule" { description = "The Backup schedule - select daily or weekly in your tfvars." diff --git a/blueprints/fedramp-high/gemini-enterprise/README.md b/blueprints/fedramp-high/gemini-enterprise/README.md index 6ed805d99..4f4f9c89b 100644 --- a/blueprints/fedramp-high/gemini-enterprise/README.md +++ b/blueprints/fedramp-high/gemini-enterprise/README.md @@ -1,3 +1,19 @@ + + # Gemini Enterprise for FedRAMP High - Comprehensive Documentation **Version:** 1.2.0 diff --git a/blueprints/fedramp-high/gemini-enterprise/analytics/Dockerfile b/blueprints/fedramp-high/gemini-enterprise/analytics/Dockerfile index 1af08c50f..ed3f6c120 100644 --- a/blueprints/fedramp-high/gemini-enterprise/analytics/Dockerfile +++ b/blueprints/fedramp-high/gemini-enterprise/analytics/Dockerfile @@ -1,3 +1,17 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + # Use a hardened base image (e.g., Iron Bank or Google Distroless) FROM python:3.11-slim @@ -10,4 +24,6 @@ COPY . . # Expose port 8080 for Cloud Run EXPOSE 8080 -CMD ["streamlit", "run", "app.py", "--server.port=8080", "--server.address=0.0.0.0"] \ No newline at end of file +CMD ["streamlit", "run", "app.py", "--server.port=8080", "--server.address=0.0.0.0"] +# Run as non-root user for security +USER 10001 diff --git a/blueprints/fedramp-high/gemini-enterprise/analytics/README.md b/blueprints/fedramp-high/gemini-enterprise/analytics/README.md index 32c98be77..daaa4c2c4 100644 --- a/blueprints/fedramp-high/gemini-enterprise/analytics/README.md +++ b/blueprints/fedramp-high/gemini-enterprise/analytics/README.md @@ -1,3 +1,19 @@ + + # Gemini Enterprise Usage Analytics Dashboard This directory contains a Streamlit application designed to visualize usage analytics for Gemini Enterprise (via Discovery Engine) by querying audit logs stored in BigQuery. diff --git a/blueprints/fedramp-high/gemini-enterprise/analytics/app.py b/blueprints/fedramp-high/gemini-enterprise/analytics/app.py index ab8b4a133..0a84a68da 100644 --- a/blueprints/fedramp-high/gemini-enterprise/analytics/app.py +++ b/blueprints/fedramp-high/gemini-enterprise/analytics/app.py @@ -1,3 +1,17 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + import streamlit as st import plotly.express as px from google.cloud import bigquery diff --git a/blueprints/fedramp-high/gemini-enterprise/deploy.sh b/blueprints/fedramp-high/gemini-enterprise/deploy.sh index 9bf05aa33..9b3a98086 100755 --- a/blueprints/fedramp-high/gemini-enterprise/deploy.sh +++ b/blueprints/fedramp-high/gemini-enterprise/deploy.sh @@ -1,4 +1,18 @@ #!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + set -e # Ensure gem4gov can be found in the python path diff --git a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/README.md b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/README.md index 45627d80b..9d44949b1 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/README.md +++ b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/README.md @@ -1,3 +1,19 @@ + + # gem4gov `gem4gov` is a command-line tool designed to streamline the onboarding process for government customers to Gemini for Government. This tool automates the setup and configuration of the necessary Google Cloud components, ensuring a smooth and efficient deployment. diff --git a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/auth.py b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/auth.py index 7c10684f1..139fe70f8 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/auth.py +++ b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/auth.py @@ -1,4 +1,4 @@ -# Copyright 2026 Google Inc. +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + import click import google.auth from googleapiclient.discovery import build diff --git a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/data_stores.py b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/data_stores.py index 2739848c6..92a9238bb 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/data_stores.py +++ b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/data_stores.py @@ -1,4 +1,4 @@ -# Copyright 2026 Google Inc. +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + import click import json from googleapiclient.errors import HttpError diff --git a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/engine_features.yaml b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/engine_features.yaml index 351b94741..18421ab78 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/engine_features.yaml +++ b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/engine_features.yaml @@ -1,4 +1,4 @@ -# Copyright 2026 Google Inc. +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Features for the search engine # See https://cloud.google.com/generative-ai-app-builder/docs/reference/rest/v1alpha/projects.locations.collections.engines#features features: diff --git a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/gem4gov.py b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/gem4gov.py index 88b0226fc..908a4cc53 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/gem4gov.py +++ b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/gem4gov.py @@ -1,4 +1,4 @@ -# Copyright 2026 Google Inc. +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + import sys import click import google.auth diff --git a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/setup.py b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/setup.py index e82adeaec..a0a442f2d 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/setup.py +++ b/blueprints/fedramp-high/gemini-enterprise/gem4gov-cli/setup.py @@ -1,4 +1,4 @@ -# Copyright 2026 Google Inc. +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + from setuptools import setup, find_packages setup( diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/access_policy.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/access_policy.tf index c23561be3..4e749136e 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/access_policy.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/access_policy.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Access level for allowlisted source IP ranges resource "google_access_context_manager_access_level" "ip_based_access" { diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/analytics.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/analytics.tf index b15fbf141..12392ec52 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/analytics.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/analytics.tf @@ -1,16 +1,18 @@ -# Copyright 2026 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_iam_audit_config" "discovery_engine_audit" { count = var.enable_analytics ? 1 : 0 diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cloudarmor.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cloudarmor.tf index 4bd820156..41c1a05fd 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cloudarmor.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cloudarmor.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { waf = yamldecode(file("data/cloudarmor.yaml")) diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cmek.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cmek.tf index ceba27071..d57ba868b 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cmek.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/cmek.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { # Final CMEK Key ID - Only explicitly set if we are enabling Data Store CMEK diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/data/cloudarmor.yaml b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/data/cloudarmor.yaml index f271fff03..59926d968 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/data/cloudarmor.yaml +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/data/cloudarmor.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + basic_rules: sqli: expression: "sqli-v33-stable" diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/discovery-engine.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/discovery-engine.tf index 5ebab61e1..c3b67f8d1 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/discovery-engine.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/discovery-engine.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { gcs_lifecycle_age = 30 diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/iam.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/iam.tf index fbb6989e3..2bbb231f6 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/iam.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # ----------------------------------------------------------------------------- # IAM ROLE ASSIGNMENTS diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/load_balancer.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/load_balancer.tf index 8ff9923ea..ffd01d1d7 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/load_balancer.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/load_balancer.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { load_balancing_scheme = var.deployment_type == "internal" ? "INTERNAL_MANAGED" : "EXTERNAL_MANAGED" diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/main.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/main.tf index 03200889d..b5449abfe 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/main.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ ## Data Variables + Enabling APIs ## diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/network.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/network.tf index 22328d50c..bd5ca55e3 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/network.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/network.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # ---------------------------------------------------------------------------- # # Networking Resources # diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/outputs.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/outputs.tf index b25d6549f..1bd759a49 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/outputs.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "admin_group" { value = var.admin_group diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/provider.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/provider.tf index 003d35631..d9bd6e074 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/provider.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/state.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/state.tf index fa25bbd22..bc2f72778 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/state.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/state.tf @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + data "google_storage_bucket" "terraform_state" { name = var.terraform_state_bucket } diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/terraform.tfvars.sample b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/terraform.tfvars.sample index c8e951a03..a4dfd479b 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/terraform.tfvars.sample +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/terraform.tfvars.sample @@ -1,16 +1,19 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "prefx-main-xxx-x" prefix = "prefx" diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/variables.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/variables.tf index 101692e3a..ec18b0ef4 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/variables.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-0/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "environment" { description = "The environment identifier (e.g. prod, dev, staging)." type = string diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/load_balancer.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/load_balancer.tf index 05075f763..fefa9988f 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/load_balancer.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/load_balancer.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Data source to read Stage 0 state data "terraform_remote_state" "stage_0" { diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/provider.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/provider.tf index 8066dcb9c..35a459f55 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/provider.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/provider.tf @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + terraform { backend "gcs" {} required_providers { diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/terraform.tfvars.sample b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/terraform.tfvars.sample index 57d72389b..d61f748cb 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/terraform.tfvars.sample +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/terraform.tfvars.sample @@ -1,16 +1,19 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + # Stage 0 State Bucket (Required for remote state access) stage_0_state_bucket = "sedev-gemini-enterprise-tf-state-sedev-test-mike-iac-core-0" diff --git a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/variables.tf b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/variables.tf index 18098d670..3b46d9f55 100644 --- a/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/variables.tf +++ b/blueprints/fedramp-high/gemini-enterprise/gemini-stage-1/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "stage_0_state_bucket" { description = "The name of the GCS bucket used for Stage 0 Terraform state." diff --git a/blueprints/fedramp-high/gitlab/README.md b/blueprints/fedramp-high/gitlab/README.md index 02137b30e..643e1e9c7 100644 --- a/blueprints/fedramp-high/gitlab/README.md +++ b/blueprints/fedramp-high/gitlab/README.md @@ -1,3 +1,19 @@ + + # GitLab Blueprint This blueprint will deploy all the required infrastructure to host a GitLab instance that can support 40 RPS. diff --git a/blueprints/fedramp-high/gitlab/images/Backend 443.png b/blueprints/fedramp-high/gitlab/images/Backend 443.png new file mode 100644 index 000000000..386e8753b Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/Backend 443.png differ diff --git a/blueprints/fedramp-high/gitlab/images/DNS Auth Creation.png b/blueprints/fedramp-high/gitlab/images/DNS Auth Creation.png new file mode 100644 index 000000000..25b213831 Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/DNS Auth Creation.png differ diff --git a/blueprints/fedramp-high/gitlab/images/DNS CNAME Creation.png b/blueprints/fedramp-high/gitlab/images/DNS CNAME Creation.png new file mode 100644 index 000000000..a537db252 Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/DNS CNAME Creation.png differ diff --git a/blueprints/fedramp-high/gitlab/images/Healthcheck 443.png b/blueprints/fedramp-high/gitlab/images/Healthcheck 443.png new file mode 100644 index 000000000..a0ceae25f Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/Healthcheck 443.png differ diff --git a/blueprints/fedramp-high/gitlab/images/IAP.png b/blueprints/fedramp-high/gitlab/images/IAP.png new file mode 100644 index 000000000..d6253651f Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/IAP.png differ diff --git a/blueprints/fedramp-high/gitlab/images/VPC-subnets.png b/blueprints/fedramp-high/gitlab/images/VPC-subnets.png new file mode 100644 index 000000000..bbd058819 Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/VPC-subnets.png differ diff --git a/blueprints/fedramp-high/gitlab/images/frontend certificate.png b/blueprints/fedramp-high/gitlab/images/frontend certificate.png new file mode 100644 index 000000000..b56fe7bce Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/frontend certificate.png differ diff --git a/blueprints/fedramp-high/gitlab/images/instance runner .png b/blueprints/fedramp-high/gitlab/images/instance runner .png new file mode 100644 index 000000000..274930925 Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/instance runner .png differ diff --git a/blueprints/fedramp-high/gitlab/images/instance-linux.png b/blueprints/fedramp-high/gitlab/images/instance-linux.png new file mode 100644 index 000000000..2f33bcf96 Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/instance-linux.png differ diff --git a/blueprints/fedramp-high/gitlab/images/linux platform.png b/blueprints/fedramp-high/gitlab/images/linux platform.png new file mode 100644 index 000000000..c73f12adf Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/linux platform.png differ diff --git a/blueprints/fedramp-high/gitlab/images/sucessful gitlab launch.png b/blueprints/fedramp-high/gitlab/images/sucessful gitlab launch.png new file mode 100644 index 000000000..d810457bf Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/sucessful gitlab launch.png differ diff --git a/blueprints/fedramp-high/gitlab/images/terraform.tfvars.png b/blueprints/fedramp-high/gitlab/images/terraform.tfvars.png new file mode 100644 index 000000000..9bbbcb33f Binary files /dev/null and b/blueprints/fedramp-high/gitlab/images/terraform.tfvars.png differ diff --git a/blueprints/fedramp-high/gitlab/main.tf b/blueprints/fedramp-high/gitlab/main.tf index 676756036..ecacc085e 100644 --- a/blueprints/fedramp-high/gitlab/main.tf +++ b/blueprints/fedramp-high/gitlab/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "project" {} diff --git a/blueprints/fedramp-high/gitlab/outputs.tf b/blueprints/fedramp-high/gitlab/outputs.tf index 7c2d96610..7e8f09847 100644 --- a/blueprints/fedramp-high/gitlab/outputs.tf +++ b/blueprints/fedramp-high/gitlab/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "gke-cluster" { description = "Deployed GKE cluster." diff --git a/blueprints/fedramp-high/gitlab/provider.tf b/blueprints/fedramp-high/gitlab/provider.tf index 3624c92af..f719154ee 100644 --- a/blueprints/fedramp-high/gitlab/provider.tf +++ b/blueprints/fedramp-high/gitlab/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/gitlab/terraform.tfvars.sample b/blueprints/fedramp-high/gitlab/terraform.tfvars.sample index a91c86560..220daf4a1 100644 --- a/blueprints/fedramp-high/gitlab/terraform.tfvars.sample +++ b/blueprints/fedramp-high/gitlab/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + gitlab_uri = "gitlab.mine.com" network = "projects//global/networks/" subnetwork = "projects//regions/us-east4/subnetworks/" diff --git a/blueprints/fedramp-high/gitlab/variables.tf b/blueprints/fedramp-high/gitlab/variables.tf index c9ae3428a..5f1814427 100644 --- a/blueprints/fedramp-high/gitlab/variables.tf +++ b/blueprints/fedramp-high/gitlab/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "gitlab_uri" { description = "The URL hostname that the gitlab instance will be attached to." diff --git a/blueprints/fedramp-high/network-connectivity-center/README.md b/blueprints/fedramp-high/network-connectivity-center/README.md index 0b4f39839..e7b4b527c 100644 --- a/blueprints/fedramp-high/network-connectivity-center/README.md +++ b/blueprints/fedramp-high/network-connectivity-center/README.md @@ -1,3 +1,19 @@ + + # Network Connectivity Center Blueprint This blueprint demonstrates how to create a Google Cloud Network Connectivity Center (NCC) Hub and connect existing VPC networks as spokes, supporting various network topologies (MESH/STAR) within a multi-project GCP environment. diff --git a/blueprints/fedramp-high/network-connectivity-center/main.tf b/blueprints/fedramp-high/network-connectivity-center/main.tf index 7d46185b9..c4e4fd84b 100644 --- a/blueprints/fedramp-high/network-connectivity-center/main.tf +++ b/blueprints/fedramp-high/network-connectivity-center/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { spoke_projects = distinct( diff --git a/blueprints/fedramp-high/network-connectivity-center/outputs.tf b/blueprints/fedramp-high/network-connectivity-center/outputs.tf index b46a5d2f1..b148b8152 100644 --- a/blueprints/fedramp-high/network-connectivity-center/outputs.tf +++ b/blueprints/fedramp-high/network-connectivity-center/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "hub" { description = "The NCC hub ID." diff --git a/blueprints/fedramp-high/network-connectivity-center/provider.tf b/blueprints/fedramp-high/network-connectivity-center/provider.tf index efc88ffd9..6fe72df9c 100644 --- a/blueprints/fedramp-high/network-connectivity-center/provider.tf +++ b/blueprints/fedramp-high/network-connectivity-center/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/network-connectivity-center/terraform.tfvars.sample b/blueprints/fedramp-high/network-connectivity-center/terraform.tfvars.sample index 40bb8ed6c..924bbf6de 100644 --- a/blueprints/fedramp-high/network-connectivity-center/terraform.tfvars.sample +++ b/blueprints/fedramp-high/network-connectivity-center/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" # Replace with your main project ID ncc_hub_name = "ncc-hub-name-00" # The name of your NCC hub diff --git a/blueprints/fedramp-high/network-connectivity-center/variables.tf b/blueprints/fedramp-high/network-connectivity-center/variables.tf index 8df8cf3d8..4210ee3b6 100644 --- a/blueprints/fedramp-high/network-connectivity-center/variables.tf +++ b/blueprints/fedramp-high/network-connectivity-center/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "main_project_id" { description = "The Google Cloud Project ID where the NCC hub will be created." diff --git a/blueprints/fedramp-high/secret-manager/README.md b/blueprints/fedramp-high/secret-manager/README.md index 7f556ceb6..5c2d88c7b 100644 --- a/blueprints/fedramp-high/secret-manager/README.md +++ b/blueprints/fedramp-high/secret-manager/README.md @@ -1,3 +1,19 @@ + + # Secret Manager Blueprint This blueprint demonstrates how to create Google Secret Manager secrets, configure them with Customer-Managed Encryption Keys (CMEK) using Cloud KMS, and manage their IAM permissions, all within a multi-project GCP environment. It guides users on securely adding secret versions outside of Terraform state using a bash script. diff --git a/blueprints/fedramp-high/secret-manager/add_secret_versions.sh b/blueprints/fedramp-high/secret-manager/add_secret_versions.sh index 74374cb5c..9e034a18d 100755 --- a/blueprints/fedramp-high/secret-manager/add_secret_versions.sh +++ b/blueprints/fedramp-high/secret-manager/add_secret_versions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + # Exit immediately if a command exits with a non-zero status. set -e diff --git a/blueprints/fedramp-high/secret-manager/main.tf b/blueprints/fedramp-high/secret-manager/main.tf index 14be94705..9367339e4 100644 --- a/blueprints/fedramp-high/secret-manager/main.tf +++ b/blueprints/fedramp-high/secret-manager/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { # Grab all the keys from the secrets variable in order to grant permissions to secret manager service account diff --git a/blueprints/fedramp-high/secret-manager/outputs.tf b/blueprints/fedramp-high/secret-manager/outputs.tf index b6eb07ea7..c0ca555b8 100644 --- a/blueprints/fedramp-high/secret-manager/outputs.tf +++ b/blueprints/fedramp-high/secret-manager/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "ids" { description = "Secret IDs." diff --git a/blueprints/fedramp-high/secret-manager/provider.tf b/blueprints/fedramp-high/secret-manager/provider.tf index a0b9b3107..bfb29570a 100644 --- a/blueprints/fedramp-high/secret-manager/provider.tf +++ b/blueprints/fedramp-high/secret-manager/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/secret-manager/terraform.tfvars.sample b/blueprints/fedramp-high/secret-manager/terraform.tfvars.sample index 53cb934f2..aa0dde317 100644 --- a/blueprints/fedramp-high/secret-manager/terraform.tfvars.sample +++ b/blueprints/fedramp-high/secret-manager/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" # Replace with your main project ID gcp_region = "us-east4" # Renamed from 'region' diff --git a/blueprints/fedramp-high/secret-manager/variables.tf b/blueprints/fedramp-high/secret-manager/variables.tf index 69d388730..ffd6c9afd 100644 --- a/blueprints/fedramp-high/secret-manager/variables.tf +++ b/blueprints/fedramp-high/secret-manager/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "iam" { description = "IAM bindings in {SECRET => {ROLE => [MEMBERS]}} format." diff --git a/blueprints/fedramp-high/vertex-mlops/README.md b/blueprints/fedramp-high/vertex-mlops/README.md index def9f5662..535736c05 100644 --- a/blueprints/fedramp-high/vertex-mlops/README.md +++ b/blueprints/fedramp-high/vertex-mlops/README.md @@ -1,3 +1,19 @@ + + # MLOps with Vertex AI This blueprint demonstrates how to create a Vertex AI Workbench on Google Cloud Platform (GCP) with Customer-Managed Encryption Keys (CMEK) using Cloud KMS. diff --git a/blueprints/fedramp-high/vertex-mlops/main.tf b/blueprints/fedramp-high/vertex-mlops/main.tf index d21dfdfc8..11c9875af 100644 --- a/blueprints/fedramp-high/vertex-mlops/main.tf +++ b/blueprints/fedramp-high/vertex-mlops/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { vpc = "projects/${var.network_config.network_project_id}/global/networks/${var.network_config.network_name}" subnet = "projects/${var.network_config.network_project_id}/regions/${var.region}/subnetworks/${var.network_config.subnetwork_name}" diff --git a/blueprints/fedramp-high/vertex-mlops/outputs.tf b/blueprints/fedramp-high/vertex-mlops/outputs.tf index ac4651649..73bfb358a 100644 --- a/blueprints/fedramp-high/vertex-mlops/outputs.tf +++ b/blueprints/fedramp-high/vertex-mlops/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "notebook" { description = "Vertex AI notebook ids." value = merge( diff --git a/blueprints/fedramp-high/vertex-mlops/provider.tf b/blueprints/fedramp-high/vertex-mlops/provider.tf index f6af2f36e..92449b1fd 100644 --- a/blueprints/fedramp-high/vertex-mlops/provider.tf +++ b/blueprints/fedramp-high/vertex-mlops/provider.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - terraform { required_version = ">= 1.7.4" required_providers { diff --git a/blueprints/fedramp-high/vertex-mlops/terraform.tfvars.sample b/blueprints/fedramp-high/vertex-mlops/terraform.tfvars.sample index 265b1e2ad..549b8e6f1 100644 --- a/blueprints/fedramp-high/vertex-mlops/terraform.tfvars.sample +++ b/blueprints/fedramp-high/vertex-mlops/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + project_config = { main_project_id = "xxxx-xxxx-main-0" } diff --git a/blueprints/fedramp-high/vertex-mlops/variables.tf b/blueprints/fedramp-high/vertex-mlops/variables.tf index 1342ae0f2..88e3aef0c 100644 --- a/blueprints/fedramp-high/vertex-mlops/variables.tf +++ b/blueprints/fedramp-high/vertex-mlops/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - variable "bucket_name" { description = "GCS bucket name to store the Vertex AI artifacts." type = string diff --git a/blueprints/fedramp-high/vertex-mlops/vertex.tf b/blueprints/fedramp-high/vertex-mlops/vertex.tf index 2876e3ef0..a12a9650a 100644 --- a/blueprints/fedramp-high/vertex-mlops/vertex.tf +++ b/blueprints/fedramp-high/vertex-mlops/vertex.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - module "service-account-notebook" { source = "../../../modules/iam-service-account" project_id = module.project.project_id diff --git a/blueprints/fedramp-high/workflows/README.md b/blueprints/fedramp-high/workflows/README.md index c9f212a0d..8c6c70799 100644 --- a/blueprints/fedramp-high/workflows/README.md +++ b/blueprints/fedramp-high/workflows/README.md @@ -1,4 +1,18 @@ + - [Introduction to Workflows](#introduction-to-workflows) diff --git a/blueprints/fedramp-high/workflows/code/example.yaml b/blueprints/fedramp-high/workflows/code/example.yaml index d9f6d68a7..dfea5b73f 100644 --- a/blueprints/fedramp-high/workflows/code/example.yaml +++ b/blueprints/fedramp-high/workflows/code/example.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # This is a sample workflow. You can replace it with your source code. # # This workflow does the following: diff --git a/blueprints/fedramp-high/workflows/main.tf b/blueprints/fedramp-high/workflows/main.tf index 898dc8081..1ab723a62 100644 --- a/blueprints/fedramp-high/workflows/main.tf +++ b/blueprints/fedramp-high/workflows/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_project" "current" {} diff --git a/blueprints/fedramp-high/workflows/outputs.tf b/blueprints/fedramp-high/workflows/outputs.tf index e1469f1fe..735877f4c 100644 --- a/blueprints/fedramp-high/workflows/outputs.tf +++ b/blueprints/fedramp-high/workflows/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "service_account" { description = "The workflow service account." diff --git a/blueprints/fedramp-high/workflows/provider.tf b/blueprints/fedramp-high/workflows/provider.tf index b4add3ba5..21e6e5490 100644 --- a/blueprints/fedramp-high/workflows/provider.tf +++ b/blueprints/fedramp-high/workflows/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/fedramp-high/workflows/terraform.tfvars.sample b/blueprints/fedramp-high/workflows/terraform.tfvars.sample index 2c4f65014..3c07bc2a6 100644 --- a/blueprints/fedramp-high/workflows/terraform.tfvars.sample +++ b/blueprints/fedramp-high/workflows/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-iac-core-0" # project where KMS keys reside diff --git a/blueprints/fedramp-high/workflows/variables.tf b/blueprints/fedramp-high/workflows/variables.tf index 111617315..3adce02ee 100644 --- a/blueprints/fedramp-high/workflows/variables.tf +++ b/blueprints/fedramp-high/workflows/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "deletion_protection" { description = "Deletion protection for the workflow." diff --git a/blueprints/il5/README.md b/blueprints/il5/README.md index d02550588..bbfa9a3de 100644 --- a/blueprints/il5/README.md +++ b/blueprints/il5/README.md @@ -1,3 +1,19 @@ + + # Google Cloud service Blueprint projects The directory provide multiple Google Cloud Services that contains all the necessary Terraform modules to build and deploy a GCP service in an IL5 (Impact Level 5) Assured workload enviornment. - Enable Necessary APIs: Depending on the services your project will use (e.g., Compute Engine, Cloud Storage, Cloud SQL), enable the corresponding APIs in the Google Cloud Console. diff --git a/blueprints/il5/artifact-registry/README.md b/blueprints/il5/artifact-registry/README.md index f8ff1f70b..83793b547 100644 --- a/blueprints/il5/artifact-registry/README.md +++ b/blueprints/il5/artifact-registry/README.md @@ -1,3 +1,19 @@ + + # Artifact Registry diff --git a/blueprints/il5/artifact-registry/consumer.tf b/blueprints/il5/artifact-registry/consumer.tf index 02ab3842e..3c13c54b5 100644 --- a/blueprints/il5/artifact-registry/consumer.tf +++ b/blueprints/il5/artifact-registry/consumer.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_service_account" "consumer" { account_id = "compute-service-account" diff --git a/blueprints/il5/artifact-registry/data/docker-registries.yaml b/blueprints/il5/artifact-registry/data/docker-registries.yaml index b607e62a8..d5da07ef8 100644 --- a/blueprints/il5/artifact-registry/data/docker-registries.yaml +++ b/blueprints/il5/artifact-registry/data/docker-registries.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + docker: registry-k8s-io: remote: diff --git a/blueprints/il5/artifact-registry/data/yum-repos.yaml b/blueprints/il5/artifact-registry/data/yum-repos.yaml index 29711a68b..cded62d6b 100644 --- a/blueprints/il5/artifact-registry/data/yum-repos.yaml +++ b/blueprints/il5/artifact-registry/data/yum-repos.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + yum: centos9-stream-baseos: remote: diff --git a/blueprints/il5/artifact-registry/main.tf b/blueprints/il5/artifact-registry/main.tf index 6c74a0355..e653267e8 100644 --- a/blueprints/il5/artifact-registry/main.tf +++ b/blueprints/il5/artifact-registry/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { repositories = merge([ diff --git a/blueprints/il5/artifact-registry/outputs.tf b/blueprints/il5/artifact-registry/outputs.tf index 026171bf8..34429a02c 100644 --- a/blueprints/il5/artifact-registry/outputs.tf +++ b/blueprints/il5/artifact-registry/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "docker_registries" { description = "Docker registries created from the docker-registries.yaml file, with Docker Hub appended." diff --git a/blueprints/il5/artifact-registry/provider.tf b/blueprints/il5/artifact-registry/provider.tf index 1e626cd98..a192ae8e8 100644 --- a/blueprints/il5/artifact-registry/provider.tf +++ b/blueprints/il5/artifact-registry/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/artifact-registry/terraform.tfvars.sample b/blueprints/il5/artifact-registry/terraform.tfvars.sample index ffe08c816..1631d543d 100644 --- a/blueprints/il5/artifact-registry/terraform.tfvars.sample +++ b/blueprints/il5/artifact-registry/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/il5/artifact-registry/variables.tf b/blueprints/il5/artifact-registry/variables.tf index b5e09f67b..e32bf6538 100644 --- a/blueprints/il5/artifact-registry/variables.tf +++ b/blueprints/il5/artifact-registry/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "core_project_id" { description = "Core project ID." diff --git a/blueprints/il5/bastion-pattern/README.md b/blueprints/il5/bastion-pattern/README.md index fbdcbd47b..f9d96da2e 100644 --- a/blueprints/il5/bastion-pattern/README.md +++ b/blueprints/il5/bastion-pattern/README.md @@ -1,3 +1,19 @@ + + ## Bastion Pattern diff --git a/blueprints/il5/bastion-pattern/main.tf b/blueprints/il5/bastion-pattern/main.tf index 1e0dc4c14..ec52dd331 100644 --- a/blueprints/il5/bastion-pattern/main.tf +++ b/blueprints/il5/bastion-pattern/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" {} data "google_compute_network" "network" { diff --git a/blueprints/il5/bastion-pattern/outputs.tf b/blueprints/il5/bastion-pattern/outputs.tf index c92993615..8d7397ab8 100644 --- a/blueprints/il5/bastion-pattern/outputs.tf +++ b/blueprints/il5/bastion-pattern/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "compute_service_account_email" { description = "The email of the compute service account." value = google_service_account.compute.email diff --git a/blueprints/il5/bastion-pattern/provider.tf b/blueprints/il5/bastion-pattern/provider.tf index 946323a13..ee9acfee0 100644 --- a/blueprints/il5/bastion-pattern/provider.tf +++ b/blueprints/il5/bastion-pattern/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/bastion-pattern/terraform.tfvars.sample b/blueprints/il5/bastion-pattern/terraform.tfvars.sample index df63029af..b765b72e3 100644 --- a/blueprints/il5/bastion-pattern/terraform.tfvars.sample +++ b/blueprints/il5/bastion-pattern/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/il5/bastion-pattern/variables.tf b/blueprints/il5/bastion-pattern/variables.tf index f779e0f6f..b2968f261 100644 --- a/blueprints/il5/bastion-pattern/variables.tf +++ b/blueprints/il5/bastion-pattern/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "allowed_firewall_ports" { description = "The allowed ports for the firewall." type = list(string) diff --git a/blueprints/il5/bcap/README.md b/blueprints/il5/bcap/README.md index 4969a7015..c1a23df18 100644 --- a/blueprints/il5/bcap/README.md +++ b/blueprints/il5/bcap/README.md @@ -1,3 +1,19 @@ + + # Boundary Cloud Access Point (BCAP) This Terraform blueprint provisions the necessary Google Cloud infrastructure to establish a highly available connection to a Boundary Cloud Access Point (BCAP) provider, such as DISA, using Google Cloud Partner Interconnect. diff --git a/blueprints/il5/bcap/main.tf b/blueprints/il5/bcap/main.tf index 5a273473a..8e02a0228 100644 --- a/blueprints/il5/bcap/main.tf +++ b/blueprints/il5/bcap/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { router_configs = var.router_configs diff --git a/blueprints/il5/bcap/outputs.tf b/blueprints/il5/bcap/outputs.tf index 79737d431..c884109eb 100644 --- a/blueprints/il5/bcap/outputs.tf +++ b/blueprints/il5/bcap/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "attachment_names" { description = "Names of the created VLAN attachments." diff --git a/blueprints/il5/bcap/provider.tf b/blueprints/il5/bcap/provider.tf index fcea442fe..467e675e2 100644 --- a/blueprints/il5/bcap/provider.tf +++ b/blueprints/il5/bcap/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/bcap/terraform.tfvars.sample b/blueprints/il5/bcap/terraform.tfvars.sample index 56e3e2a56..a9d03a61d 100644 --- a/blueprints/il5/bcap/terraform.tfvars.sample +++ b/blueprints/il5/bcap/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + hub_project_id = "xxxx-net-vdss-host" # VPC Configuration diff --git a/blueprints/il5/bcap/variables.tf b/blueprints/il5/bcap/variables.tf index 78b51bf6e..43258f3aa 100644 --- a/blueprints/il5/bcap/variables.tf +++ b/blueprints/il5/bcap/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "attachment_configs" { description = "Configuration map for the four Partner VLAN attachments required for 99.99% availability. The region for each attachment is derived from its associated `router_key`." diff --git a/blueprints/il5/bigquery/README.md b/blueprints/il5/bigquery/README.md index b61c0e826..3c27b9cbf 100644 --- a/blueprints/il5/bigquery/README.md +++ b/blueprints/il5/bigquery/README.md @@ -1,3 +1,19 @@ + + # Google BigQuery (BigQuery) Project diff --git a/blueprints/il5/bigquery/main.tf b/blueprints/il5/bigquery/main.tf index cbcb4e755..d62df0f29 100644 --- a/blueprints/il5/bigquery/main.tf +++ b/blueprints/il5/bigquery/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_bigquery_default_service_account" "bq_sa" { depends_on = [ google_project_service.bigquery_api diff --git a/blueprints/il5/bigquery/outputs.tf b/blueprints/il5/bigquery/outputs.tf index 19f629254..b9e99feed 100644 --- a/blueprints/il5/bigquery/outputs.tf +++ b/blueprints/il5/bigquery/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "dataset_name" { value = module.bigquery-dataset.id description = "Dataset name." diff --git a/blueprints/il5/bigquery/provider.tf b/blueprints/il5/bigquery/provider.tf index 2511302b6..9fdff5757 100644 --- a/blueprints/il5/bigquery/provider.tf +++ b/blueprints/il5/bigquery/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/bigquery/terraform.tfvars.sample b/blueprints/il5/bigquery/terraform.tfvars.sample index 5b564ce16..a8f0db5a9 100644 --- a/blueprints/il5/bigquery/terraform.tfvars.sample +++ b/blueprints/il5/bigquery/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" diff --git a/blueprints/il5/bigquery/variables.tf b/blueprints/il5/bigquery/variables.tf index 208ac447d..dc73d333c 100644 --- a/blueprints/il5/bigquery/variables.tf +++ b/blueprints/il5/bigquery/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "core_project_id" { description = "Core project ID." type = string diff --git a/blueprints/il5/bq-project/README.md b/blueprints/il5/bq-project/README.md index 3fd064e59..5a7182aaa 100644 --- a/blueprints/il5/bq-project/README.md +++ b/blueprints/il5/bq-project/README.md @@ -1,3 +1,19 @@ + + # Google BigQuery (BigQuery) Project This blueprint contains all the necessary Terraform modules to build and deploy a BigQuery project on Google Cloud. diff --git a/blueprints/il5/bq-project/main.tf b/blueprints/il5/bq-project/main.tf index 2cc567420..003464afb 100644 --- a/blueprints/il5/bq-project/main.tf +++ b/blueprints/il5/bq-project/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_bigquery_default_service_account" "bq_sa" {} module "bigquery-dataset" { diff --git a/blueprints/il5/bq-project/outputs.tf b/blueprints/il5/bq-project/outputs.tf index 02dd0f1e0..29a67f49e 100644 --- a/blueprints/il5/bq-project/outputs.tf +++ b/blueprints/il5/bq-project/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "dataset_name" { value = module.bigquery-dataset.id description = "Dataset name." diff --git a/blueprints/il5/bq-project/provider.tf b/blueprints/il5/bq-project/provider.tf index 2511302b6..9fdff5757 100644 --- a/blueprints/il5/bq-project/provider.tf +++ b/blueprints/il5/bq-project/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/bq-project/terraform.tfvars.sample b/blueprints/il5/bq-project/terraform.tfvars.sample index 91e01e9b0..a3b2e03b3 100644 --- a/blueprints/il5/bq-project/terraform.tfvars.sample +++ b/blueprints/il5/bq-project/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" dataset_id = "dataset-id-00" diff --git a/blueprints/il5/bq-project/variables.tf b/blueprints/il5/bq-project/variables.tf index cd763fee8..c1e9d3716 100644 --- a/blueprints/il5/bq-project/variables.tf +++ b/blueprints/il5/bq-project/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "dataset_description" { description = "Provides a discription of the deployed BigQuery Dataset." type = string diff --git a/blueprints/il5/compute-engine/README.md b/blueprints/il5/compute-engine/README.md index bd093e938..ffbbd9890 100644 --- a/blueprints/il5/compute-engine/README.md +++ b/blueprints/il5/compute-engine/README.md @@ -1,3 +1,19 @@ + + # Google Compute Engine VM with Persistent Disk Project This blueprint contains all the necessary Terraform modules to build and deploy a Compute Engine VM (virtual machines VMs on Google Cloud) attached to a persistent disk having encryption using the Cloud Key Management Service (KMS). @@ -119,4 +135,4 @@ keyrings-keys = { ## Verification of a successful deployment? - Go to the Compute Engine in the GCP Console. Select the VM. Check the Presistent Disk Encryption -![GCP Compute Engine Instance Presistent Disk Encryption](./images/vm-disk-1.png?raw=true "GCP Compute Engine Instance Presistent Disk Encryption") + diff --git a/blueprints/il5/compute-engine/main.tf b/blueprints/il5/compute-engine/main.tf index 170182fa4..202d165f2 100644 --- a/blueprints/il5/compute-engine/main.tf +++ b/blueprints/il5/compute-engine/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/blueprints/il5/compute-engine/outputs.tf b/blueprints/il5/compute-engine/outputs.tf index e29a2fd58..c1c42b799 100644 --- a/blueprints/il5/compute-engine/outputs.tf +++ b/blueprints/il5/compute-engine/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "compute-engine-vm-instance" { description = "Instance resource." sensitive = true diff --git a/blueprints/il5/compute-engine/provider.tf b/blueprints/il5/compute-engine/provider.tf index 2018b3124..d2a2edc3b 100644 --- a/blueprints/il5/compute-engine/provider.tf +++ b/blueprints/il5/compute-engine/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/compute-engine/terraform.tfvars.sample b/blueprints/il5/compute-engine/terraform.tfvars.sample index 7353df8e2..687e9a96c 100644 --- a/blueprints/il5/compute-engine/terraform.tfvars.sample +++ b/blueprints/il5/compute-engine/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/il5/compute-engine/variables.tf b/blueprints/il5/compute-engine/variables.tf index 92f085e21..1fec424ec 100644 --- a/blueprints/il5/compute-engine/variables.tf +++ b/blueprints/il5/compute-engine/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "auto_delete" { description = "Persistent Disk auto delete options." type = bool diff --git a/blueprints/il5/dataflow/README.md b/blueprints/il5/dataflow/README.md index 03301dc6e..f5750db5f 100644 --- a/blueprints/il5/dataflow/README.md +++ b/blueprints/il5/dataflow/README.md @@ -1,3 +1,19 @@ + + Copyright 2023 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/blueprints/il5/dataflow/main.tf b/blueprints/il5/dataflow/main.tf index 41a4e59ea..dc79772c5 100644 --- a/blueprints/il5/dataflow/main.tf +++ b/blueprints/il5/dataflow/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "project" { project_id = var.main_project_id } diff --git a/blueprints/il5/dataflow/outputs.tf b/blueprints/il5/dataflow/outputs.tf index fd7d80828..256cc2ddf 100644 --- a/blueprints/il5/dataflow/outputs.tf +++ b/blueprints/il5/dataflow/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "dataflow-job" { description = "Dataflow job." diff --git a/blueprints/il5/dataflow/provider.tf b/blueprints/il5/dataflow/provider.tf index 01e5d8abe..d2b2eb0c2 100644 --- a/blueprints/il5/dataflow/provider.tf +++ b/blueprints/il5/dataflow/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/dataflow/terraform.tfvars.sample b/blueprints/il5/dataflow/terraform.tfvars.sample index e53b82c89..74655f06f 100644 --- a/blueprints/il5/dataflow/terraform.tfvars.sample +++ b/blueprints/il5/dataflow/terraform.tfvars.sample @@ -1,3 +1,18 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" diff --git a/blueprints/il5/dataflow/variables.tf b/blueprints/il5/dataflow/variables.tf index 513689588..c23e7d05f 100644 --- a/blueprints/il5/dataflow/variables.tf +++ b/blueprints/il5/dataflow/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "allowed_firewall_ports" { description = "The allowed ports for the firewall. Dataflow requires 12345 and 12346." type = list(string) diff --git a/blueprints/il5/gcs-project/README.md b/blueprints/il5/gcs-project/README.md index b07abb126..5662085fe 100644 --- a/blueprints/il5/gcs-project/README.md +++ b/blueprints/il5/gcs-project/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Storage diff --git a/blueprints/il5/gcs-project/main.tf b/blueprints/il5/gcs-project/main.tf index 7ff10ad89..f60874b4a 100644 --- a/blueprints/il5/gcs-project/main.tf +++ b/blueprints/il5/gcs-project/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" { project_id = var.main_project_id } diff --git a/blueprints/il5/gcs-project/outputs.tf b/blueprints/il5/gcs-project/outputs.tf index 36a1e8d75..649cb0684 100644 --- a/blueprints/il5/gcs-project/outputs.tf +++ b/blueprints/il5/gcs-project/outputs.tf @@ -1,14 +1,16 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ diff --git a/blueprints/il5/gcs-project/provider.tf b/blueprints/il5/gcs-project/provider.tf index 5c5403538..24b1030bd 100644 --- a/blueprints/il5/gcs-project/provider.tf +++ b/blueprints/il5/gcs-project/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/gcs-project/terraform.tfvars.sample b/blueprints/il5/gcs-project/terraform.tfvars.sample index 834a8dea8..bb4dc023b 100644 --- a/blueprints/il5/gcs-project/terraform.tfvars.sample +++ b/blueprints/il5/gcs-project/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" diff --git a/blueprints/il5/gcs-project/variables.tf b/blueprints/il5/gcs-project/variables.tf index 681140478..7cdc87b59 100644 --- a/blueprints/il5/gcs-project/variables.tf +++ b/blueprints/il5/gcs-project/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tflint-ignore: terraform_unused_declarations variable "autoclass" { description = "Enable autoclass to automatically transition objects to appropriate storage classes based on their access pattern. If set to true, storage_class must be set to STANDARD. When set to true, All objects added to the bucket begin in Standard storage, even if a different storage class is specified in the request." diff --git a/blueprints/il5/gke-hardened/README.md b/blueprints/il5/gke-hardened/README.md index a836bccbf..b758f61b4 100644 --- a/blueprints/il5/gke-hardened/README.md +++ b/blueprints/il5/gke-hardened/README.md @@ -1,3 +1,19 @@ + + # Google Kubernetes Engine (GKE) Standard Project This blueprint contains all the necessary Terraform modules to build and deploy a Google Kubernetes Engine (GKE), a managed Kubernetes cluster having encryption using the Cloud Key Management Service (KMS). diff --git a/blueprints/il5/gke-hardened/main.tf b/blueprints/il5/gke-hardened/main.tf index 84f78619d..cfed9789e 100644 --- a/blueprints/il5/gke-hardened/main.tf +++ b/blueprints/il5/gke-hardened/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" {} # Only uncomment if no organization policies enforce the below diff --git a/blueprints/il5/gke-hardened/outputs.tf b/blueprints/il5/gke-hardened/outputs.tf index 853840c53..7c8aa5601 100644 --- a/blueprints/il5/gke-hardened/outputs.tf +++ b/blueprints/il5/gke-hardened/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "cluster_master_version" { description = "Master version." diff --git a/blueprints/il5/gke-hardened/provider.tf b/blueprints/il5/gke-hardened/provider.tf index 45d4ac5b9..c77df7c3b 100644 --- a/blueprints/il5/gke-hardened/provider.tf +++ b/blueprints/il5/gke-hardened/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/gke-hardened/terraform.tfvars.sample b/blueprints/il5/gke-hardened/terraform.tfvars.sample index 283a274dc..1f016a60b 100644 --- a/blueprints/il5/gke-hardened/terraform.tfvars.sample +++ b/blueprints/il5/gke-hardened/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + gatekeeper_sa = "gatekeeper-XXX-XXX-sa" gke_cluster_enable_private_endpoint = true gke_cluster_master_global_access = true @@ -51,7 +67,7 @@ remove_default_node_pool = true source_branch = "gitops-constraints" source_dir = "policies" -source_repo = "https://github.com/DarkWolf-Labs/stellar-engine-gke-policies" +source_repo = "https://github.com/enterprise-Labs/stellar-engine-gke-policies" subnetwork_name = "il5ssaa-int-dwsssa-subnet" subnetwork_ip_cidr_range_1 = "10.0.4.0/22" diff --git a/blueprints/il5/gke-hardened/variables.tf b/blueprints/il5/gke-hardened/variables.tf index 0feaf5876..4b423c60f 100644 --- a/blueprints/il5/gke-hardened/variables.tf +++ b/blueprints/il5/gke-hardened/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "gatekeeper_sa" { description = "The service account Gatekeeper uses to push metrics to GCP." diff --git a/blueprints/il5/gke/README.md b/blueprints/il5/gke/README.md index 6a886dd4a..f7d565cfa 100644 --- a/blueprints/il5/gke/README.md +++ b/blueprints/il5/gke/README.md @@ -1,3 +1,19 @@ + + # GKE Cluster with Shared VPC and KMS Blueprint - [Purpose](#purpose) diff --git a/blueprints/il5/gke/main.tf b/blueprints/il5/gke/main.tf index 04378f7f1..e49eb7406 100644 --- a/blueprints/il5/gke/main.tf +++ b/blueprints/il5/gke/main.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # --- General Configuration --- # A 30-second delay to ensure IAM permissions fully propagate before dependent diff --git a/blueprints/il5/gke/outputs.tf b/blueprints/il5/gke/outputs.tf index 3d3e6fd6c..57ac6265b 100644 --- a/blueprints/il5/gke/outputs.tf +++ b/blueprints/il5/gke/outputs.tf @@ -1,11 +1,11 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "gke_cluster_endpoint" { description = "The endpoint of the GKE cluster." value = module.cluster.endpoint diff --git a/blueprints/il5/gke/provider.tf b/blueprints/il5/gke/provider.tf index babf7046f..0402bbef0 100644 --- a/blueprints/il5/gke/provider.tf +++ b/blueprints/il5/gke/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_providers { diff --git a/blueprints/il5/gke/terraform.tfvars.sample b/blueprints/il5/gke/terraform.tfvars.sample index 4b0026782..5fc59c1bf 100644 --- a/blueprints/il5/gke/terraform.tfvars.sample +++ b/blueprints/il5/gke/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + # ----------------------------------------------------------------------------- # PROJECT CONFIGURATION # ----------------------------------------------------------------------------- diff --git a/blueprints/il5/gke/variables.tf b/blueprints/il5/gke/variables.tf index 2b9679ea9..81d0abfb9 100644 --- a/blueprints/il5/gke/variables.tf +++ b/blueprints/il5/gke/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # --- Project Configuration --- variable "main_project_id" { diff --git a/blueprints/il5/kms-project/README.md b/blueprints/il5/kms-project/README.md index 7ebf1c8bb..6502e694d 100644 --- a/blueprints/il5/kms-project/README.md +++ b/blueprints/il5/kms-project/README.md @@ -1,3 +1,19 @@ + + # Cloud KMS Project Blueprint This blueprint demonstrates how to manage existing Google Cloud Key Management Service (Cloud KMS) KeyRings and CryptoKeys, applying IAM policies and potentially other configurations (like rotation policies) to them within a multi-project GCP environment. It assumes KMS infrastructure is created by a foundational layer. diff --git a/blueprints/il5/kms-project/main.tf b/blueprints/il5/kms-project/main.tf index 8be19d27e..651eac353 100644 --- a/blueprints/il5/kms-project/main.tf +++ b/blueprints/il5/kms-project/main.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" { project_id = var.main_project_id } diff --git a/blueprints/il5/kms-project/outputs.tf b/blueprints/il5/kms-project/outputs.tf index 5991dfa5f..5411a872f 100644 --- a/blueprints/il5/kms-project/outputs.tf +++ b/blueprints/il5/kms-project/outputs.tf @@ -1,11 +1,11 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "managed_keyring_id" { description = "The fully qualified ID of the existing KMS KeyRing being managed by this blueprint." value = data.google_kms_key_ring.existing_keyring.id diff --git a/blueprints/il5/kms-project/provider.tf b/blueprints/il5/kms-project/provider.tf index 7daf224f1..52d784dd3 100644 --- a/blueprints/il5/kms-project/provider.tf +++ b/blueprints/il5/kms-project/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/kms-project/terraform.tfvars.sample b/blueprints/il5/kms-project/terraform.tfvars.sample index 19002b896..3724b682d 100644 --- a/blueprints/il5/kms-project/terraform.tfvars.sample +++ b/blueprints/il5/kms-project/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" # The project where IAM policies will be managed (should be the project where KMS keys reside) gcp_region = "us-east4" # The region where the existing KMS KeyRing is located diff --git a/blueprints/il5/kms-project/variables.tf b/blueprints/il5/kms-project/variables.tf index a2f089d11..70e0c73be 100644 --- a/blueprints/il5/kms-project/variables.tf +++ b/blueprints/il5/kms-project/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "main_project_id" { description = "The Google Cloud Project ID where KMS-related IAM policies will be managed (i.e., the project where the existing KMS keys reside)." diff --git a/blueprints/il5/postgresql/README.md b/blueprints/il5/postgresql/README.md index 0a40159ee..cbe1ee9e4 100644 --- a/blueprints/il5/postgresql/README.md +++ b/blueprints/il5/postgresql/README.md @@ -1,3 +1,19 @@ + + Copyright 2023 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); diff --git a/blueprints/il5/postgresql/main.tf b/blueprints/il5/postgresql/main.tf index 2615710d2..cfdc0e082 100644 --- a/blueprints/il5/postgresql/main.tf +++ b/blueprints/il5/postgresql/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" {} data "google_compute_network" "network" { diff --git a/blueprints/il5/postgresql/outputs.tf b/blueprints/il5/postgresql/outputs.tf index 97c261a45..31ddc470d 100644 --- a/blueprints/il5/postgresql/outputs.tf +++ b/blueprints/il5/postgresql/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "connection_internal_ip" { value = module.postgres.ip description = "Conntection internal IP address." diff --git a/blueprints/il5/postgresql/provider.tf b/blueprints/il5/postgresql/provider.tf index 45d4ac5b9..c77df7c3b 100644 --- a/blueprints/il5/postgresql/provider.tf +++ b/blueprints/il5/postgresql/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/postgresql/terraform.tfvars.sample b/blueprints/il5/postgresql/terraform.tfvars.sample index e1ef8c720..a7d64d2d1 100644 --- a/blueprints/il5/postgresql/terraform.tfvars.sample +++ b/blueprints/il5/postgresql/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" network_project_id = "xxxx-xxxx-net-host" diff --git a/blueprints/il5/postgresql/variables.tf b/blueprints/il5/postgresql/variables.tf index 5a6b2a9ab..ff43efaa8 100644 --- a/blueprints/il5/postgresql/variables.tf +++ b/blueprints/il5/postgresql/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "allowed_firewall_ports" { description = "Allowed firewall ports. Postgresql used 5432." type = list(number) diff --git a/blueprints/il5/private-service-connect/README.md b/blueprints/il5/private-service-connect/README.md index 337f490f9..a98305dc9 100644 --- a/blueprints/il5/private-service-connect/README.md +++ b/blueprints/il5/private-service-connect/README.md @@ -1,3 +1,19 @@ + + # PSC Blueprint This blueprint demonstrates how to deploy a Private Service Connection on Google Cloud Platform (GCP). It provides a secure and flexible solution for consumers to access managed services. diff --git a/blueprints/il5/private-service-connect/main.tf b/blueprints/il5/private-service-connect/main.tf index d4b251e4c..049e16701 100644 --- a/blueprints/il5/private-service-connect/main.tf +++ b/blueprints/il5/private-service-connect/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module "psc" { source = "../../../modules/private-service-connect" diff --git a/blueprints/il5/private-service-connect/outputs.tf b/blueprints/il5/private-service-connect/outputs.tf index 6a9a0fb90..8abc4fa99 100644 --- a/blueprints/il5/private-service-connect/outputs.tf +++ b/blueprints/il5/private-service-connect/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "dns_zone_gcr_name" { value = module.psc.dns_zone_gcr_name diff --git a/blueprints/il5/private-service-connect/provider.tf b/blueprints/il5/private-service-connect/provider.tf index d4b6cc156..3adf5588b 100644 --- a/blueprints/il5/private-service-connect/provider.tf +++ b/blueprints/il5/private-service-connect/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/private-service-connect/terraform.tfvars.sample b/blueprints/il5/private-service-connect/terraform.tfvars.sample index dfeb963d7..26510b453 100644 --- a/blueprints/il5/private-service-connect/terraform.tfvars.sample +++ b/blueprints/il5/private-service-connect/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-xxxx-main-0" region = "us-east4" network_name = "projects//global/networks/" \ No newline at end of file diff --git a/blueprints/il5/private-service-connect/variables.tf b/blueprints/il5/private-service-connect/variables.tf index 522ef5113..0c2138138 100644 --- a/blueprints/il5/private-service-connect/variables.tf +++ b/blueprints/il5/private-service-connect/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "address" { description = "The IP address of the private service connection." diff --git a/blueprints/il5/pub-sub-project/README.md b/blueprints/il5/pub-sub-project/README.md index e4fd48c31..c0bd4f9e9 100644 --- a/blueprints/il5/pub-sub-project/README.md +++ b/blueprints/il5/pub-sub-project/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Pub/Sub Project Blueprint This blueprint creates a Google Cloud Pub/Sub topic and associated service accounts, configured for Customer-Managed Encryption Keys (CMEK) from an existing KMS key, and supports various subscription types. diff --git a/blueprints/il5/pub-sub-project/main.tf b/blueprints/il5/pub-sub-project/main.tf index 5267e8229..eacfdabdc 100644 --- a/blueprints/il5/pub-sub-project/main.tf +++ b/blueprints/il5/pub-sub-project/main.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" {} # Explicitly enable the Pub/Sub API diff --git a/blueprints/il5/pub-sub-project/outputs.tf b/blueprints/il5/pub-sub-project/outputs.tf index d28e2fbd0..a6dfe8db2 100644 --- a/blueprints/il5/pub-sub-project/outputs.tf +++ b/blueprints/il5/pub-sub-project/outputs.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "pubsub_topic_name" { description = "The name of the created Pub/Sub topic." value = module.pubsub.name diff --git a/blueprints/il5/pub-sub-project/provider.tf b/blueprints/il5/pub-sub-project/provider.tf index 7daf224f1..52d784dd3 100644 --- a/blueprints/il5/pub-sub-project/provider.tf +++ b/blueprints/il5/pub-sub-project/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/pub-sub-project/terraform.tfvars.sample b/blueprints/il5/pub-sub-project/terraform.tfvars.sample index 41ffec6d5..f323b9f70 100644 --- a/blueprints/il5/pub-sub-project/terraform.tfvars.sample +++ b/blueprints/il5/pub-sub-project/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" # The Google Cloud Project ID where the Pub/Sub topic and associated service accounts will be created. core_project_id = "xxxx-xxxx-iac-core-0" # The Google Cloud Project ID where the existing KMS KeyRing and CryptoKeys are provisioned. diff --git a/blueprints/il5/pub-sub-project/variables.tf b/blueprints/il5/pub-sub-project/variables.tf index ffe24c689..942aa55c7 100644 --- a/blueprints/il5/pub-sub-project/variables.tf +++ b/blueprints/il5/pub-sub-project/variables.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "allowed_persistence_regions" { description = "A list of Google Cloud regions where messages are allowed to be stored. If empty, the topic will use the default global storage policy." type = list(string) diff --git a/blueprints/il5/shielded-vm-project/README.md b/blueprints/il5/shielded-vm-project/README.md index 3459f58aa..aef62ab5c 100644 --- a/blueprints/il5/shielded-vm-project/README.md +++ b/blueprints/il5/shielded-vm-project/README.md @@ -1,3 +1,19 @@ + + # Google Compute Shielded VM diff --git a/blueprints/il5/shielded-vm-project/main.tf b/blueprints/il5/shielded-vm-project/main.tf index 80887e5ca..243130779 100644 --- a/blueprints/il5/shielded-vm-project/main.tf +++ b/blueprints/il5/shielded-vm-project/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "current" { project_id = var.main_project_id } diff --git a/blueprints/il5/shielded-vm-project/outputs.tf b/blueprints/il5/shielded-vm-project/outputs.tf index 79347380f..8d05d43cb 100644 --- a/blueprints/il5/shielded-vm-project/outputs.tf +++ b/blueprints/il5/shielded-vm-project/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "shielded-vm-instance" { description = "Instance resource." sensitive = true diff --git a/blueprints/il5/shielded-vm-project/provider.tf b/blueprints/il5/shielded-vm-project/provider.tf index 5c5403538..24b1030bd 100644 --- a/blueprints/il5/shielded-vm-project/provider.tf +++ b/blueprints/il5/shielded-vm-project/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/il5/shielded-vm-project/terraform.tfvars.sample b/blueprints/il5/shielded-vm-project/terraform.tfvars.sample index a743c9e69..8a9b0bdb5 100644 --- a/blueprints/il5/shielded-vm-project/terraform.tfvars.sample +++ b/blueprints/il5/shielded-vm-project/terraform.tfvars.sample @@ -1,3 +1,18 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ main_project_id = "xxxx-xxxx-xxxx-main-0" core_project_id = "xxxx-xxxx-xxxx-iac-core-0" diff --git a/blueprints/il5/shielded-vm-project/variables.tf b/blueprints/il5/shielded-vm-project/variables.tf index efe072710..bcf67f223 100644 --- a/blueprints/il5/shielded-vm-project/variables.tf +++ b/blueprints/il5/shielded-vm-project/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "allowed_firewall_ports" { description = "The list of the Allowed Ports." type = list(any) diff --git a/blueprints/stand-alone/vpc-peering-project/README.md b/blueprints/stand-alone/vpc-peering-project/README.md index 9cb00a33b..ea89342da 100644 --- a/blueprints/stand-alone/vpc-peering-project/README.md +++ b/blueprints/stand-alone/vpc-peering-project/README.md @@ -1,3 +1,19 @@ + + # VPC Peering Project Blueprint This blueprint provides a self-contained solution for creating two new Google Cloud VPC networks and establishing a peering connection between them. It is intended for customers who want to develop their own network infrastructure without the full Stellar Engine deployment. diff --git a/blueprints/stand-alone/vpc-peering-project/main.tf b/blueprints/stand-alone/vpc-peering-project/main.tf index d114d6c87..64bb2321d 100644 --- a/blueprints/stand-alone/vpc-peering-project/main.tf +++ b/blueprints/stand-alone/vpc-peering-project/main.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # Define the configurations for both VPCs in a map for use with for_each vpc_configs = { diff --git a/blueprints/stand-alone/vpc-peering-project/outputs.tf b/blueprints/stand-alone/vpc-peering-project/outputs.tf index 003f5fce0..dfb4b521e 100644 --- a/blueprints/stand-alone/vpc-peering-project/outputs.tf +++ b/blueprints/stand-alone/vpc-peering-project/outputs.tf @@ -1,11 +1,11 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # --- Peering Connection Outputs --- output "local_network_peering" { description = "The peering resource for the local VPC side of the connection." diff --git a/blueprints/stand-alone/vpc-peering-project/provider.tf b/blueprints/stand-alone/vpc-peering-project/provider.tf index efc88ffd9..6fe72df9c 100644 --- a/blueprints/stand-alone/vpc-peering-project/provider.tf +++ b/blueprints/stand-alone/vpc-peering-project/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/blueprints/stand-alone/vpc-peering-project/terraform.tfvars.sample b/blueprints/stand-alone/vpc-peering-project/terraform.tfvars.sample index adf7aba63..687aa0393 100644 --- a/blueprints/stand-alone/vpc-peering-project/terraform.tfvars.sample +++ b/blueprints/stand-alone/vpc-peering-project/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + main_project_id = "xxxx-xxxx-main-0" # Project ID where the peering resource will be created (can be local or peer VPC project) gcp_region = "us-east4" # Google Cloud region for both VPCs diff --git a/blueprints/stand-alone/vpc-peering-project/variables.tf b/blueprints/stand-alone/vpc-peering-project/variables.tf index c9b6367d9..ab7d328f1 100644 --- a/blueprints/stand-alone/vpc-peering-project/variables.tf +++ b/blueprints/stand-alone/vpc-peering-project/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "main_project_id" { description = "The Google Cloud Project ID where the peering connection will be managed (should be one of the VPC projects)." diff --git a/blueprints/third-party-solutions/gitlab/README.md b/blueprints/third-party-solutions/gitlab/README.md index f0bebdfb8..fdb8f5219 100644 --- a/blueprints/third-party-solutions/gitlab/README.md +++ b/blueprints/third-party-solutions/gitlab/README.md @@ -1,3 +1,19 @@ + + # Gitlab Blueprint This blueprint is responsible for provisioning a production ready Gitlab Community Edition instance on the landing zone infrastructure. The [reference architecture](https://docs.gitlab.com/ee/administration/reference_architectures/1k_users.html) of this deployment target 1K users, updates to the current code is required in of HA and/or higher capacity requirements. @@ -242,7 +258,7 @@ following [link](https://docs.gitlab.com/omnibus/settings/ssl/#configure-https-m If you want to deploy from your Cloud Shell, click on the image below, sign in if required and when the prompt appears, click on “confirm”. -[![Open Cloudshell](../../../assets/images/cloud-shell-button.png)](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fcloud-foundation-fabric&cloudshell_workspace=blueprints%2Fthird-party-solutions%2Fwordpress%2Fcloudrun) +[**[Open in Cloud Shell]**](https://shell.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2FGoogleCloudPlatform%2Fcloud-foundation-fabric&cloudshell_workspace=blueprints%2Fthird-party-solutions%2Fwordpress%2Fcloudrun) Otherwise, in your console of choice: diff --git a/blueprints/third-party-solutions/gitlab/TODO.md b/blueprints/third-party-solutions/gitlab/TODO.md index e6eae43ec..795b08c26 100644 --- a/blueprints/third-party-solutions/gitlab/TODO.md +++ b/blueprints/third-party-solutions/gitlab/TODO.md @@ -1,3 +1,19 @@ + + # Gitlab TODOs - Integrations diff --git a/blueprints/third-party-solutions/gitlab/assets/cloud-config.yaml b/blueprints/third-party-solutions/gitlab/assets/cloud-config.yaml index cfce725eb..95b4ee0a3 100644 --- a/blueprints/third-party-solutions/gitlab/assets/cloud-config.yaml +++ b/blueprints/third-party-solutions/gitlab/assets/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # https://hub.docker.com/r/nginx/nginx/ # https://nginx.io/manual/toc/#installation diff --git a/blueprints/third-party-solutions/gitlab/gitlab.tf b/blueprints/third-party-solutions/gitlab/gitlab.tf index b21aeb8eb..9ec6b3079 100644 --- a/blueprints/third-party-solutions/gitlab/gitlab.tf +++ b/blueprints/third-party-solutions/gitlab/gitlab.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { gitlab_rb = templatefile("${path.module}/assets/config.rb.tpl", { project_id = module.project.project_id diff --git a/blueprints/third-party-solutions/gitlab/main.tf b/blueprints/third-party-solutions/gitlab/main.tf index 054ea8fcf..5348d9cee 100644 --- a/blueprints/third-party-solutions/gitlab/main.tf +++ b/blueprints/third-party-solutions/gitlab/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - module "project" { source = "../../../modules/project" parent = try(var.project_create.parent, null) diff --git a/blueprints/third-party-solutions/gitlab/outputs.tf b/blueprints/third-party-solutions/gitlab/outputs.tf index e578f0fc3..44f9cb4f5 100644 --- a/blueprints/third-party-solutions/gitlab/outputs.tf +++ b/blueprints/third-party-solutions/gitlab/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { ssl_certs = { "${var.gitlab_config.hostname}.crt" = local.gitlab_ssl_crt diff --git a/blueprints/third-party-solutions/gitlab/services.tf b/blueprints/third-party-solutions/gitlab/services.tf index 54b09eb37..36d2a0418 100644 --- a/blueprints/third-party-solutions/gitlab/services.tf +++ b/blueprints/third-party-solutions/gitlab/services.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - locals { gitlab_buckets = [ "gitlab-artifacts", "gitlab-mr-diffs", "gitlab-lfs", "gitlab-uploads", diff --git a/blueprints/third-party-solutions/gitlab/ssl.tf b/blueprints/third-party-solutions/gitlab/ssl.tf index a1ae9a6cd..c53ee3fbc 100644 --- a/blueprints/third-party-solutions/gitlab/ssl.tf +++ b/blueprints/third-party-solutions/gitlab/ssl.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cert_subjects = [ { diff --git a/blueprints/third-party-solutions/gitlab/terraform.tfvars.sample b/blueprints/third-party-solutions/gitlab/terraform.tfvars.sample index e76642af4..b8b6b5532 100644 --- a/blueprints/third-party-solutions/gitlab/terraform.tfvars.sample +++ b/blueprints/third-party-solutions/gitlab/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + gitlab_config = { hostname = "gitlab.gcp.example.com" mail = { diff --git a/blueprints/third-party-solutions/gitlab/variables.tf b/blueprints/third-party-solutions/gitlab/variables.tf index 7d6d24455..220178b72 100644 --- a/blueprints/third-party-solutions/gitlab/variables.tf +++ b/blueprints/third-party-solutions/gitlab/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "admin_principals" { description = "Users, groups and/or service accounts that are assigned roles, in IAM format (`group:foo@example.com`)." type = list(string) diff --git a/default-versions.tf b/default-versions.tf index 3d6a43260..f4fe2dc01 100644 --- a/default-versions.tf +++ b/default-versions.tf @@ -1,16 +1,18 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index b16bd9442..98acf7207 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -1,3 +1,19 @@ + + # How to contribute We'd love to accept your patches and contributions to this project. diff --git a/docs/code-of-conduct.md b/docs/code-of-conduct.md index a85d5a02a..41165c907 100644 --- a/docs/code-of-conduct.md +++ b/docs/code-of-conduct.md @@ -1,3 +1,19 @@ + + # Code of Conduct ## Our Pledge diff --git a/docs/ddg.md b/docs/ddg.md index 9bd794692..2f2b7cc81 100644 --- a/docs/ddg.md +++ b/docs/ddg.md @@ -1,3 +1,19 @@ + + # **Stellar Engine** Cloud Foundation Fabric Detailed Deployment Guide @@ -42,7 +58,7 @@ it easy to copy and paste. The deployment process is broken up into stages. During each stage, certain variables are required to be added to the **`terraform.tfvars`** file. Upon completion of a stage, the Terraform code will write out a **```-tfvar.auto.tfvars.json`** file to the Google Cloud Storage -(GCS) bucket created in the initial **0-bootstrap stage**. Subsequent stages +(GCS) bucket created in the initial **0-organization-bootstrap stage**. Subsequent stages will use the **gcloud** command line interface (CLI) to copy the files into the new stage folder, as well as a provider file that impersonates a stage-specific service account. @@ -61,7 +77,7 @@ takes approximately 1 hour. To make using this deployment guide easier, the variables described below need to be populated into specific `terraform.tfvars` files in the repository. -**Most of these variables are configured in the Stage 0 Bootstrap `terraform.tfvars` file (a sample can be found at [`fast/stages-aw/0-bootstrap/terraform.tfvars.sample`](../fast/stages-aw/0-bootstrap/terraform.tfvars.sample)), except for the Tenant names, which are configured in Stage 1 (a sample can be found at [`fast/stages-aw/1-resman/terraform.tfvars.sample`](../fast/stages-aw/1-resman/terraform.tfvars.sample)).** +**Most of these variables are configured in the Stage 0 Bootstrap `terraform.tfvars` file (a sample can be found at [`fast/stages-aw/0-organization-bootstrap/terraform.tfvars.sample`](../fast/stages-aw/0-organization-bootstrap/terraform.tfvars.sample)), except for the Tenant names, which are configured in Stage 1 (a sample can be found at [`fast/stages-aw/2-resman/terraform.tfvars.sample`](../fast/stages-aw/2-resman/terraform.tfvars.sample)).** | VARIABLE | TFVARS LOCATION | DESCRIPTION | | :------------------------------------ | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -134,7 +150,7 @@ permissions.** automated by running the following script: - **Warning: You will lose all current permissions for your user besides Super User** - - **./setIam.sh \ ``** from within the fast/stages-aw/0-bootstrap folder + - **./setIam.sh \ ``** from within the fast/stages-aw/0-organization-bootstrap folder - Navigate to the [Super Admin](https://admin.google.com/ac/roles) roles section in Google Workspace to ensure that the deploying user is a Super @@ -158,7 +174,7 @@ permissions.** - gcp-security-admins@`` - We need to enable these Google Cloud Services by running the following script: - - fast/stages-aw/0-bootstrap/enableServices.sh + - fast/stages-aw/0-organization-bootstrap/enableServices.sh - If you run into issues with the above command, you can simply run the following deprecated command (on MacOS, works on other *nix variants) - `echo "iam cloudkms pubsub serviceusage cloudresourcemanager bigquery assuredworkloads cloudbilling logging iamcredentials orgpolicy" | xargs -n1 -I {} gcloud services enable "{}.googleapis.com”` - [Enable Access @@ -186,15 +202,15 @@ state. - Enable [billing](https://console.cloud.google.com/billing/projects) for your bootstrap project if it is not enabled -- Change directory into **fast/stages-aw/0-bootstrap** +- Change directory into **fast/stages-aw/0-organization-bootstrap** - Copy file **terraform.tfvars.sample** to **terraform.tfvars** - `cp terraform.tfvars.sample terraform.tfvars` -- Copy file **providers.tf.tmp** to **0-bootstrap-providers.tf** - - `cp providers.tf.tmp 0-bootstrap-providers.tf` +- Copy file **providers.tf.tmp** to **0-organization-bootstrap-providers.tf** + - `cp providers.tf.tmp 0-organization-bootstrap-providers.tf` - Update information in **terraform.tfvars** as follows below, the variables from the above sections are already included -**`fast/stages-aw/0-bootstrap/terraform.tfvars`** +**`fast/stages-aw/0-organization-bootstrap/terraform.tfvars`** ```hcl # use `gcloud beta billing accounts list` @@ -256,7 +272,7 @@ alert_email = "``" - Export the prefix as an environment variable to simplify subsequent commands: - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' terraform.tfvars)` - **Note:** If you open a new terminal or change directories during the deployment, you can re-run this command from the repository root to restore the variable: - - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-bootstrap/terraform.tfvars)` + - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-organization-bootstrap/terraform.tfvars)` - Run `terraform init` - Run `terraform apply -var bootstrap_user=$(gcloud config list --format 'value(core.account)')` - Type `yes` when prompted @@ -278,7 +294,7 @@ alert_email = "``" - Switch project to your new project - `gcloud config set project ${FAST_PREFIX}-prod-iac-core-0` - Copy the new providers local - - `gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/0-bootstrap-providers.tf ./` + - `gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/0-organization-bootstrap-providers.tf ./` - Migrate the state from local to remote using - `terraform init --migrate-state` - Type `yes` when prompted @@ -294,20 +310,20 @@ alert_email = "``" In this stage, we begin to build out the different folders, projects, and service accounts that will be used at the organization level for subsequent stages. In order to build out the environment, you will have to update the -**terraform.tfvars** file in **fast/stages-aw/1-resman** to include a tenants +**terraform.tfvars** file in **fast/stages-aw/2-resman** to include a tenants variable as seen below. ### Steps - **Note:** If you are using an environment variable for the prefix, make sure it is set: - - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-bootstrap/terraform.tfvars)` + - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-organization-bootstrap/terraform.tfvars)` - **Note:** If you are using an external billing account, you have to add the Billing Account Administrator for the following service account to the external billing account: - **``-prod-resman-0@``-prod-iac-core-0.iam.gserviceaccount.com** - **Note:** If you are using an external billing account where the resman service account cannot be granted billing permissions, you can use a **billing override** to run the project creation/billing links under your personal credentials. -To do this, define the `billing_override` variable in your **fast/stages-aw/1-resman/terraform.tfvars**: +To do this, define the `billing_override` variable in your **fast/stages-aw/2-resman/terraform.tfvars**: ```hcl billing_override = { @@ -330,13 +346,13 @@ To do this, define the `billing_override` variable in your **fast/stages-aw/1-re - Select a permission for the principal(s) from Select a role as “Billing Account Administrator”. - When done, click Save. -- Change directory into **fast/stages-aw/1-resman** +- Change directory into **fast/stages-aw/2-resman** - Copy file **terraform.tfvars.sample** to **terraform.tfvars** - `cp terraform.tfvars.sample terraform.tfvars` - Update information in **terraform.tfvars** as follows - Note: Change “tenant_name(s)” below -**`fast/stages-aw/1-resman/terraform.tfvars`** +**`fast/stages-aw/2-resman/terraform.tfvars`** ```hcl tenants = { @@ -376,9 +392,9 @@ envs_folders = { - Copy the tfvars files from GCS ``` -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/1-resman-providers.tf ./ && +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/2-resman-providers.tf ./ && gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-organization-bootstrap.auto.tfvars.json ./ ``` - Run `terraform init` - Run `terraform apply` @@ -391,14 +407,14 @@ gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-bootstrap ### Steps - **Note:** If you are using an environment variable for the prefix, make sure it is set: - - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-bootstrap/terraform.tfvars)` + - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-organization-bootstrap/terraform.tfvars)` - **Note:** If you are using an external billing account, you have to add the Billing Account Administrator for the following service account to the external billing account: - **``-prod-resman-net-0@``-prod-iac-core-0.iam.gserviceaccount.com** - **Note:** If you are using an external billing account where the networking service account cannot be granted billing permissions, you can use a **billing override** to run the project creation/billing links under your personal credentials. -To do this, define the `billing_override` variable in **fast/stages-aw/1-resman/terraform.tfvars** file +To do this, define the `billing_override` variable in **fast/stages-aw/2-resman/terraform.tfvars** file ```hcl billing_override = { @@ -426,8 +442,8 @@ To do this, define the `billing_override` variable in **fast/stages-aw/1-resman/ ```bash gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/2-networking-providers.tf ./ && \ gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && \ -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && \ -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./ +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-organization-bootstrap.auto.tfvars.json ./ && \ +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/2-resman.auto.tfvars.json ./ ``` - Copy the sample `terraform.tfvars` file and configure your network settings: - `cp terraform.tfvars.sample terraform.tfvars` @@ -449,14 +465,14 @@ a VM code and register them. For more instructions, see the README in the the ### Steps - **Note:** If you are using an environment variable for the prefix, make sure it is set: - - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-bootstrap/terraform.tfvars)` + - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-organization-bootstrap/terraform.tfvars)` - **Note:** If you are using an external billing account, you have to add the Billing Account Administrator for the following service account to the external billing account: - **``-prod-resman-net-0@``-prod-iac-core-0.iam.gserviceaccount.com** - **Note:** If you are using an external billing account where the networking service account cannot be granted billing permissions, you can use a **billing override** to run the project creation/billing links under your personal credentials. -To do this, define the `billing_override` variable in **fast/stages-aw/1-resman/terraform.tfvars** file +To do this, define the `billing_override` variable in **fast/stages-aw/2-resman/terraform.tfvars** file ```hcl billing_override = { @@ -484,8 +500,8 @@ To do this, define the `billing_override` variable in **fast/stages-aw/1-resman/ ```bash gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/2-networking-providers.tf ./ && \ gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && \ -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && \ -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./ +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-organization-bootstrap.auto.tfvars.json ./ && \ +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/2-resman.auto.tfvars.json ./ ``` - Copy the sample `terraform.tfvars` file and configure your network settings: - `cp terraform.tfvars.sample terraform.tfvars` @@ -539,14 +555,14 @@ are responsible for the audit project. ### Steps - **Note:** If you are using an environment variable for the prefix, make sure it is set: - - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-bootstrap/terraform.tfvars)` + - `export FAST_PREFIX=$(sed -n 's/^[[:space:]]*prefix[[:space:]]*=[[:space:]]*"\(.*\)"/\1/p' $(git rev-parse --show-toplevel)/fast/stages-aw/0-organization-bootstrap/terraform.tfvars)` - **Note:** If you are using an external billing account, you have to add the Billing Account Administrator for the following service account to the external billing account:** - ``-security-0@``-prod-iac-core-0.iam.gserviceaccount.com - **Note:** If you are using an external billing account where the networking service account cannot be granted billing permissions, you can use a **billing override** to run the project creation/billing links under your personal credentials. -To do this, define the `billing_override` variable in **fast/stages-aw/1-resman/terraform.tfvars** file +To do this, define the `billing_override` variable in **fast/stages-aw/2-resman/terraform.tfvars** file ```hcl billing_override = { @@ -574,8 +590,8 @@ To do this, define the `billing_override` variable in **fast/stages-aw/1-resman/ ``` gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/providers/3-security-providers.tf ./ && gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && -gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./ +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/0-organization-bootstrap.auto.tfvars.json ./ && +gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/2-resman.auto.tfvars.json ./ ``` - Run `terraform init` - Run `terraform apply` @@ -622,8 +638,8 @@ Perform the following steps when adding or removing tenants projects for an exis - Change directory into fast/stages-aw/3-security - `./sa_lockdown.sh --enable` -#### Apply FAST Stage: 01-resman -- Change directory into fast/stages-aw/1-resman +#### Apply FAST Stage: 02-resman +- Change directory into fast/stages-aw/2-resman - Update information in terraform.tfvars to your new requirements - Run terraform init - Run terraform apply @@ -633,8 +649,8 @@ Perform the following steps when adding or removing tenants projects for an exis - Change directory into appropriate network folder for your Stellar Engine deployment: - fast/stages-aw/2-networking-a-fedramp-high - fast/stages-aw/2-networking-b-il5-ngfw -- Copy the 1-resman 1-resman tfvars file from the GCS bucket - - `gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./` +- Copy the 2-resman 2-resman tfvars file from the GCS bucket + - `gcloud storage cp gs://${FAST_PREFIX}-prod-iac-core-outputs-0/tfvars/2-resman.auto.tfvars.json ./` - Run terraform init - Run terraform apply - Type yes when prompted diff --git a/docs/path-to-authorization.md b/docs/path-to-authorization.md index 7d4e39853..65364fe83 100644 --- a/docs/path-to-authorization.md +++ b/docs/path-to-authorization.md @@ -1,3 +1,19 @@ + + # Path to Authorization _Impact Level 5 (H-H-X) & FedRAMP High_ diff --git a/docs/runbooks/compromised-iam-credentials.md b/docs/runbooks/compromised-iam-credentials.md index 4f725d5d0..922feaa78 100644 --- a/docs/runbooks/compromised-iam-credentials.md +++ b/docs/runbooks/compromised-iam-credentials.md @@ -1,3 +1,19 @@ + + # Incident Response Runbook: Compromised IAM Credentials ## Document Control diff --git a/docs/runbooks/compute-resource-compromise.md b/docs/runbooks/compute-resource-compromise.md index c1122624e..b7777e53d 100644 --- a/docs/runbooks/compute-resource-compromise.md +++ b/docs/runbooks/compute-resource-compromise.md @@ -1,3 +1,19 @@ + + # Incident Response Runbook: Compute Resource Compromise ## Document Control diff --git a/docs/runbooks/customer-managed-encryption-keys-compromise.md b/docs/runbooks/customer-managed-encryption-keys-compromise.md index 07fbb47a2..18ceac13f 100644 --- a/docs/runbooks/customer-managed-encryption-keys-compromise.md +++ b/docs/runbooks/customer-managed-encryption-keys-compromise.md @@ -1,3 +1,19 @@ + + # Incident Response Runbook: Customer Managed Encryption Keys (CMEK) Compromise or Loss ## Document Control diff --git a/docs/runbooks/incident_response_runbook_template.md b/docs/runbooks/incident_response_runbook_template.md index 5de375c17..3c05cd05a 100644 --- a/docs/runbooks/incident_response_runbook_template.md +++ b/docs/runbooks/incident_response_runbook_template.md @@ -1,3 +1,19 @@ + + # Incident Response Runbook: [Threat Scenario Title] ## Document Control diff --git a/docs/runbooks/network-intrusion-detected.md b/docs/runbooks/network-intrusion-detected.md index 5e4ebb16b..e0ec4949a 100644 --- a/docs/runbooks/network-intrusion-detected.md +++ b/docs/runbooks/network-intrusion-detected.md @@ -1,3 +1,19 @@ + + # Incident Response Runbook: Network Intrusion Detected ## Document Control diff --git a/docs/runbooks/vpc-service-controls-violation.md b/docs/runbooks/vpc-service-controls-violation.md index 6134b3d1c..ede480453 100644 --- a/docs/runbooks/vpc-service-controls-violation.md +++ b/docs/runbooks/vpc-service-controls-violation.md @@ -1,3 +1,19 @@ + + # Incident Response Runbook: VPC Service Controls (VPC-SC) Perimeter Violations ## Document Control diff --git a/docs/scc-deployment-guide.md b/docs/scc-deployment-guide.md index e76e9f887..370405a60 100644 --- a/docs/scc-deployment-guide.md +++ b/docs/scc-deployment-guide.md @@ -1,3 +1,19 @@ + + # Stellar Engine: Security Command Center (SCC) Deployment Guide Procedures to deploy Security Command Center into a Stellar Engine deployment diff --git a/docs/security-best-practices.md b/docs/security-best-practices.md index 5b7e91ef6..78f851254 100644 --- a/docs/security-best-practices.md +++ b/docs/security-best-practices.md @@ -1,3 +1,19 @@ + + # SE Security Best Practices Guide **Created Date:** Nov 21, 2024 diff --git a/docs/tdd.md b/docs/tdd.md index 4014e2b4e..3b4451520 100644 --- a/docs/tdd.md +++ b/docs/tdd.md @@ -1,3 +1,19 @@ + + # **Stellar Engine** Technical Design Document diff --git a/documentation/naming-convention.md b/documentation/naming-convention.md index ef867bd9c..c1c09e186 100644 --- a/documentation/naming-convention.md +++ b/documentation/naming-convention.md @@ -1,3 +1,19 @@ + + # Google Cloud Naming Convention Google Cloud services and assets have strict naming conventions in the form of character count, capitalization or lowercase, dashes, hyphens, underscores and reserved internal words. There are also several Google Cloud services that require globally unique naming to avoid collisions, while also forever "burning" the name so it cannot be used again ever, anywhere on Google Cloud. diff --git a/examples/gke-gitops-deployment/README.md b/examples/gke-gitops-deployment/README.md new file mode 100644 index 000000000..6e143fee0 --- /dev/null +++ b/examples/gke-gitops-deployment/README.md @@ -0,0 +1,39 @@ + + +## Example Tenant Deployment - GKE With GitOps + +This environment is an example utilizing cloud build to deploy a FastApi service on GKE in the +FRH -> Project [tenant] Test -> XXX-test-[tenant]-main-0 project after running the Deployment stage + +This example follows the use of the Cloud Build Automation for Terraform blueprint. +Details can be found there on deployment. [README](../../blueprints/il5/cloudbuild-tf-automation/README.md) + +These are key parts to this example: +1. Cloud Build blueprint deployed +1. Configured folder to deploy GKE in the environment (example in the [environments/int](./environments/int) folder) +1. Container built and available in Artifact Registry +1. External Git repository with GKE manifests for deployment (example in the [gitops](./gitops/) folder) + The Terraform code will point to this repo when configuring GKE +1. The certificate created will need to be configured with a CNAME record in you domain's zone DNS +1. An A record will be needed to point to the static IP created in Terraform + + +Additional Note: +There are some organizational policies that may require exemption base on how the load balancers are configured +with a certificate. + - compute.restrictLoadBalancerCreationForTypes + - compute.disableGlobalLoadBalancing \ No newline at end of file diff --git a/examples/gke-gitops-deployment/building_a_container.md b/examples/gke-gitops-deployment/building_a_container.md new file mode 100644 index 000000000..99c4e1081 --- /dev/null +++ b/examples/gke-gitops-deployment/building_a_container.md @@ -0,0 +1,76 @@ + + +## A Simple Guide To Build An Example Containerized App + +This walks through the steps to create a containerized app and save in Artifact Registry + +1. Create requirements.txt +``` +fastapi==0.111.0 +uvicorn==0.30.1 +``` + +1. Create main.py +``` +from fastapi import FastAPI +import os + +app = FastAPI() +POD_NAME = os.getenv("POD_NAME") + + +@app.get("/") +async def read_root(): + return {"message": "Hello there, from {POD_NAME}!"} +``` + +1. Create Dockerfile +``` +FROM python:3.10-slim-buster + +WORKDIR /app + +COPY requirements.txt . +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE 8080 + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"] +``` + +1. Create docker-push.sh +``` +PROJECT_ID="[Your Target Project]" +REGION="[YOUR REGION]" +REPO_NAME="applications" +IMAGE_NAME="[APP NAME ex: flash-app]" +IMAGE_TAG="latest" + +# Full path for the image in Artifact Registry +IMAGE_URI="${REGION}-docker.pkg.dev/${PROJECT_ID}/${REPO_NAME}/${IMAGE_NAME}:${IMAGE_TAG}" +docker build -t ${IMAGE_URI} . +docker push ${IMAGE_URI} +``` + +1. Run the docker-push.sh script to build the image and push to Artifact Registry +``` +sudo chmod +x docker-push.sh +./docker-push.sh +``` +When GKE has a deployment configured, it can pull this image from Artifact Registry. \ No newline at end of file diff --git a/examples/gke-gitops-deployment/environments/int/config.env.sample b/examples/gke-gitops-deployment/environments/int/config.env.sample new file mode 100644 index 000000000..477dc7628 --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/config.env.sample @@ -0,0 +1,22 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +ENVIRONMENTS=examples/gke-gitops-deployment/environments +ENV_FOLDER=test +CB_LOG_BUCKET=XXX-cloud-build-logs-bucket +CB_PROJECT=XXX-test-[TENANT]-iac-core-0 +CB_REGION=us-east4 +PREFIX=XXX +SERVICE_ACCOUNT=projects/XXX-cloudbuild-deployment/serviceAccounts/cloud-builder-sa@XXX-cloudbuild-deployment.iam.gserviceaccount.com +TFVARS_FILENAME=terraform.tfvars diff --git a/examples/gke-gitops-deployment/environments/int/firewall.tf b/examples/gke-gitops-deployment/environments/int/firewall.tf new file mode 100644 index 000000000..a8c96e3ce --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/firewall.tf @@ -0,0 +1,33 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +resource "google_compute_firewall" "allow_lb_health_check" { + name = "allow-lb-health-check" + project = var.main_project_id + network = module.gke-deployment.vpc-network.self_link + target_tags = ["[GKENODE POOL TAG]"] + direction = "INGRESS" + + allow { + protocol = "tcp" + ports = ["80"] + } + + source_ranges = [ + "130.211.0.0/22", + "35.191.0.0/16", + ] +} \ No newline at end of file diff --git a/examples/gke-gitops-deployment/environments/int/gke.tf b/examples/gke-gitops-deployment/environments/int/gke.tf new file mode 100644 index 000000000..db0e11f5f --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/gke.tf @@ -0,0 +1,62 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +module "gke-deployment" { + source = "../../../../blueprints/il5/gke-hardened" + gatekeeper_sa = var.gatekeeper_sa + gke_cluster_enable_private_endpoint = var.gke_cluster_enable_private_endpoint + gke_cluster_master_global_access = var.gke_cluster_master_global_access + gke_cluster_name = var.gke_cluster_name + gke_initial_node_per_zone = var.gke_initial_node_per_zone + gke_nodepool_name = var.gke_nodepool_name + gke_vpc_master_ipv4_cidr_block = var.gke_vpc_master_ipv4_cidr_block + + kms_keyring_name = var.kms_keyring_name + kms_key_names = var.kms_key_names + + local_admin_external_ip = var.local_admin_external_ip + + main_project_id = var.main_project_id + master_authorized_ranges_ip_ranges = var.master_authorized_ranges_ip_ranges + + nat_gateway_name = var.nat_gateway_name + nat_router_name = var.nat_router_name + network_name = var.network_name + node_config_tags = var.node_config_tags + node_disk_size_gb = var.node_disk_size_gb + nodepool_node_count = var.nodepool_node_count + + policy_controller_exemptable_namespaces = var.policy_controller_exemptable_namespaces + + region = var.region + remove_default_node_pool = var.remove_default_node_pool + + source_branch = var.source_branch + source_dir = var.source_dir + source_repo = var.source_repo + + subnetwork_name = var.subnetwork_name + subnetwork_ip_cidr_range_1 = var.subnetwork_ip_cidr_range_1 + subnetwork_secondary_ip_range_pods_1 = var.subnetwork_secondary_ip_range_pods_1 + subnetwork_secondary_ip_range_services_1 = var.subnetwork_secondary_ip_range_services_1 + +} + +resource "google_project_iam_member" "gke-sa-artifactregistry" { + project = var.main_project_id + role = "roles/artifactregistry.reader" + member = "serviceAccount:${module.gke-deployment.gke_cluster_sa.email}" +} diff --git a/examples/gke-gitops-deployment/environments/int/ip-cert.tf b/examples/gke-gitops-deployment/environments/int/ip-cert.tf new file mode 100644 index 000000000..c3dc126e0 --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/ip-cert.tf @@ -0,0 +1,49 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +resource "google_compute_global_address" "flash_ip" { + project = var.main_project_id + name = "flash-app-ip" +} + +resource "google_certificate_manager_dns_authorization" "flash-dns-auth" { + project = var.main_project_id + name = "flash-dns-auth" + domain = var.domain +} +resource "google_certificate_manager_certificate" "flash-cert" { + project = var.main_project_id + name = "flash-cert" + scope = "DEFAULT" + managed { + domains = [var.domain] + dns_authorizations = [google_certificate_manager_dns_authorization.flash-dns-auth.id] + } + depends_on = [google_certificate_manager_dns_authorization.flash-dns-auth] +} + +resource "google_certificate_manager_certificate_map" "flash-map" { + project = var.main_project_id + name = "flash-cert-map" +} + +resource "google_certificate_manager_certificate_map_entry" "flash-entry" { + project = var.main_project_id + name = "flash-entry" + map = google_certificate_manager_certificate_map.flash-map.name + hostname = var.domain + certificates = [google_certificate_manager_certificate.flash-cert.id] +} diff --git a/examples/gke-gitops-deployment/environments/int/provider.tf b/examples/gke-gitops-deployment/environments/int/provider.tf new file mode 100644 index 000000000..5cc38dcc0 --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/provider.tf @@ -0,0 +1,26 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +terraform { + backend "gcs" { + bucket = "[prefix]-prod-cloud-build-state" + } +} + +provider "google" { + impersonate_service_account = "cloud-builder-terraform-sa@[project].iam.gserviceaccount.com" + project = var.main_project_id +} \ No newline at end of file diff --git a/examples/gke-gitops-deployment/environments/int/terraform.tfvars.sample b/examples/gke-gitops-deployment/environments/int/terraform.tfvars.sample new file mode 100644 index 000000000..6dbde4717 --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/terraform.tfvars.sample @@ -0,0 +1,76 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +domain = "[YOUR DOMAIN]" +gatekeeper_sa = "gk-int-sa" +gke_cluster_enable_private_endpoint = true +gke_cluster_master_global_access = true +gke_cluster_name = "gke-cluster" +gke_initial_node_per_zone = 1 +gke_nodepool_name = "gke-nodepool" +gke_vpc_master_ipv4_cidr_block = "192.168.0.0/28" + +kms_keyring_name = { + location = "[YOUR REGION]" + name = "gkekeyring1" +} + +kms_key_names = { + "default" = { + rotation_period = "7776000s" # CIS Compliance Benchmark 1.10 + destroy_scheduled_duration = "2592000s" + labels = { + "team" = "gke-team" + } + version_template = { + algorithm = "GOOGLE_SYMMETRIC_ENCRYPTION" + protection_level = "HSM" + } + lifecycle = { + prevent_destroy = true + } + } +} + +local_admin_external_ip = ["[YOUR LOCAL EXTERNAL IP]"] + +main_project_id = "[MAIN PROJECT]" +master_authorized_ranges_ip_ranges = "10.0.0.0/8" + +nat_gateway_name = "gke-nat-gateway" +nat_router_name = "gke-nr" +network_name = "gke-vpc-int" +node_config_tags = ["node-config-gke", "intial-nodeconfig-gke"] +node_disk_size_gb = 20 +nodepool_node_count = { + initial = 1 +} + +policy_controller_exemptable_namespaces = [ + "gke-gmp-system", "gke-managed-filestorecsi", "kube-system" +] + +region = "[Your Region]" +remove_default_node_pool = true + +source_branch = "[Your Repo Branch]" +source_dir = "[Root Folder In Branch With Manifest Files]" +source_repo = "[Your Repo Url]" + +subnetwork_name = "[Your Subnet]" +subnetwork_ip_cidr_range_1 = "10.0.4.0/22" +subnetwork_secondary_ip_range_pods_1 = "10.4.0.0/14" +subnetwork_secondary_ip_range_services_1 = "10.0.32.0/20" \ No newline at end of file diff --git a/examples/gke-gitops-deployment/environments/int/variables.tf b/examples/gke-gitops-deployment/environments/int/variables.tf new file mode 100644 index 000000000..d470a4f32 --- /dev/null +++ b/examples/gke-gitops-deployment/environments/int/variables.tf @@ -0,0 +1,224 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +variable "domain" { + description = "The domain of the environment." + type = string +} + +variable "gatekeeper_sa" { + description = "The service account Gatekeeper uses to push metrics to GCP." + type = string +} + +variable "gke_cluster_enable_private_endpoint" { + description = "The Private Cluster configuration to enable private end point." + type = bool +} + +variable "gke_cluster_master_global_access" { + description = "The Private Cluster configuration to check the master Global Access." + type = bool +} + +variable "gke_cluster_name" { + description = "The GKE Kubernetes Cluster Name." + type = string +} + +variable "gke_initial_node_per_zone" { + description = "The initial number of Node per each zone." + type = number +} + +variable "gke_nodepool_name" { + description = "The GKE Kubernetes Cluster Name." + type = string +} + +variable "gke_vpc_master_ipv4_cidr_block" { + description = "The CIDR Range for the GKE Master IP CIDR Ranges for the k8s used for VPC configuration." + type = string +} + +variable "kms_key_names" { + description = "Key names and base attributes. Set attributes to null if not needed." + type = map(object({ + destroy_scheduled_duration = optional(string) + rotation_period = optional(string, "7776000s") # CIS Compliance Benchmark 1.10 + labels = optional(map(string)) + purpose = optional(string, "ENCRYPT_DECRYPT") + skip_initial_version_creation = optional(bool, false) + version_template = optional(object({ + algorithm = string + protection_level = optional(string, "SOFTWARE") + })) + iam = optional(map(list(string)), {}) + iam_bindings = optional(map(object({ + members = list(string) + role = string + condition = optional(object({ + expression = string + title = string + description = optional(string) + })) + })), {}) + iam_bindings_additive = optional(map(object({ + member = string + role = string + condition = optional(object({ + expression = string + title = string + description = optional(string) + })) + })), {}) + })) + default = { + "key-gke" = { + rotation_period = "7776000s" + destroy_scheduled_duration = "2592000s" + labels = { + team = "gke-team" + } + version_template = { + algorithm = "GOOGLE_SYMMETRIC_ENCRYPTION" + protection_level = "SOFTWARE" + } + lifecycle = { + prevent_destroy = true + } + } + } + nullable = false +} + +variable "kms_keyring_name" { + description = "Keyring attributes." + type = object({ + location = string + name = string + }) +} + +variable "local_admin_external_ip" { + description = "local admin workstation external ip to ssh into bastion vm." + type = list(string) +} + +variable "main_project_id" { + description = "The ID of the project in which to create the GKE cluster." + type = string +} + +variable "master_authorized_ranges_ip_ranges" { + description = "The CIDR Range for the GKE Nodes Pool when enabled Private End Point with master authorized ranges of CIDR." + type = string +} + +variable "nat_gateway_name" { + description = "The nat gateway for outbound routing from the cluster." + type = string +} + +variable "nat_router_name" { + description = "The nat router for outbound routing from the cluster." + type = string +} + +variable "network_name" { + description = "The VPC Name." + type = string +} + +variable "node_config_tags" { + description = "The Tags on the Node Configuration." + type = list(string) + nullable = false +} + +variable "node_disk_size_gb" { + description = "The disk size in GB to be given to each node." + type = number +} + +variable "node_machine_type" { + description = "The Node Machine type to be used in the NodePool." + type = string + default = "n2d-standard-2" +} + +variable "nodepool_node_count" { + description = "Number of node per zone in the Nodepool." + type = object({ + current = optional(number) + initial = number + }) + nullable = false +} + +variable "policy_controller_exemptable_namespaces" { + description = "The exempted namespaces for policy controller." + type = list(any) + default = [] +} + +variable "region" { + description = "The GCP region to use for the resources." + type = string +} + +# tflint-ignore: terraform_unused_declarations + +variable "remove_default_node_pool" { + description = "The Default NodePool remove it or not." + type = bool +} + +variable "source_branch" { + description = "The branch of the repository used for config sync gitops." + type = string + default = "main" +} + +variable "source_dir" { + description = "The directory in the repository containing policies." + type = string +} + +variable "source_repo" { + description = "The repository used for config sync gitops." + type = string +} + +variable "subnetwork_ip_cidr_range_1" { + description = "The CIDR Range for the VPC Subnet." + type = string +} + +variable "subnetwork_name" { + description = "The Subnet Name." + type = string +} + +variable "subnetwork_secondary_ip_range_pods_1" { + description = "The CIDR Range for the secondary IP CIDR Ranges for the k8s pods." + type = string +} + +variable "subnetwork_secondary_ip_range_services_1" { + description = "The CIDR Range for the secondary IP CIDR Ranges for the k8s services." + type = string +} diff --git a/examples/gke-gitops-deployment/environments/tf-apply.yaml b/examples/gke-gitops-deployment/environments/tf-apply.yaml new file mode 100644 index 000000000..476aaf49a --- /dev/null +++ b/examples/gke-gitops-deployment/environments/tf-apply.yaml @@ -0,0 +1,47 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +substitutions: + _ENVIRONMENTS: 'blueprints/il5/cloudbuild-ft-automation/environments' + _ENV_FOLDER: 'dev' + _TFVARS_FILENAME: 'terraform.tfvars' + _CB_LOG_BUCKET: bucket_cloudbuild +steps: +- id: 'Terraform Format Check' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['fmt','-recursive','-check'] +- id: 'Terraform Init' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['init'] +- id: 'Terraform Validate' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['validate'] +- id: 'Terraform Plan' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['plan','-var-file=$_TFVARS_FILENAME', '-out=tfplan.out'] +- id: 'Terraform Apply' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['apply','-var-file=$_TFVARS_FILENAME', '-auto-approve', 'tfplan.out'] +logsBucket: gs://$_CB_LOG_BUCKET +timeout: 10000s # ~3 hours \ No newline at end of file diff --git a/examples/gke-gitops-deployment/environments/tf-plan.yaml b/examples/gke-gitops-deployment/environments/tf-plan.yaml new file mode 100644 index 000000000..9cc4730f7 --- /dev/null +++ b/examples/gke-gitops-deployment/environments/tf-plan.yaml @@ -0,0 +1,42 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +substitutions: + _ENVIRONMENTS: 'blueprints/il5/cloudbuild-ft-automation/environments' + _ENV_FOLDER: 'dev' + _TFVARS_FILENAME: 'terraform.tfvars' + _CB_LOG_BUCKET: bucket_cloudbuild +steps: +- id: 'Terraform Format Check' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['fmt','-recursive','-check'] +- id: 'Terraform Init' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['init'] +- id: 'Terraform Validate' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['validate'] +- id: 'Terraform Plan' + name: 'hashicorp/terraform' + dir: $_ENVIRONMENTS/$_ENV_FOLDER + entrypoint: 'terraform' + args: ['plan','-var-file=$_TFVARS_FILENAME', '-out=tfplan.out'] +logsBucket: gs://$_CB_LOG_BUCKET +timeout: 600s # 10 minutes \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/README.md b/examples/gke-gitops-deployment/gitops/README.md new file mode 100644 index 000000000..f8ec8b801 --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/README.md @@ -0,0 +1,42 @@ + + +## GitOps Deployment +This folder represents an example repository holding Kubernetes manifests to +deploy a containerized FastAPI application with required supporting infrastructure +for GKE to build the loadbalancer and set up a secure connection with a certificate. + +This code should be deployed in a Git repository and pointed to from the gke.tf file +``` +module "gke-deployment" { + ... + source_branch = var.source_branch + source_dir = var.source_dir + source_repo = var.source_repo +} +``` + +# Flash Sample Deployment + +To create the CRDs for the Gateway and HTTPRoute, run +``` +kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml +``` + +To update the cluster after the gateway is applied through gitops, run +``` +gcloud container clusters update CLUSTER_NAME --gateway-api=standard --zone=CLUSTER_ZONE --project=PROJECT_ID +``` \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/deployment.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/deployment.yaml new file mode 100644 index 000000000..568ce27c1 --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/deployment.yaml @@ -0,0 +1,45 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: flash-deployment + namespace: flash +spec: + replicas: 2 + minReadySeconds: 30 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + selector: + matchLabels: + app: flash + template: + metadata: + labels: + app: flash + spec: + containers: + - name: app-container + image: us-east4-docker.pkg.dev/a38-int-aa-main-0/applications/flash-app:latest + ports: + - containerPort: 8080 + env: + - name: POD_NAME + valueFrom: + fieldRef: + fieldPath: metadata.name \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/frontend.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/frontend.yaml new file mode 100644 index 000000000..5ebdb7a3e --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/frontend.yaml @@ -0,0 +1,22 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: networking.gke.io/v1beta1 +kind: FrontendConfig +metadata: + name: flash-frontend-config + namespace: flash +spec: + redirectToHttps: + enabled: true \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/gateway.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/gateway.yaml new file mode 100644 index 000000000..4faa8bc90 --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/gateway.yaml @@ -0,0 +1,36 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: Gateway +metadata: + name: flash-gateway + namespace: flash + annotations: + networking.gke.io/certmap: flash-cert-map +spec: + gatewayClassName: gke-l7-global-external-managed + listeners: + - name: http + protocol: HTTP + port: 80 + allowedRoutes: + namespaces: + from: Same + - name: https + protocol: HTTPS + port: 443 + allowedRoutes: + namespaces: + from: Same diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/httproute.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/httproute.yaml new file mode 100644 index 000000000..31e14227e --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/httproute.yaml @@ -0,0 +1,28 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: gateway.networking.k8s.io/v1beta1 +kind: HTTPRoute +metadata: + name: flash-http-route + namespace: flash +spec: + parentRefs: + - name: flash-gateway + hostnames: + - "keycloak.example.com" + rules: + - backendRefs: + - name: flash-service + port: 80 \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/kustomization.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/kustomization.yaml new file mode 100644 index 000000000..9a911b543 --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/kustomization.yaml @@ -0,0 +1,24 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- deployment.yaml +- frontend.yaml +- gateway.yaml +- httproute.yaml +- namespace.yaml +- service.yaml diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/namespace.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/namespace.yaml new file mode 100644 index 000000000..4e4bef5b5 --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/namespace.yaml @@ -0,0 +1,20 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Namespace +metadata: + name: flash5 + labels: + name: flash5 \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/deployments/flash-app/service.yaml b/examples/gke-gitops-deployment/gitops/deployments/flash-app/service.yaml new file mode 100644 index 000000000..71adedae2 --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/flash-app/service.yaml @@ -0,0 +1,28 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: flash-service + namespace: flash5 +spec: + selector: + app: flash + ports: + - protocol: TCP + name: http + port: 80 + targetPort: 8080 + type: ClusterIP \ No newline at end of file diff --git a/examples/gke-gitops-deployment/gitops/deployments/kustomization.yaml b/examples/gke-gitops-deployment/gitops/deployments/kustomization.yaml new file mode 100644 index 000000000..d768428fa --- /dev/null +++ b/examples/gke-gitops-deployment/gitops/deployments/kustomization.yaml @@ -0,0 +1,19 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization + +resources: +- flash-app \ No newline at end of file diff --git a/fast/README.md b/fast/README.md index dbf98affe..b549e5539 100644 --- a/fast/README.md +++ b/fast/README.md @@ -1,3 +1,19 @@ + + # Stellar Engine FAST Security _Documenting the desired infrastructure state of the `/fast/stages-aw/3-security` Terraform codebase._ @@ -44,11 +60,11 @@ FAST also aims to minimize the number of permissions granted to principals accor A resource factory consumes a simple representation of a resource (e.g., in YAML) and deploys it (e.g., using Terraform). Used correctly, factories can help decrease the management overhead of large-scale infrastructure deployments. See "[Resource Factories: A descriptive approach to Terraform](https://medium.com/google-cloud/resource-factories-a-descriptive-approach-to-terraform-581b3ebb59c)" for more details and the rationale behind factories. -FAST uses YAML-based factories to deploy subnets and firewall rules and, as its name suggests, in the [project factory](./stages/3-project-factory/) stage. +FAST uses YAML-based factories to deploy subnets and firewall rules and, as its name suggests, in the [project factory](./stages-aw/5-tenants/) stage. ### CI/CD -One of our objectives with FAST is to provide a lightweight reference design for the IaC repositories, and a built-in implementation for running our code in automated pipelines. Our CI/CD approach leverages [Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation), and provides sample workflow configurations for several major providers. Refer to the [CI/CD section in the bootstrap stage](./stages/0-bootstrap/README.md#cicd) for more details. We also provide separate [optional small stages](./extras/) to help you configure your CI/CD provider. +One of our objectives with FAST is to provide a lightweight reference design for the IaC repositories, and a built-in implementation for running our code in automated pipelines. Our CI/CD approach leverages [Workload Identity Federation](https://cloud.google.com/iam/docs/workload-identity-federation), and provides sample workflow configurations for several major providers. Refer to the [CI/CD section in the bootstrap stage](./0-organization-bootstrap/README.md#cicd) for more details. We also provide separate [optional small stages](./stages-aw/shared-services/) to help you configure your CI/CD provider. ## Implementation diff --git a/fast/assets/schemas/firewall_rules.schema.yaml b/fast/assets/schemas/firewall_rules.schema.yaml index 74aba4b5e..493abe404 100644 --- a/fast/assets/schemas/firewall_rules.schema.yaml +++ b/fast/assets/schemas/firewall_rules.schema.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + egress: map(include('firewall_rule'), required=False) ingress: map(include('firewall_rule'), required=False) --- diff --git a/fast/assets/schemas/hierarchical_rules.schema.yaml b/fast/assets/schemas/hierarchical_rules.schema.yaml index ad49bfa57..2546d1c43 100644 --- a/fast/assets/schemas/hierarchical_rules.schema.yaml +++ b/fast/assets/schemas/hierarchical_rules.schema.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + map(include('hierarchical_rule')) --- hierarchical_rule: diff --git a/fast/assets/schemas/project.schema.yaml b/fast/assets/schemas/project.schema.yaml index 2b3f14b3a..943361a67 100644 --- a/fast/assets/schemas/project.schema.yaml +++ b/fast/assets/schemas/project.schema.yaml @@ -1,10 +1,10 @@ -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + billing_account_id: str(matches='[A-F0-9]{6}-[A-F0-9]{6}-[A-F0-9]{6}', required=False) billing_alert: any(include('billing_alert'), null(), required=False) # If set to null, use defaults dns_zones: list(str(), required=False) diff --git a/fast/assets/schemas/project_defaults.schema.yaml b/fast/assets/schemas/project_defaults.schema.yaml index 32e98ffc6..4a6c2cc65 100644 --- a/fast/assets/schemas/project_defaults.schema.yaml +++ b/fast/assets/schemas/project_defaults.schema.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + billing_account_id: str(matches='[A-F0-9]{6}-[A-F0-9]{6}-[A-F0-9]{6}', required=False) billing_alert: any(include('billing_alert'), null(), required=False) essential_contacts: list(str(), required=False) diff --git a/fast/assets/schemas/subnet.schema.yaml b/fast/assets/schemas/subnet.schema.yaml index cc5aa10d7..8d0785d95 100644 --- a/fast/assets/schemas/subnet.schema.yaml +++ b/fast/assets/schemas/subnet.schema.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + region: str() description: str() ip_cidr_range: str() diff --git a/fast/assets/templates/workflow-github.yaml b/fast/assets/templates/workflow-github.yaml index 4fa5a3359..f9fbf0c80 100644 --- a/fast/assets/templates/workflow-github.yaml +++ b/fast/assets/templates/workflow-github.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + name: "FAST ${stage_name} stage" on: diff --git a/fast/assets/templates/workflow-gitlab.yaml b/fast/assets/templates/workflow-gitlab.yaml index c50f8e58e..ac847ef31 100644 --- a/fast/assets/templates/workflow-gitlab.yaml +++ b/fast/assets/templates/workflow-gitlab.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + variables: GOOGLE_CREDENTIALS: cicd-sa-credentials.json FAST_OUTPUTS_BUCKET: ${outputs_bucket} diff --git a/fast/assets/templates/workflow-sourcerepo.yaml b/fast/assets/templates/workflow-sourcerepo.yaml index 88c04fac5..58c0b4701 100644 --- a/fast/assets/templates/workflow-sourcerepo.yaml +++ b/fast/assets/templates/workflow-sourcerepo.yaml @@ -1,10 +1,10 @@ -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + steps: - name: alpine:3 id: tf-download diff --git a/fast/docs/0-bootstram-user-iam.md b/fast/docs/0-bootstram-user-iam.md index 51fa31ab2..68c04cc80 100644 --- a/fast/docs/0-bootstram-user-iam.md +++ b/fast/docs/0-bootstram-user-iam.md @@ -1,3 +1,19 @@ + + # Remove initial gcloud commands needed to bootstrap **authors:** [Ludo](https://github.com/ludoo)\ diff --git a/fast/docs/0-cicd-plan-sa.md b/fast/docs/0-cicd-plan-sa.md index 944dea5f8..ba19a8c1d 100644 --- a/fast/docs/0-cicd-plan-sa.md +++ b/fast/docs/0-cicd-plan-sa.md @@ -1,3 +1,19 @@ + + # Add new service accounts for CI/CD with plan-only permissions **authors:** [Ludo](https://github.com/ludoo) \ diff --git a/fast/docs/0-domainless-iam.md b/fast/docs/0-domainless-iam.md index cfe3e9f19..1bf170716 100644 --- a/fast/docs/0-domainless-iam.md +++ b/fast/docs/0-domainless-iam.md @@ -1,3 +1,19 @@ + + # Support for domain-less organizations **authors:** [Ludo](https://github.com/ludoo) \ diff --git a/fast/docs/0-org-policies.md b/fast/docs/0-org-policies.md index e7d58ae57..4605bd78c 100644 --- a/fast/docs/0-org-policies.md +++ b/fast/docs/0-org-policies.md @@ -1,3 +1,19 @@ + + # Move organization policies to bootstrap stage **authors:** [Julio](https://github.com/juliocc), [Ludo](https://github.com/ludoo), [Roberto](https://github.com/drebes) \ diff --git a/fast/docs/1-network-ranges.md b/fast/docs/1-network-ranges.md index 2a5c64754..f19169271 100644 --- a/fast/docs/1-network-ranges.md +++ b/fast/docs/1-network-ranges.md @@ -1,3 +1,19 @@ + + # IP ranges for network stages **authors:** [Ludo](https://github.com/ludoo), [Roberto](https://github.com/drebes), [Julio](https://github.com/jccb) \ diff --git a/fast/docs/README.md b/fast/docs/README.md index d6c722c23..5e2cb2194 100644 --- a/fast/docs/README.md +++ b/fast/docs/README.md @@ -1,3 +1,19 @@ + + # FAST architectural documents This folder contains assorted bits of documentation used to log current architectural choices, or past decisions. Format is inspired by [Michael Nygard's decision record template](https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-by-michael-nygard/index.md). diff --git a/fast/stage-links.sh b/fast/stage-links.sh index 7c1ba5686..a3eda8d96 100755 --- a/fast/stage-links.sh +++ b/fast/stage-links.sh @@ -1,11 +1,11 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + if [ $# -eq 0 ]; then echo "Error: no folder or GCS bucket specified. Use -h or --help for usage." exit 1 diff --git a/fast/stages-aw/0-bootstrap/IAM.md b/fast/stages-aw/0-bootstrap/IAM.md index 7a0ed0677..f4cccb5ad 100644 --- a/fast/stages-aw/0-bootstrap/IAM.md +++ b/fast/stages-aw/0-bootstrap/IAM.md @@ -1,3 +1,19 @@ + + # IAM bindings reference Legend: + additive, conditional. diff --git a/fast/stages-aw/0-bootstrap/README.md b/fast/stages-aw/0-bootstrap/README.md index 998d4e545..4a8e143d0 100644 --- a/fast/stages-aw/0-bootstrap/README.md +++ b/fast/stages-aw/0-bootstrap/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Organization Bootstrap The purpose of this stage is to enable critical Google Cloud Organization level functionalities that depend on broad administrative permissions, and prepare the prerequisites needed to enable automation in this and future stages. In addition, this stage ensures that all future fast stages are compliant with the selected compliance regime. @@ -51,7 +67,7 @@ In this way, the Resource Management service account can effectively act as a Go One consequence of the above setup is the need to configure IAM bindings that can be assigned via the condition as non-authoritative, since those same roles are effectively under the control of two stages: this one and Resource Management. Using authoritative bindings for these roles (instead of non-authoritative ones) would generate potential conflicts, where each stage could try to overwrite and negate the bindings applied by the other at each `apply` cycle. -A full reference of IAM roles managed by this stage [is available here](./IAM.md). +A full reference of IAM roles managed by this stage [is available here](#). ### Google Cloud Organization Policies and Tag-Based Conditions diff --git a/fast/stages-aw/0-bootstrap/audit-logging.tf b/fast/stages-aw/0-bootstrap/audit-logging.tf index 727077593..023992292 100644 --- a/fast/stages-aw/0-bootstrap/audit-logging.tf +++ b/fast/stages-aw/0-bootstrap/audit-logging.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # CIS Compliance Benchmark 2.1 resource "google_organization_iam_audit_config" "organization" { diff --git a/fast/stages-aw/0-bootstrap/automation.tf b/fast/stages-aw/0-bootstrap/automation.tf index 6e9925403..3323d4891 100644 --- a/fast/stages-aw/0-bootstrap/automation.tf +++ b/fast/stages-aw/0-bootstrap/automation.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Automation project and resources. locals { diff --git a/fast/stages-aw/0-bootstrap/billing.tf b/fast/stages-aw/0-bootstrap/billing.tf index 5ff87f834..993e504b9 100644 --- a/fast/stages-aw/0-bootstrap/billing.tf +++ b/fast/stages-aw/0-bootstrap/billing.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Billing export project and dataset. locals { diff --git a/fast/stages-aw/0-bootstrap/budgets.tf b/fast/stages-aw/0-bootstrap/budgets.tf index a4fb0aa24..8dcada76b 100644 --- a/fast/stages-aw/0-bootstrap/budgets.tf +++ b/fast/stages-aw/0-bootstrap/budgets.tf @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Billing budgets. locals { diff --git a/fast/stages-aw/0-bootstrap/checklist.tf b/fast/stages-aw/0-bootstrap/checklist.tf index c82300995..7bee5053a 100644 --- a/fast/stages-aw/0-bootstrap/checklist.tf +++ b/fast/stages-aw/0-bootstrap/checklist.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # group mapping from checklist to ours _cl_groups = { diff --git a/fast/stages-aw/0-bootstrap/cicd.tf b/fast/stages-aw/0-bootstrap/cicd.tf index abd857f34..35af5a33b 100644 --- a/fast/stages-aw/0-bootstrap/cicd.tf +++ b/fast/stages-aw/0-bootstrap/cicd.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Workload Identity Federation configurations for CI/CD. locals { diff --git a/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/cloudkms.yaml b/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/cloudkms.yaml index c43323ce1..e7ac284d5 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/cloudkms.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/cloudkms.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # This prevents users from creating keys that are not CIS compliant # Keys must be rotated within a period of 90 days (CIS Compliance Benchmark 1.10) # SHOULD HAVE diff --git a/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/networking.yaml b/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/networking.yaml index 51144cb03..561bf1fb3 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/networking.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-constraint-policies/networking.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # This prevents users from creating firewall rules that allow traffic from 0.0.0.0/0 # Rules must explicitly allow smaller subnets, or preferably tags # COULD HAVE diff --git a/fast/stages-aw/0-bootstrap/data/custom-org-policies/cloudconsole_policy.yaml b/fast/stages-aw/0-bootstrap/data/custom-org-policies/cloudconsole_policy.yaml index 6ef746c3e..6ecc4c20b 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-org-policies/cloudconsole_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-org-policies/cloudconsole_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint, when enforced on an organization resource, defines # the set of Google Cloud resources that are returned in list and search diff --git a/fast/stages-aw/0-bootstrap/data/custom-org-policies/networking_policy.yaml b/fast/stages-aw/0-bootstrap/data/custom-org-policies/networking_policy.yaml index 01d8f6293..14401009a 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-org-policies/networking_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-org-policies/networking_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the set of subnetworks that are allowed to use # Cloud NAT. By default, all subnetworks are allowed to use Cloud NAT. The diff --git a/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml b/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml index 408b6a316..0fb51d8f6 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-org-policies/platform_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the set of external Organizations from which resources # can be imported, and denies all moves from all other Organizations. By default, @@ -32,7 +33,7 @@ resourcemanager.allowedImportSources: # This list constraint defines the set of domains that email addresses added to # Essential Contacts can have. By default, email addresses with any domain can # be added to Essential Contacts. The allowed/denied list must specify one or -# more domains of the form @dino-runner.darkwolfsolutions.com. If this constraint is active and +# more domains of the form @dino-runner.example.com. If this constraint is active and # configured with allowed values, only email addresses with a suffix matching # one of the entries from the list of allowed domains can be added in Essential # Contacts.This constraint has no effect on updating or removing existing contacts. @@ -90,7 +91,7 @@ iam.allowedPolicyMemberDomains: # This list constraint defines the set of domains that email addresses added to # Essential Contacts can have. By default, email addresses with any domain can # be added to Essential Contacts. The allowed/denied list must specify one or -# more domains of the form @dino-runner.darkwolfsolutions.com. If this constraint is active and +# more domains of the form @dino-runner.example.com. If this constraint is active and # configured with allowed values, only email addresses with a suffix matching # one of the entries from the list of allowed domains can be added in Essential # Contacts.This constraint has no effect on updating or removing existing contacts. diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/gcve_network_admin.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/gcve_network_admin.yaml index 255ac781e..9d8fc35b2 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/gcve_network_admin.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/gcve_network_admin.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + name: gcveNetworkAdmin includedPermissions: - vmwareengine.networkPeerings.create diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/organization_admin_viewer.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/organization_admin_viewer.yaml index d20ca2f7d..575decf08 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/organization_admin_viewer.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/organization_admin_viewer.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # this is used by the plan-only admin SA name: organizationAdminViewer includedPermissions: diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/organization_iam_admin.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/organization_iam_admin.yaml index 9ce8ac5c0..8dd9e8e23 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/organization_iam_admin.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/organization_iam_admin.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # this is needed for use in additive IAM bindings, to avoid conflicts name: organizationIamAdmin includedPermissions: diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/service_project_network_admin.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/service_project_network_admin.yaml index a0eaf9b3b..7e2d710b1 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/service_project_network_admin.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/service_project_network_admin.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + name: serviceProjectNetworkAdmin includedPermissions: - compute.globalOperations.get diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/storage_viewer.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/storage_viewer.yaml index e7ae5794c..a74e822db 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/storage_viewer.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/storage_viewer.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # the following permissions are a descoped version of storage.admin includedPermissions: - storage.buckets.get diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/tag_viewer.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/tag_viewer.yaml index 756d0e935..89d5f8493 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/tag_viewer.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/tag_viewer.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # the following permissions are a descoped version of tagAdm name: tagViewer includedPermissions: diff --git a/fast/stages-aw/0-bootstrap/data/custom-roles/tenant_network_admin.yaml b/fast/stages-aw/0-bootstrap/data/custom-roles/tenant_network_admin.yaml index 9d1e02822..ee69474b5 100644 --- a/fast/stages-aw/0-bootstrap/data/custom-roles/tenant_network_admin.yaml +++ b/fast/stages-aw/0-bootstrap/data/custom-roles/tenant_network_admin.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + name: tenantNetworkAdmin includedPermissions: - compute.globalOperations.get diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/appengine_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/appengine_policy.yaml index e22fe0b4a..c3db09200 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/appengine_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/appengine_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # Disables code downloads of source code previously uploaded to App Engine. # SHOULD HAVE diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/assuredworkloads_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/assuredworkloads_policy.yaml index 3f1738039..492d5bad1 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/assuredworkloads_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/assuredworkloads_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # PREVIEW: This constraint defines the set of TLS versions that cannot be used on # the organization, folder, or project where this constraint is enforced, or any # of that resource's children in the resource hierarchy. By default, all TLS diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/bigquery_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/bigquery_policy.yaml index 8d2e73df4..81379e9a0 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/bigquery_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/bigquery_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint, when set to True, will disable users from # using BigQuery Omni to process data on Amazon Web Services where this diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/cloudbuild_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/cloudbuild_policy.yaml index 950a543cb..831207fca 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/cloudbuild_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/cloudbuild_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the allowed Cloud Build integrations # for performing Builds through receiving webhooks from services outside diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/cloudconsole_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/cloudconsole_policy.yaml index 6d45e383a..efd773745 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/cloudconsole_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/cloudconsole_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint disables the SSH-in-browser tool in the # Cloud Console. When enforced, the SSH-in-browser button is disabled. diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/clouddeploy_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/clouddeploy_policy.yaml index 13708cb24..8a7dc6841 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/clouddeploy_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/clouddeploy_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint, when enforced, prevents Cloud Deploy from adding # Cloud Deploy identifier labels to deployed objects.By default, labels diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/cloudkms_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/cloudkms_policy.yaml index eec9081c6..5359d4237 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/cloudkms_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/cloudkms_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the Cloud KMS key types which may be created # under a given hierarchy node. When this constraint is enforced, only KMS diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/compute_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/compute_policy.yaml index 3841a823a..8f8618d59 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/compute_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/compute_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the set of Compute Engine VM instances that # are allowed to use external IP addresses. By default, all VM instances are diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/data_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/data_policy.yaml index 2fe308f55..243a4cf70 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/data_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/data_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint restricts adding Authorized Networks for unproxied # database access to Cloud SQL instances where this constraint is set to True. diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/dns_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/dns_policy.yaml index 6a3a8eaa3..33a42825a 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/dns_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/dns_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # When set to \`True\`, newly created projects will use Zonal DNS as default. # By default, this constraint is set to \`False\` and newly created projects diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/function_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/function_policy.yaml index 61d6747f0..4a6f253f3 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/function_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/function_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # This list constraint defines the allowed ingress settings for deployment of a # Cloud Function. When this constraint is enforced, functions will be required # to have ingress settings that match one of the allowed values. By default, diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/gke_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/gke_policy.yaml index 949e14be8..56342c17e 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/gke_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/gke_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint, when set to \`True\`, requires that all new GKE # clusters have Workload Identity disabled at creation time. Existing GKE diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/iam_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/iam_policy.yaml index ea54e4890..db2478eb5 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/iam_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/iam_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the set of service accounts that can be granted OAuth 2.0 access tokens with a lifetime of up to 12 hours. By default, the maximum lifetime for these access tokens is 1 hour. The allowed/denied list of service accounts must specify one or more service account email addresses. # COULD HAVE diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/lb_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/lb_policy.yaml index 268a672c3..8710952bd 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/lb_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/lb_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint, when enforced, disables creating Cloud Armor security # policies. By default, you can create Cloud Armor security policies in any diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/marketplace_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/marketplace_policy.yaml index 7a083fd19..8b23271cf 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/marketplace_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/marketplace_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint, when enforced, disables public marketplace for all users under the org. By default, public marketplace access is enabled for the org. # COULD HAVE diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/networking_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/networking_policy.yaml index 9580fca86..4d65fb1b0 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/networking_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/networking_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This boolean constraint, when set to True, disables the creation of or update # to any Google Compute Engine resources involved in IPv6 usage. By default, diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/platform_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/platform_policy.yaml index 8dc07bf2a..c57d0eefa 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/platform_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/platform_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/psc_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/psc_policy.yaml index 3833199db..30b117cc3 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/psc_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/psc_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # This list constraint defines the set of Private Service Connect endpoint types # for which users cannot create forwarding rules. When this constraint is diff --git a/fast/stages-aw/0-bootstrap/data/org-policies/storage_policy.yaml b/fast/stages-aw/0-bootstrap/data/org-policies/storage_policy.yaml index c18c23a17..e95c0245a 100644 --- a/fast/stages-aw/0-bootstrap/data/org-policies/storage_policy.yaml +++ b/fast/stages-aw/0-bootstrap/data/org-policies/storage_policy.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + --- # Secure your Cloud Storage data from public exposure by enforcing public access # prevention. This governance policy prevents existing and future resources from diff --git a/fast/stages-aw/0-bootstrap/enableServices.sh b/fast/stages-aw/0-bootstrap/enableServices.sh index 4d8e52244..94090353f 100755 --- a/fast/stages-aw/0-bootstrap/enableServices.sh +++ b/fast/stages-aw/0-bootstrap/enableServices.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + list_of_services="iam cloudkms pubsub serviceusage cloudresourcemanager bigquery assuredworkloads cloudbilling logging iamcredentials orgpolicy" for service in ${list_of_services}; do diff --git a/fast/stages-aw/0-bootstrap/groups.gif b/fast/stages-aw/0-bootstrap/groups.gif index 0744cb099..f000e9445 100644 Binary files a/fast/stages-aw/0-bootstrap/groups.gif and b/fast/stages-aw/0-bootstrap/groups.gif differ diff --git a/fast/stages-aw/0-bootstrap/import.sh b/fast/stages-aw/0-bootstrap/import.sh index 8e77b1a10..ec941a747 100755 --- a/fast/stages-aw/0-bootstrap/import.sh +++ b/fast/stages-aw/0-bootstrap/import.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Assign Organization ID ORG=$(gcloud organizations list --format='value(ID)') if [[ -z "${ORG}" ]]; then diff --git a/fast/stages-aw/0-bootstrap/kms.tf b/fast/stages-aw/0-bootstrap/kms.tf index 569804eee..8aed1057e 100644 --- a/fast/stages-aw/0-bootstrap/kms.tf +++ b/fast/stages-aw/0-bootstrap/kms.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { version_template = { diff --git a/fast/stages-aw/0-bootstrap/log-export.tf b/fast/stages-aw/0-bootstrap/log-export.tf index b76df3dc8..df8ee0375 100644 --- a/fast/stages-aw/0-bootstrap/log-export.tf +++ b/fast/stages-aw/0-bootstrap/log-export.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Audit log project and sink. locals { diff --git a/fast/stages-aw/0-bootstrap/log-metric-alerts.tf b/fast/stages-aw/0-bootstrap/log-metric-alerts.tf index 719f53ba9..e988c3e18 100644 --- a/fast/stages-aw/0-bootstrap/log-metric-alerts.tf +++ b/fast/stages-aw/0-bootstrap/log-metric-alerts.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # CIS Compliance Benchmark 2.4 # CIS Compliance Benchmark 2.5 diff --git a/fast/stages-aw/0-bootstrap/main.tf b/fast/stages-aw/0-bootstrap/main.tf index c8bf8c25f..6ea353654 100644 --- a/fast/stages-aw/0-bootstrap/main.tf +++ b/fast/stages-aw/0-bootstrap/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { gcs_storage_class = ( length(split("-", local.locations.gcs)) < 2 diff --git a/fast/stages-aw/0-bootstrap/organization-iam.tf b/fast/stages-aw/0-bootstrap/organization-iam.tf index 8d1a30486..da69d4c92 100644 --- a/fast/stages-aw/0-bootstrap/organization-iam.tf +++ b/fast/stages-aw/0-bootstrap/organization-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Organization-level IAM bindings locals. locals { diff --git a/fast/stages-aw/0-bootstrap/organization.tf b/fast/stages-aw/0-bootstrap/organization.tf index 87165c43a..f19c28d95 100644 --- a/fast/stages-aw/0-bootstrap/organization.tf +++ b/fast/stages-aw/0-bootstrap/organization.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Organization-level IAM. locals { diff --git a/fast/stages-aw/0-bootstrap/outputs-files.tf b/fast/stages-aw/0-bootstrap/outputs-files.tf index 541b4a9fa..9f02308ad 100644 --- a/fast/stages-aw/0-bootstrap/outputs-files.tf +++ b/fast/stages-aw/0-bootstrap/outputs-files.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Output files persistence to local filesystem. resource "local_file" "providers" { diff --git a/fast/stages-aw/0-bootstrap/outputs-gcs.tf b/fast/stages-aw/0-bootstrap/outputs-gcs.tf index c9f662161..c0d8a7e9e 100644 --- a/fast/stages-aw/0-bootstrap/outputs-gcs.tf +++ b/fast/stages-aw/0-bootstrap/outputs-gcs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Output files persistence to automation GCS bucket. resource "google_storage_bucket_object" "providers" { diff --git a/fast/stages-aw/0-bootstrap/outputs.tf b/fast/stages-aw/0-bootstrap/outputs.tf index 65e78a98c..d5f71ebf4 100644 --- a/fast/stages-aw/0-bootstrap/outputs.tf +++ b/fast/stages-aw/0-bootstrap/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _tpl_providers = "${path.module}/templates/providers.tf.tpl" # render CI/CD workflow templates diff --git a/fast/stages-aw/0-bootstrap/setIAM.sh b/fast/stages-aw/0-bootstrap/setIAM.sh index fb9c1e591..b4f59a500 100755 --- a/fast/stages-aw/0-bootstrap/setIAM.sh +++ b/fast/stages-aw/0-bootstrap/setIAM.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + # Color definitions RED='\033[0;31m' GREEN='\033[0;32m' diff --git a/fast/stages-aw/0-bootstrap/setIAM.yaml.sample b/fast/stages-aw/0-bootstrap/setIAM.yaml.sample index 2f17f9bda..852e1fc04 100644 --- a/fast/stages-aw/0-bootstrap/setIAM.yaml.sample +++ b/fast/stages-aw/0-bootstrap/setIAM.yaml.sample @@ -1,3 +1,17 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + { "bindings": [ { diff --git a/fast/stages-aw/0-bootstrap/templates/workflow-github.yaml b/fast/stages-aw/0-bootstrap/templates/workflow-github.yaml index 70ccfc50f..f6aa53cd7 100644 --- a/fast/stages-aw/0-bootstrap/templates/workflow-github.yaml +++ b/fast/stages-aw/0-bootstrap/templates/workflow-github.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + name: "FAST ${stage_name} stage" on: diff --git a/fast/stages-aw/0-bootstrap/templates/workflow-gitlab.yaml b/fast/stages-aw/0-bootstrap/templates/workflow-gitlab.yaml index c50f8e58e..ac847ef31 100644 --- a/fast/stages-aw/0-bootstrap/templates/workflow-gitlab.yaml +++ b/fast/stages-aw/0-bootstrap/templates/workflow-gitlab.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + variables: GOOGLE_CREDENTIALS: cicd-sa-credentials.json FAST_OUTPUTS_BUCKET: ${outputs_bucket} diff --git a/fast/stages-aw/0-bootstrap/templates/workflow-sourcerepo.yaml b/fast/stages-aw/0-bootstrap/templates/workflow-sourcerepo.yaml index 012ff93e7..fe3cea3f8 100644 --- a/fast/stages-aw/0-bootstrap/templates/workflow-sourcerepo.yaml +++ b/fast/stages-aw/0-bootstrap/templates/workflow-sourcerepo.yaml @@ -1,10 +1,10 @@ -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + steps: - name: alpine:3 id: tf-download diff --git a/fast/stages-aw/0-bootstrap/terraform.tfvars.sample b/fast/stages-aw/0-bootstrap/terraform.tfvars.sample index 4abe2f434..4a9a12e88 100644 --- a/fast/stages-aw/0-bootstrap/terraform.tfvars.sample +++ b/fast/stages-aw/0-bootstrap/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + # use `gcloud beta billing accounts list` # if you have too many accounts, check the Cloud Console :) billing_account = { diff --git a/fast/stages-aw/0-bootstrap/variables.tf b/fast/stages-aw/0-bootstrap/variables.tf index d1c279608..f9e58599e 100644 --- a/fast/stages-aw/0-bootstrap/variables.tf +++ b/fast/stages-aw/0-bootstrap/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/fast/stages-aw/0-bootstrap/workload-identity.tf b/fast/stages-aw/0-bootstrap/workload-identity.tf index 546f716fa..cc910d73a 100644 --- a/fast/stages-aw/0-bootstrap/workload-identity.tf +++ b/fast/stages-aw/0-bootstrap/workload-identity.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Workload Identity Federation configurations. locals { diff --git a/fast/stages-aw/1-resman/IAM.md b/fast/stages-aw/1-resman/IAM.md index 6619a2534..583898bd0 100644 --- a/fast/stages-aw/1-resman/IAM.md +++ b/fast/stages-aw/1-resman/IAM.md @@ -1,3 +1,19 @@ + + # IAM bindings reference Legend: + additive, conditional. diff --git a/fast/stages-aw/1-resman/README.md b/fast/stages-aw/1-resman/README.md index 0004ce023..08b189188 100644 --- a/fast/stages-aw/1-resman/README.md +++ b/fast/stages-aw/1-resman/README.md @@ -1,3 +1,19 @@ + + # Resource Hierarchy This stage provisions Int, Test, and Prod Google Cloud Folders, and Google Cloud Projects contained within, for tenants. In addition, it lays the framework for the subsequent network and security stages by creating the Google Cloud Folder structure for both. There is substantial modification from the original CFF structure, as all Google Cloud Projects MUST reside within the scope of an Assured Workloads Google Cloud Folder. @@ -31,7 +47,7 @@ The preconfigured provider file uses impersonation to run with this stage's auto ### Lightweight multitenancy -If the organization needs to support tenants without the full complexity and separation offered by our [full multitenant support](../../stages-multitenant/), this stage offers a simplified setup which is suitable for cases where tenants have less autonomy, and don't need to implement FAST stages inside their reserved partition. +If the organization needs to support tenants without the full complexity and separation offered by our [full multitenant support](../5-tenants/), this stage offers a simplified setup which is suitable for cases where tenants have less autonomy, and don't need to implement FAST stages inside their reserved partition. This mode is activated by defining tenants in the `tenants` variable, while IAM configurations that apply to every tenant can be optionally set in the `tenants_config` variable. @@ -214,7 +230,7 @@ This allows to centralize the minimum set of resources to delegate control of ea The `folder_iam` variable can be used to manage authoritative bindings for all top-level Google Cloud Folders. For additional control, IAM roles can be easily edited in the relevant `branch-xxx.tf` file, following the best practice outlined in the [bootstrap stage](../0-bootstrap#customizations) documentation of separating user-level and service-account level IAM policies throuth the IAM-related variables (`iam`, `iam_bindings`, `iam_bindings_additive`) of the relevant modules. -A full reference of IAM roles managed by this stage [is available here](./IAM.md). +A full reference of IAM roles managed by this stage [is available here](#). ### Additional Google Cloud Folders diff --git a/fast/stages-aw/1-resman/billing.tf b/fast/stages-aw/1-resman/billing.tf index 64b87c265..07d226708 100644 --- a/fast/stages-aw/1-resman/billing.tf +++ b/fast/stages-aw/1-resman/billing.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Billing resources for external billing use cases. locals { diff --git a/fast/stages-aw/1-resman/branch-data-platform.tf b/fast/stages-aw/1-resman/branch-data-platform.tf index dc967621f..8bcd361be 100644 --- a/fast/stages-aw/1-resman/branch-data-platform.tf +++ b/fast/stages-aw/1-resman/branch-data-platform.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Data Platform stages resources. module "branch-dp-folder" { diff --git a/fast/stages-aw/1-resman/branch-envs.tf b/fast/stages-aw/1-resman/branch-envs.tf index 89dc86d23..8046d65ab 100644 --- a/fast/stages-aw/1-resman/branch-envs.tf +++ b/fast/stages-aw/1-resman/branch-envs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Team stage resources. locals { diff --git a/fast/stages-aw/1-resman/branch-gcve.tf b/fast/stages-aw/1-resman/branch-gcve.tf index 26cffea5d..e43bd81c7 100644 --- a/fast/stages-aw/1-resman/branch-gcve.tf +++ b/fast/stages-aw/1-resman/branch-gcve.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description GCVE stage resources. module "branch-gcve-folder" { diff --git a/fast/stages-aw/1-resman/branch-gke.tf b/fast/stages-aw/1-resman/branch-gke.tf index c7b830a45..01768bfd1 100644 --- a/fast/stages-aw/1-resman/branch-gke.tf +++ b/fast/stages-aw/1-resman/branch-gke.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description GKE multitenant stage resources. module "branch-gke-folder" { diff --git a/fast/stages-aw/1-resman/branch-networking.tf b/fast/stages-aw/1-resman/branch-networking.tf index 61ef77e08..e64f73758 100644 --- a/fast/stages-aw/1-resman/branch-networking.tf +++ b/fast/stages-aw/1-resman/branch-networking.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Networking stage resources. locals { diff --git a/fast/stages-aw/1-resman/branch-project-factory.tf b/fast/stages-aw/1-resman/branch-project-factory.tf index b4ea2d136..7fe02d37f 100644 --- a/fast/stages-aw/1-resman/branch-project-factory.tf +++ b/fast/stages-aw/1-resman/branch-project-factory.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Project factory stage resources. # automation service accounts diff --git a/fast/stages-aw/1-resman/branch-sandbox.tf b/fast/stages-aw/1-resman/branch-sandbox.tf index 2866612cc..95f4e920e 100644 --- a/fast/stages-aw/1-resman/branch-sandbox.tf +++ b/fast/stages-aw/1-resman/branch-sandbox.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Sandbox stage resources. locals { diff --git a/fast/stages-aw/1-resman/branch-security.tf b/fast/stages-aw/1-resman/branch-security.tf index 79f72594f..209465a2d 100644 --- a/fast/stages-aw/1-resman/branch-security.tf +++ b/fast/stages-aw/1-resman/branch-security.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Security stage resources. locals { diff --git a/fast/stages-aw/1-resman/branch-teams.tf b/fast/stages-aw/1-resman/branch-teams.tf index 34a3b08d8..3b2b6f65c 100644 --- a/fast/stages-aw/1-resman/branch-teams.tf +++ b/fast/stages-aw/1-resman/branch-teams.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Team stage resources. locals { diff --git a/fast/stages-aw/1-resman/branch-tenants.tf b/fast/stages-aw/1-resman/branch-tenants.tf index 8b3627c73..e91b08c60 100644 --- a/fast/stages-aw/1-resman/branch-tenants.tf +++ b/fast/stages-aw/1-resman/branch-tenants.tf @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + # /** # * Copyright 2024 Google LLC # * diff --git a/fast/stages-aw/1-resman/checklist.tf b/fast/stages-aw/1-resman/checklist.tf index 55b57bc8c..cf0da45d4 100644 --- a/fast/stages-aw/1-resman/checklist.tf +++ b/fast/stages-aw/1-resman/checklist.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # parse raw data from JSON files if they exist _cl_data_raw = ( diff --git a/fast/stages-aw/1-resman/cicd-data-platform.tf b/fast/stages-aw/1-resman/cicd-data-platform.tf index a544f5c36..870e3f5fe 100644 --- a/fast/stages-aw/1-resman/cicd-data-platform.tf +++ b/fast/stages-aw/1-resman/cicd-data-platform.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for the data platform branch. # source repositories diff --git a/fast/stages-aw/1-resman/cicd-gcve.tf b/fast/stages-aw/1-resman/cicd-gcve.tf index 119ae8bba..e6cd0b5a9 100644 --- a/fast/stages-aw/1-resman/cicd-gcve.tf +++ b/fast/stages-aw/1-resman/cicd-gcve.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for the GCVE branch. # source repositories diff --git a/fast/stages-aw/1-resman/cicd-gke.tf b/fast/stages-aw/1-resman/cicd-gke.tf index 4125104bb..9cbf88e0a 100644 --- a/fast/stages-aw/1-resman/cicd-gke.tf +++ b/fast/stages-aw/1-resman/cicd-gke.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for the GKE multitenant branch. # source repositories diff --git a/fast/stages-aw/1-resman/cicd-networking.tf b/fast/stages-aw/1-resman/cicd-networking.tf index 2215e9baa..aef8f0708 100644 --- a/fast/stages-aw/1-resman/cicd-networking.tf +++ b/fast/stages-aw/1-resman/cicd-networking.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for the networking branch. # source repository diff --git a/fast/stages-aw/1-resman/cicd-project-factory.tf b/fast/stages-aw/1-resman/cicd-project-factory.tf index 009199c2e..dbe76d9de 100644 --- a/fast/stages-aw/1-resman/cicd-project-factory.tf +++ b/fast/stages-aw/1-resman/cicd-project-factory.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for the teams branch. # source repositories diff --git a/fast/stages-aw/1-resman/cicd-security.tf b/fast/stages-aw/1-resman/cicd-security.tf index d0dab9236..cd4b2aa6d 100644 --- a/fast/stages-aw/1-resman/cicd-security.tf +++ b/fast/stages-aw/1-resman/cicd-security.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for the security branch. # source repository diff --git a/fast/stages-aw/1-resman/cicd-teams.tf b/fast/stages-aw/1-resman/cicd-teams.tf index 67e04c109..dd652f174 100644 --- a/fast/stages-aw/1-resman/cicd-teams.tf +++ b/fast/stages-aw/1-resman/cicd-teams.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description CI/CD resources for individual teams. # source repository diff --git a/fast/stages-aw/1-resman/kms.tf b/fast/stages-aw/1-resman/kms.tf index 59d4d322c..b75e49267 100644 --- a/fast/stages-aw/1-resman/kms.tf +++ b/fast/stages-aw/1-resman/kms.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ module "tenant-project-keys" { source = "../../../modules/kms" diff --git a/fast/stages-aw/1-resman/log-metric-alerts.tf b/fast/stages-aw/1-resman/log-metric-alerts.tf index 6e4ea0bf1..6b692ec9a 100644 --- a/fast/stages-aw/1-resman/log-metric-alerts.tf +++ b/fast/stages-aw/1-resman/log-metric-alerts.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # CIS Compliance Benchmark 2.4 # CIS Compliance Benchmark 2.5 diff --git a/fast/stages-aw/1-resman/main.tf b/fast/stages-aw/1-resman/main.tf index 293f75c77..6c487f926 100644 --- a/fast/stages-aw/1-resman/main.tf +++ b/fast/stages-aw/1-resman/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/fast/stages-aw/1-resman/organization-iam.tf b/fast/stages-aw/1-resman/organization-iam.tf index c99df3a47..d98b1f107 100644 --- a/fast/stages-aw/1-resman/organization-iam.tf +++ b/fast/stages-aw/1-resman/organization-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Organization-level IAM bindings locals. locals { diff --git a/fast/stages-aw/1-resman/organization.tf b/fast/stages-aw/1-resman/organization.tf index f016d78c7..b45ddd344 100644 --- a/fast/stages-aw/1-resman/organization.tf +++ b/fast/stages-aw/1-resman/organization.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Organization policies. module "organization" { diff --git a/fast/stages-aw/1-resman/outputs-files.tf b/fast/stages-aw/1-resman/outputs-files.tf index 2f13adfc5..2aecafc79 100644 --- a/fast/stages-aw/1-resman/outputs-files.tf +++ b/fast/stages-aw/1-resman/outputs-files.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Output files persistence to local filesystem. locals { diff --git a/fast/stages-aw/1-resman/outputs-gcs.tf b/fast/stages-aw/1-resman/outputs-gcs.tf index 8e102a410..deb66771a 100644 --- a/fast/stages-aw/1-resman/outputs-gcs.tf +++ b/fast/stages-aw/1-resman/outputs-gcs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Output files persistence to automation GCS bucket. resource "google_storage_bucket_object" "providers" { diff --git a/fast/stages-aw/1-resman/outputs-tenants.tf b/fast/stages-aw/1-resman/outputs-tenants.tf index d1105d38e..b16e0821d 100644 --- a/fast/stages-aw/1-resman/outputs-tenants.tf +++ b/fast/stages-aw/1-resman/outputs-tenants.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { tenant_core_providers = { for k, v in local.tenant_envs : diff --git a/fast/stages-aw/1-resman/outputs.tf b/fast/stages-aw/1-resman/outputs.tf index 4a6f8679a..a1b63e4f3 100644 --- a/fast/stages-aw/1-resman/outputs.tf +++ b/fast/stages-aw/1-resman/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _tpl_providers = "${path.module}/templates/providers.tf.tpl" cicd_workflow_attrs = { diff --git a/fast/stages-aw/1-resman/templates/workflow-github.yaml b/fast/stages-aw/1-resman/templates/workflow-github.yaml index 70ccfc50f..f6aa53cd7 100644 --- a/fast/stages-aw/1-resman/templates/workflow-github.yaml +++ b/fast/stages-aw/1-resman/templates/workflow-github.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + name: "FAST ${stage_name} stage" on: diff --git a/fast/stages-aw/1-resman/templates/workflow-gitlab.yaml b/fast/stages-aw/1-resman/templates/workflow-gitlab.yaml index c50f8e58e..ac847ef31 100644 --- a/fast/stages-aw/1-resman/templates/workflow-gitlab.yaml +++ b/fast/stages-aw/1-resman/templates/workflow-gitlab.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + variables: GOOGLE_CREDENTIALS: cicd-sa-credentials.json FAST_OUTPUTS_BUCKET: ${outputs_bucket} diff --git a/fast/stages-aw/1-resman/templates/workflow-sourcerepo.yaml b/fast/stages-aw/1-resman/templates/workflow-sourcerepo.yaml index 012ff93e7..fe3cea3f8 100644 --- a/fast/stages-aw/1-resman/templates/workflow-sourcerepo.yaml +++ b/fast/stages-aw/1-resman/templates/workflow-sourcerepo.yaml @@ -1,10 +1,10 @@ -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + steps: - name: alpine:3 id: tf-download diff --git a/fast/stages-aw/1-resman/terraform.tfvars.sample b/fast/stages-aw/1-resman/terraform.tfvars.sample index 994affe73..b022c6d57 100644 --- a/fast/stages-aw/1-resman/terraform.tfvars.sample +++ b/fast/stages-aw/1-resman/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + tenants = { tenant_name = { ## change this admin_principal = "group:gcp-devops@domain" diff --git a/fast/stages-aw/1-resman/variables.tf b/fast/stages-aw/1-resman/variables.tf index 8dce6d8c9..f04da9c38 100644 --- a/fast/stages-aw/1-resman/variables.tf +++ b/fast/stages-aw/1-resman/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/fast/stages-aw/2-networking-a-fedramp-high/README.md b/fast/stages-aw/2-networking-a-fedramp-high/README.md index 520b0347f..f36667bf4 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/README.md +++ b/fast/stages-aw/2-networking-a-fedramp-high/README.md @@ -1,3 +1,19 @@ + + # FedRAMP High Network This stage deploys the networking infrastructure recommended with an Assured Workload FedRAMP High environment. diff --git a/fast/stages-aw/2-networking-a-fedramp-high/branch-net-envs.tf b/fast/stages-aw/2-networking-a-fedramp-high/branch-net-envs.tf index 7173c31bb..65bd98ae9 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/branch-net-envs.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/branch-net-envs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Dev spoke VPC and related resources. locals { diff --git a/fast/stages-aw/2-networking-a-fedramp-high/connectivity-tests.tf b/fast/stages-aw/2-networking-a-fedramp-high/connectivity-tests.tf index e4552381a..7062e22bd 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/connectivity-tests.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/connectivity-tests.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { } diff --git a/fast/stages-aw/2-networking-a-fedramp-high/main.tf b/fast/stages-aw/2-networking-a-fedramp-high/main.tf index 4c1adcdec..e6250a330 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/main.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Networking folder and hierarchical policy. locals { diff --git a/fast/stages-aw/2-networking-a-fedramp-high/net-vdss.tf b/fast/stages-aw/2-networking-a-fedramp-high/net-vdss.tf index 53449f5b5..4e7693c5d 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/net-vdss.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/net-vdss.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Landing VPC and related resources. module "vdss-host-project" { diff --git a/fast/stages-aw/2-networking-a-fedramp-high/nva.tf b/fast/stages-aw/2-networking-a-fedramp-high/nva.tf index d16e6a5b0..bc560767a 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/nva.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/nva.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # routing_config should be aligned to the NVA network interfaces - i.e. # local.routing_config[0] sets up the first interface, and so on. diff --git a/fast/stages-aw/2-networking-a-fedramp-high/outputs.tf b/fast/stages-aw/2-networking-a-fedramp-high/outputs.tf index 2c06e801e..ecdc77876 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/outputs.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { envs = { for name, v in var.envs_folders : name => { folder = v diff --git a/fast/stages-aw/2-networking-a-fedramp-high/terraform.tfvars.sample b/fast/stages-aw/2-networking-a-fedramp-high/terraform.tfvars.sample index cd301b4c0..ef8d133a0 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/terraform.tfvars.sample +++ b/fast/stages-aw/2-networking-a-fedramp-high/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + # Sample terraform.tfvars file for Stage 2 (Networking - FedRAMP High) # Replace values with your desired network topologies. diff --git a/fast/stages-aw/2-networking-a-fedramp-high/variables.tf b/fast/stages-aw/2-networking-a-fedramp-high/variables.tf index 40aaf03f8..a2c13e8fd 100644 --- a/fast/stages-aw/2-networking-a-fedramp-high/variables.tf +++ b/fast/stages-aw/2-networking-a-fedramp-high/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/README.md b/fast/stages-aw/2-networking-b-il5-ngfw/README.md index adefeab19..2e9776225 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/README.md +++ b/fast/stages-aw/2-networking-b-il5-ngfw/README.md @@ -1,3 +1,19 @@ + + # Networking with Network Virtual Appliance This stage sets up the shared network infrastructure for the whole Google Cloud Organization. diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/bastion.tf b/fast/stages-aw/2-networking-b-il5-ngfw/bastion.tf index c2b9819f5..b3702b032 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/bastion.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/bastion.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Google Compute Shielded VM Module module "bastion-vm" { diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/branch-net-envs.tf b/fast/stages-aw/2-networking-b-il5-ngfw/branch-net-envs.tf index 3824c2d09..ee8a19252 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/branch-net-envs.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/branch-net-envs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Dev spoke VPC and related resources. locals { diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/log-metric-alerts.tf b/fast/stages-aw/2-networking-b-il5-ngfw/log-metric-alerts.tf index 5cf9731e2..3f82d055b 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/log-metric-alerts.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/log-metric-alerts.tf @@ -1,17 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # CIS Compliance Benchmark 2.4 # CIS Compliance Benchmark 2.5 # CIS Compliance Benchmark 2.6 diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/main.tf b/fast/stages-aw/2-networking-b-il5-ngfw/main.tf index d7c771e52..cf2d81982 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/main.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Networking folder and hierarchical policy. locals { diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/net-vdss.tf b/fast/stages-aw/2-networking-b-il5-ngfw/net-vdss.tf index b86eb27a4..275b8005e 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/net-vdss.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/net-vdss.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Landing VPC and related resources. module "vdss-host-project" { diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/ngfw.tf b/fast/stages-aw/2-networking-b-il5-ngfw/ngfw.tf index 05d91f6cd..ae5a5ea2b 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/ngfw.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/ngfw.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # routing_config should be aligned to the NVA network interfaces - i.e. # local.routing_config[0] sets up the first interface, and so on. diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/openssl-helper.sh b/fast/stages-aw/2-networking-b-il5-ngfw/openssl-helper.sh index 516274f1c..07e4aec3f 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/openssl-helper.sh +++ b/fast/stages-aw/2-networking-b-il5-ngfw/openssl-helper.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + # Exit if any of the intermediate steps fail set -e diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/outputs.tf b/fast/stages-aw/2-networking-b-il5-ngfw/outputs.tf index 77da4a04b..9b6c14891 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/outputs.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { envs = { for name, v in var.envs_folders : name => { folder = v diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/psc.tf b/fast/stages-aw/2-networking-b-il5-ngfw/psc.tf index 3d19fd9bb..c82aeebd7 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/psc.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/psc.tf @@ -1,17 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_compute_global_address" "private_service_connect_ip" { for_each = var.envs_folders diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/terraform.tfvars.sample b/fast/stages-aw/2-networking-b-il5-ngfw/terraform.tfvars.sample index de444b2ea..ccead2fe6 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/terraform.tfvars.sample +++ b/fast/stages-aw/2-networking-b-il5-ngfw/terraform.tfvars.sample @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + # Sample terraform.tfvars file for Stage 2 (Networking - IL5 NGFW) # Replace values with your desired network topologies. diff --git a/fast/stages-aw/2-networking-b-il5-ngfw/variables.tf b/fast/stages-aw/2-networking-b-il5-ngfw/variables.tf index 1b6c21114..2190243ee 100644 --- a/fast/stages-aw/2-networking-b-il5-ngfw/variables.tf +++ b/fast/stages-aw/2-networking-b-il5-ngfw/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/fast/stages-aw/3-security/IAM.md b/fast/stages-aw/3-security/IAM.md index e6c31d31e..1ed909eec 100644 --- a/fast/stages-aw/3-security/IAM.md +++ b/fast/stages-aw/3-security/IAM.md @@ -1,3 +1,19 @@ + + # IAM bindings reference Legend: + additive, conditional. diff --git a/fast/stages-aw/3-security/README.md b/fast/stages-aw/3-security/README.md index 4781b4ac4..823c77a87 100644 --- a/fast/stages-aw/3-security/README.md +++ b/fast/stages-aw/3-security/README.md @@ -1,3 +1,19 @@ + + # Shared security resources and VPC Service Controls This stage sets up security resources and configurations which impact the whole Google Cloud Organization, or are shared across the hierarchy to other projects and teams. diff --git a/fast/stages-aw/3-security/core-dev.tf b/fast/stages-aw/3-security/core-dev.tf index d51e9b6fb..038db8ccf 100644 --- a/fast/stages-aw/3-security/core-dev.tf +++ b/fast/stages-aw/3-security/core-dev.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { dev_kms_restricted_admins = [ for sa in distinct(compact([ diff --git a/fast/stages-aw/3-security/core-prod.tf b/fast/stages-aw/3-security/core-prod.tf index f4d7cb156..48cf1a27c 100644 --- a/fast/stages-aw/3-security/core-prod.tf +++ b/fast/stages-aw/3-security/core-prod.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { prod_kms_restricted_admins = [ for sa in distinct(compact([ diff --git a/fast/stages-aw/3-security/data/vpc-sc/restricted-services.yaml b/fast/stages-aw/3-security/data/vpc-sc/restricted-services.yaml index 3c070aaca..ac6084805 100644 --- a/fast/stages-aw/3-security/data/vpc-sc/restricted-services.yaml +++ b/fast/stages-aw/3-security/data/vpc-sc/restricted-services.yaml @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # skip boilerplate check - accessapproval.googleapis.com - adsdatahub.googleapis.com diff --git a/fast/stages-aw/3-security/delete_gcp_project.sh b/fast/stages-aw/3-security/delete_gcp_project.sh index 62ab3104a..67e32ba42 100755 --- a/fast/stages-aw/3-security/delete_gcp_project.sh +++ b/fast/stages-aw/3-security/delete_gcp_project.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + # Initialize variables PROJECT_ID="" CURRENT_USER="" diff --git a/fast/stages-aw/3-security/log-metric-alerts.tf b/fast/stages-aw/3-security/log-metric-alerts.tf index 08544731d..95cc69c24 100644 --- a/fast/stages-aw/3-security/log-metric-alerts.tf +++ b/fast/stages-aw/3-security/log-metric-alerts.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # CIS Compliance Benchmark 2.4 # CIS Compliance Benchmark 2.5 diff --git a/fast/stages-aw/3-security/main.tf b/fast/stages-aw/3-security/main.tf index a72bd7b78..f66c65f6d 100644 --- a/fast/stages-aw/3-security/main.tf +++ b/fast/stages-aw/3-security/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # additive IAM binding for delegated KMS admins kms_restricted_admin_template = { diff --git a/fast/stages-aw/3-security/outputs.tf b/fast/stages-aw/3-security/outputs.tf index 2561ce215..702ab3b31 100644 --- a/fast/stages-aw/3-security/outputs.tf +++ b/fast/stages-aw/3-security/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _output_kms_keys = concat( flatten([ diff --git a/fast/stages-aw/3-security/sa_lockdown.sh b/fast/stages-aw/3-security/sa_lockdown.sh index f333c2248..de52562f2 100755 --- a/fast/stages-aw/3-security/sa_lockdown.sh +++ b/fast/stages-aw/3-security/sa_lockdown.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + # Default list of service account names VALID_NAMES=("bootstrap" "resman" "networking" "security") diff --git a/fast/stages-aw/3-security/validation.sh b/fast/stages-aw/3-security/validation.sh index 587a37f26..b7a71b3c1 100755 --- a/fast/stages-aw/3-security/validation.sh +++ b/fast/stages-aw/3-security/validation.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + echo "--- Verifying Deployment Service Account Status ---" echo "" diff --git a/fast/stages-aw/3-security/variables.tf b/fast/stages-aw/3-security/variables.tf index 92fc01acf..6c72129ff 100644 --- a/fast/stages-aw/3-security/variables.tf +++ b/fast/stages-aw/3-security/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/fast/stages-aw/3-security/vpc-sc.tf b/fast/stages-aw/3-security/vpc-sc.tf index f7d7b6f4f..17ff4e2a4 100644 --- a/fast/stages-aw/3-security/vpc-sc.tf +++ b/fast/stages-aw/3-security/vpc-sc.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { vpc_sc_ingress_policies = var.logging == null ? {} : { fast-org-log-sinks = { diff --git a/fast/stages-aw/README.md b/fast/stages-aw/README.md index 0f4f58ba0..d0e60a8cf 100644 --- a/fast/stages-aw/README.md +++ b/fast/stages-aw/README.md @@ -1,3 +1,19 @@ + + # FAST Stages Each of the git folders contained here is a separate "stage", or Terraform root module. diff --git a/generate-mocks.sh b/generate-mocks.sh index 9bca5c605..67983d23d 100755 --- a/generate-mocks.sh +++ b/generate-mocks.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) # Generate mock provider files for all stages in stages-aw diff --git a/modules/README.md b/modules/README.md index 682419f19..cf21e8620 100644 --- a/modules/README.md +++ b/modules/README.md @@ -1,3 +1,19 @@ + + # Terraform modules suite for Google Cloud The modules collected in this folder are designed as a suite: they are meant to be composed together, and are designed to be forked and modified where use of third party code and sources is not allowed. diff --git a/modules/__docs/20230816-iam-refactor.md b/modules/__docs/20230816-iam-refactor.md index e2c51e1f7..c89cfbcfc 100644 --- a/modules/__docs/20230816-iam-refactor.md +++ b/modules/__docs/20230816-iam-refactor.md @@ -1,3 +1,19 @@ + + # Refactor IAM interface **authors:** [Ludo](https://github.com/ludoo), [Julio](https://github.com/juliocc) diff --git a/modules/__docs/20231106-factories.md b/modules/__docs/20231106-factories.md index b9ebf4518..f01c3e95f 100644 --- a/modules/__docs/20231106-factories.md +++ b/modules/__docs/20231106-factories.md @@ -1,3 +1,19 @@ + + # Factories Refactor and Plan Forward **authors:** [Ludo](https://github.com/ludoo) diff --git a/modules/__docs/README.md b/modules/__docs/README.md index da5c91819..b8da88397 100644 --- a/modules/__docs/README.md +++ b/modules/__docs/README.md @@ -1,3 +1,19 @@ + + # Fabric modules architectural documents This folder contains assorted bits of documentation used to log current architectural choices, or past decisions. Format is inspired by [Michael Nygard's decision record template](https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-by-michael-nygard/index.md). diff --git a/modules/access-context-manager/README.md b/modules/access-context-manager/README.md index 7cf463926..501d6ec98 100644 --- a/modules/access-context-manager/README.md +++ b/modules/access-context-manager/README.md @@ -1,3 +1,19 @@ + + # Access Context Manager This modules manages the creation ofAccess Context Manager (ACM). Access Context Manager (ACM) in Google Cloud Platform (GCP) is a security service that allows you to define and enforce fine-grained access controls for your resources. diff --git a/modules/access-context-manager/main.tf b/modules/access-context-manager/main.tf index 367c6c293..9992a9138 100644 --- a/modules/access-context-manager/main.tf +++ b/modules/access-context-manager/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_access_context_manager_access_policy" "policy" { parent = "organizations/${var.organization_id}" diff --git a/modules/access-context-manager/outputs.tf b/modules/access-context-manager/outputs.tf index 3c863a0ad..365ac3aeb 100644 --- a/modules/access-context-manager/outputs.tf +++ b/modules/access-context-manager/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "access_levels" { description = "The list of created access levels." diff --git a/modules/access-context-manager/providers.tf b/modules/access-context-manager/providers.tf index c7f24e20a..a273c6ae6 100644 --- a/modules/access-context-manager/providers.tf +++ b/modules/access-context-manager/providers.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ provider "google-beta" { project = var.project_id diff --git a/modules/access-context-manager/variables.tf b/modules/access-context-manager/variables.tf index 42812c643..979d56a39 100644 --- a/modules/access-context-manager/variables.tf +++ b/modules/access-context-manager/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "access_levels" { description = "List of access levels to create. Each access level is a map containing 'name', 'description', and 'conditions'." diff --git a/modules/alloydb/README.md b/modules/alloydb/README.md index ba49b28fd..505c0e02b 100644 --- a/modules/alloydb/README.md +++ b/modules/alloydb/README.md @@ -1,3 +1,19 @@ + + # AlloyDB module This module manages the creation of an AlloyDB cluster. It also supports cross-region replication scenario by setting up a secondary cluster and the addition of read pools to support read offloads in both primary and secondary regions. diff --git a/modules/alloydb/main.tf b/modules/alloydb/main.tf index 14bff4738..0323bfa34 100644 --- a/modules/alloydb/main.tf +++ b/modules/alloydb/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { prefix = var.prefix == null ? "" : "${var.prefix}-" is_regional = var.availability_type == "REGIONAL" diff --git a/modules/alloydb/outputs.tf b/modules/alloydb/outputs.tf index a7066d0a7..b3aedd988 100644 --- a/modules/alloydb/outputs.tf +++ b/modules/alloydb/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _all_instances = { primary = google_alloydb_instance.primary diff --git a/modules/alloydb/tags.tf b/modules/alloydb/tags.tf index cd5648c16..1adeaa7e9 100644 --- a/modules/alloydb/tags.tf +++ b/modules/alloydb/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - data "google_project" "project" { count = var.project_number == null ? 1 : 0 project_id = var.project_id diff --git a/modules/alloydb/variables.tf b/modules/alloydb/variables.tf index 95f4b186b..54b88bb06 100644 --- a/modules/alloydb/variables.tf +++ b/modules/alloydb/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "annotations" { description = "Map FLAG_NAME=>VALUE for annotations which allow client tools to store small amount of arbitrary data." type = map(string) diff --git a/modules/alloydb/versions.tf b/modules/alloydb/versions.tf index f91d09a59..40a0741bb 100644 --- a/modules/alloydb/versions.tf +++ b/modules/alloydb/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/analytics-hub/README.md b/modules/analytics-hub/README.md index 3482d797c..0328ab642 100644 --- a/modules/analytics-hub/README.md +++ b/modules/analytics-hub/README.md @@ -1,3 +1,19 @@ + + # BigQuery Analytics Hub This module allows managing [Analytics Hub](https://cloud.google.com/bigquery/docs/analytics-hub-introduction) Exchange and Listing resources. diff --git a/modules/analytics-hub/iam.tf b/modules/analytics-hub/iam.tf index ed8b98fe1..c19f93d4f 100644 --- a/modules/analytics-hub/iam.tf +++ b/modules/analytics-hub/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _exchange_iam_principal_roles = distinct(flatten(values(var.iam_by_principals))) _exchange_iam_principals = { diff --git a/modules/analytics-hub/main.tf b/modules/analytics-hub/main.tf index 0480dea63..8e82ef3dd 100644 --- a/modules/analytics-hub/main.tf +++ b/modules/analytics-hub/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { prefix = var.prefix == null || var.prefix == "" ? "" : "${var.prefix}_" _factory_listings = { diff --git a/modules/analytics-hub/outputs.tf b/modules/analytics-hub/outputs.tf index 5cbf45d8a..7657385b4 100644 --- a/modules/analytics-hub/outputs.tf +++ b/modules/analytics-hub/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "data_exchange_id" { description = "Data exchange id." value = google_bigquery_analytics_hub_data_exchange.data_exchange.data_exchange_id diff --git a/modules/analytics-hub/variables-iam.tf b/modules/analytics-hub/variables-iam.tf index 5ad9a377d..d9df492eb 100644 --- a/modules/analytics-hub/variables-iam.tf +++ b/modules/analytics-hub/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "Authoritative IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/analytics-hub/variables.tf b/modules/analytics-hub/variables.tf index 6f6136389..54afa9fd0 100644 --- a/modules/analytics-hub/variables.tf +++ b/modules/analytics-hub/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "description" { description = "Resource description for data exchange." default = null diff --git a/modules/analytics-hub/versions.tf b/modules/analytics-hub/versions.tf index 443252fa9..c60a26812 100644 --- a/modules/analytics-hub/versions.tf +++ b/modules/analytics-hub/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/api-gateway/README.md b/modules/api-gateway/README.md index d3c16d38c..0e6c3eb6f 100644 --- a/modules/api-gateway/README.md +++ b/modules/api-gateway/README.md @@ -1,3 +1,19 @@ + + # API Gateway This module allows creating an API with its associated API config and API gateway. It also allows you grant IAM roles on the created resources. diff --git a/modules/api-gateway/main.tf b/modules/api-gateway/main.tf index 5b6ce0781..ae16017b6 100644 --- a/modules/api-gateway/main.tf +++ b/modules/api-gateway/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { service_account_email = ( var.service_account_create diff --git a/modules/api-gateway/outputs.tf b/modules/api-gateway/outputs.tf index 863c3828f..8338ddbb3 100644 --- a/modules/api-gateway/outputs.tf +++ b/modules/api-gateway/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "api" { description = "API." value = google_api_gateway_api.api diff --git a/modules/api-gateway/variables.tf b/modules/api-gateway/variables.tf index ef5bd41d4..b8cab2ca4 100644 --- a/modules/api-gateway/variables.tf +++ b/modules/api-gateway/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "api_id" { description = "API identifier." type = string diff --git a/modules/api-gateway/versions.tf b/modules/api-gateway/versions.tf index bee69cd60..077b9aa69 100644 --- a/modules/api-gateway/versions.tf +++ b/modules/api-gateway/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/apigee/README.md b/modules/apigee/README.md index a4be05599..97978d97d 100644 --- a/modules/apigee/README.md +++ b/modules/apigee/README.md @@ -1,3 +1,19 @@ + + # Apigee This module simplifies the creation of a Apigee resources (organization, environment groups, environment group attachments, environments, instances and instance attachments). diff --git a/modules/apigee/iam.tf b/modules/apigee/iam.tf index c942e6162..ee86dda9f 100644 --- a/modules/apigee/iam.tf +++ b/modules/apigee/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_apigee_environment_iam_binding" "authoritative" { for_each = merge(concat([for k1, v1 in var.environments : { for k2, v2 in v1.iam : "${k1}-${k2}" => { diff --git a/modules/apigee/main.tf b/modules/apigee/main.tf index 480d19feb..3ad1b93de 100644 --- a/modules/apigee/main.tf +++ b/modules/apigee/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { org_id = try(google_apigee_organization.organization[0].id, "organizations/${var.project_id}") org_name = try(google_apigee_organization.organization[0].name, var.project_id) diff --git a/modules/apigee/outputs.tf b/modules/apigee/outputs.tf index 34c58a25a..851b0ccb0 100644 --- a/modules/apigee/outputs.tf +++ b/modules/apigee/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "endpoint_attachment_hosts" { description = "Endpoint hosts." value = { for k, v in google_apigee_endpoint_attachment.endpoint_attachments : k => v.host } diff --git a/modules/apigee/variables.tf b/modules/apigee/variables.tf index e8d1ffb66..0a42e1d76 100644 --- a/modules/apigee/variables.tf +++ b/modules/apigee/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "addons_config" { description = "Addons configuration." type = object({ diff --git a/modules/apigee/versions.tf b/modules/apigee/versions.tf index eefd7d0ae..bfbd7735a 100644 --- a/modules/apigee/versions.tf +++ b/modules/apigee/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/app-engine/README.md b/modules/app-engine/README.md index 479cab592..58ad1fe7b 100644 --- a/modules/app-engine/README.md +++ b/modules/app-engine/README.md @@ -1,3 +1,19 @@ + + # App Engine This module deploys a Google Cloud App Engine Instance diff --git a/modules/app-engine/main.tf b/modules/app-engine/main.tf index 0089ec58d..462b72ff4 100644 --- a/modules/app-engine/main.tf +++ b/modules/app-engine/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/app_engine_application resource "google_app_engine_application" "app" { diff --git a/modules/app-engine/outputs.tf b/modules/app-engine/outputs.tf index 99ed20a74..dcb66386b 100644 --- a/modules/app-engine/outputs.tf +++ b/modules/app-engine/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "app_id" { value = google_app_engine_application.app.app_id diff --git a/modules/app-engine/variables.tf b/modules/app-engine/variables.tf index 6c5971e4d..7e44cfb42 100644 --- a/modules/app-engine/variables.tf +++ b/modules/app-engine/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "auth_domain" { description = "The domain to authenticate users with when using App Engine's User API." diff --git a/modules/artifact-registry/README.md b/modules/artifact-registry/README.md index f38217a25..1456c24b7 100644 --- a/modules/artifact-registry/README.md +++ b/modules/artifact-registry/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Artifact Registry Module This module simplifies the creation of repositories using Google Cloud Artifact Registry. diff --git a/modules/artifact-registry/iam.tf b/modules/artifact-registry/iam.tf index da0c78df7..87b51fa9e 100644 --- a/modules/artifact-registry/iam.tf +++ b/modules/artifact-registry/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - moved { from = google_artifact_registry_repository_iam_binding.bindings to = google_artifact_registry_repository_iam_binding.authoritative diff --git a/modules/artifact-registry/main.tf b/modules/artifact-registry/main.tf index a9ac681e3..19ac524ed 100644 --- a/modules/artifact-registry/main.tf +++ b/modules/artifact-registry/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { format_obj = one([for k, v in var.format : v if v != null]) format_string = one([for k, v in var.format : k if v != null]) diff --git a/modules/artifact-registry/outputs.tf b/modules/artifact-registry/outputs.tf index b471e6dbf..dd4be8e5a 100644 --- a/modules/artifact-registry/outputs.tf +++ b/modules/artifact-registry/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified repository id." value = google_artifact_registry_repository.registry.id diff --git a/modules/artifact-registry/variables-iam.tf b/modules/artifact-registry/variables-iam.tf index 1f7530abf..bf56699ed 100644 --- a/modules/artifact-registry/variables-iam.tf +++ b/modules/artifact-registry/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings locals { diff --git a/modules/artifact-registry/variables.tf b/modules/artifact-registry/variables.tf index 23b194a39..8350bfdb3 100644 --- a/modules/artifact-registry/variables.tf +++ b/modules/artifact-registry/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "cleanup_policies" { description = "Object containing details about the cleanup policies for an Artifact Registry repository." type = map(object({ diff --git a/modules/artifact-registry/versions.tf b/modules/artifact-registry/versions.tf index ad37b3723..e5e1b4f74 100644 --- a/modules/artifact-registry/versions.tf +++ b/modules/artifact-registry/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/beyondcorp/README.md b/modules/beyondcorp/README.md index d820bf184..ec4786e6b 100644 --- a/modules/beyondcorp/README.md +++ b/modules/beyondcorp/README.md @@ -1,3 +1,19 @@ + + # Beyondcorp This module simplifies the deployment and configuration of BeyondCorp. diff --git a/modules/beyondcorp/main.tf b/modules/beyondcorp/main.tf index 4ea4d9ce5..40ded00c8 100644 --- a/modules/beyondcorp/main.tf +++ b/modules/beyondcorp/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_access_context_manager_access_policy" "existing_policy" { parent = "organizations/${var.organization_id}" diff --git a/modules/beyondcorp/outputs.tf b/modules/beyondcorp/outputs.tf index aa63a3d87..bcc28e228 100644 --- a/modules/beyondcorp/outputs.tf +++ b/modules/beyondcorp/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "endpoint_name" { description = "Name of the endpoint that was created." diff --git a/modules/beyondcorp/provider.tf b/modules/beyondcorp/provider.tf index 1bcf54408..38a2dbc85 100644 --- a/modules/beyondcorp/provider.tf +++ b/modules/beyondcorp/provider.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ provider "google" { project = var.project_id diff --git a/modules/beyondcorp/variables.tf b/modules/beyondcorp/variables.tf index aa9a5276a..8fdc2ac49 100644 --- a/modules/beyondcorp/variables.tf +++ b/modules/beyondcorp/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "endpoint_name" { description = "Name for endpoint." diff --git a/modules/biglake-catalog/README.md b/modules/biglake-catalog/README.md index efb391ead..c96d6c387 100644 --- a/modules/biglake-catalog/README.md +++ b/modules/biglake-catalog/README.md @@ -1,3 +1,19 @@ + + # Biglake Catalog This module allows to create a BigLake Metastore with databases and corresponding tables in each database. diff --git a/modules/biglake-catalog/main.tf b/modules/biglake-catalog/main.tf index 055b71056..f3d4b3eaf 100644 --- a/modules/biglake-catalog/main.tf +++ b/modules/biglake-catalog/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { tables = merge([ for k1, v1 in var.databases : { diff --git a/modules/biglake-catalog/outputs.tf b/modules/biglake-catalog/outputs.tf index 76d73242d..cadcc30ee 100644 --- a/modules/biglake-catalog/outputs.tf +++ b/modules/biglake-catalog/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "catalog" { description = "Catalog." value = google_biglake_catalog.catalog diff --git a/modules/biglake-catalog/variables.tf b/modules/biglake-catalog/variables.tf index 131b0e4d9..ab1504793 100644 --- a/modules/biglake-catalog/variables.tf +++ b/modules/biglake-catalog/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "databases" { description = "Databases." type = map(object({ diff --git a/modules/bigquery-dataset/README.md b/modules/bigquery-dataset/README.md index 6ab90184c..8198e5d0d 100644 --- a/modules/bigquery-dataset/README.md +++ b/modules/bigquery-dataset/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Bigquery Module This module allows managing a single BigQuery dataset, including access configuration, tables and views. diff --git a/modules/bigquery-dataset/main.tf b/modules/bigquery-dataset/main.tf index 85b5ba51e..76a2e3748 100644 --- a/modules/bigquery-dataset/main.tf +++ b/modules/bigquery-dataset/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { access_domain = { for k, v in var.access : k => v if v.type == "domain" } access_group = { for k, v in var.access : k => v if v.type == "group" } diff --git a/modules/bigquery-dataset/outputs.tf b/modules/bigquery-dataset/outputs.tf index 9d056d59c..7d1cb4963 100644 --- a/modules/bigquery-dataset/outputs.tf +++ b/modules/bigquery-dataset/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "dataset" { description = "Dataset resource." value = google_bigquery_dataset.default diff --git a/modules/bigquery-dataset/tags.tf b/modules/bigquery-dataset/tags.tf index 55e9d33fe..f6d91b22d 100644 --- a/modules/bigquery-dataset/tags.tf +++ b/modules/bigquery-dataset/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_location_tag_binding" "binding" { for_each = var.tag_bindings parent = "//bigquery.googleapis.com/${google_bigquery_dataset.default.id}" diff --git a/modules/bigquery-dataset/variables.tf b/modules/bigquery-dataset/variables.tf index 1c3579cea..94c9888da 100644 --- a/modules/bigquery-dataset/variables.tf +++ b/modules/bigquery-dataset/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "access" { description = "Map of access rules with role and identity type. Keys are arbitrary and must match those in the `access_identities` variable, types are `domain`, `group`, `special_group`, `user`, `view`." type = map(object({ diff --git a/modules/bigquery-dataset/versions.tf b/modules/bigquery-dataset/versions.tf index 0d9a1d496..b7315c96b 100644 --- a/modules/bigquery-dataset/versions.tf +++ b/modules/bigquery-dataset/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/bigtable-instance/README.md b/modules/bigtable-instance/README.md index 42ad0975d..78361b393 100644 --- a/modules/bigtable-instance/README.md +++ b/modules/bigtable-instance/README.md @@ -1,3 +1,19 @@ + + # Google Cloud BigTable Module This module allows managing a single BigTable instance, including access configuration and tables. diff --git a/modules/bigtable-instance/main.tf b/modules/bigtable-instance/main.tf index 3aafaf261..849059d6d 100644 --- a/modules/bigtable-instance/main.tf +++ b/modules/bigtable-instance/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { gc_pairs = flatten([ for table, table_obj in var.tables : [ diff --git a/modules/bigtable-instance/outputs.tf b/modules/bigtable-instance/outputs.tf index 5cfabd6a7..e72e4d2e5 100644 --- a/modules/bigtable-instance/outputs.tf +++ b/modules/bigtable-instance/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified instance id." value = google_bigtable_instance.default.id diff --git a/modules/bigtable-instance/variables.tf b/modules/bigtable-instance/variables.tf index ca1fbb0e5..d7ac924e9 100644 --- a/modules/bigtable-instance/variables.tf +++ b/modules/bigtable-instance/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "clusters" { description = "Clusters to be created in the BigTable instance. Set more than one cluster to enable replication. If you set autoscaling, num_nodes will be ignored." nullable = false diff --git a/modules/bigtable-instance/versions.tf b/modules/bigtable-instance/versions.tf index 208040169..354a1f5cd 100644 --- a/modules/bigtable-instance/versions.tf +++ b/modules/bigtable-instance/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/billing-account/README.md b/modules/billing-account/README.md index 2d6a0e1c3..acd9409d0 100644 --- a/modules/billing-account/README.md +++ b/modules/billing-account/README.md @@ -1,3 +1,19 @@ + + # Billing Account Module This module allows managing resources and policies related to a billing account: diff --git a/modules/billing-account/budgets.tf b/modules/billing-account/budgets.tf index 2a66aee2b..af93dfbc2 100644 --- a/modules/billing-account/budgets.tf +++ b/modules/billing-account/budgets.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_monitoring_notification_channel" "default" { for_each = var.budget_notification_channels description = each.value.description diff --git a/modules/billing-account/factory.tf b/modules/billing-account/factory.tf index 097627e43..c3a8c6afb 100644 --- a/modules/billing-account/factory.tf +++ b/modules/billing-account/factory.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # any changes to this factory should be mirrored in the project factory locals { diff --git a/modules/billing-account/iam.tf b/modules/billing-account/iam.tf index 9d6704a86..9c2268478 100644 --- a/modules/billing-account/iam.tf +++ b/modules/billing-account/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/billing-account/logging.tf b/modules/billing-account/logging.tf index 9dcf7e69b..cc0fbd456 100644 --- a/modules/billing-account/logging.tf +++ b/modules/billing-account/logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Log sinks and supporting resources. locals { diff --git a/modules/billing-account/main.tf b/modules/billing-account/main.tf index f477cbb42..ab389708f 100644 --- a/modules/billing-account/main.tf +++ b/modules/billing-account/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_billing_project_info" "default" { for_each = toset(var.projects) billing_account = var.id diff --git a/modules/billing-account/outputs.tf b/modules/billing-account/outputs.tf index f8359c530..86e7d00d0 100644 --- a/modules/billing-account/outputs.tf +++ b/modules/billing-account/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "billing_budget_ids" { description = "Billing budget ids." value = { diff --git a/modules/billing-account/variables-iam.tf b/modules/billing-account/variables-iam.tf index 4299d4554..ab682e5d1 100644 --- a/modules/billing-account/variables-iam.tf +++ b/modules/billing-account/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/billing-account/variables.tf b/modules/billing-account/variables.tf index 2b4d1bfbc..8de9b3d78 100644 --- a/modules/billing-account/variables.tf +++ b/modules/billing-account/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "budget_notification_channels" { description = "Notification channels used by budget alerts." type = map(object({ diff --git a/modules/billing-account/versions.tf b/modules/billing-account/versions.tf index 8d38b2c51..ede28729d 100644 --- a/modules/billing-account/versions.tf +++ b/modules/billing-account/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/binauthz/README.md b/modules/binauthz/README.md index 400ba576c..40e821521 100644 --- a/modules/binauthz/README.md +++ b/modules/binauthz/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Binary Authroization Module This module simplifies the creation of a Binary Authorization policy, attestors and attestor IAM bindings. diff --git a/modules/binauthz/main.tf b/modules/binauthz/main.tf index 2c1af463a..c24ac615c 100644 --- a/modules/binauthz/main.tf +++ b/modules/binauthz/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_binary_authorization_policy" "policy" { project = var.project_id dynamic "admission_whitelist_patterns" { diff --git a/modules/binauthz/outputs.tf b/modules/binauthz/outputs.tf index 874f9ae6f..45e977341 100644 --- a/modules/binauthz/outputs.tf +++ b/modules/binauthz/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "attestors" { description = "Attestors." value = google_binary_authorization_attestor.attestors diff --git a/modules/binauthz/variables.tf b/modules/binauthz/variables.tf index edfafaafb..0a06591e0 100644 --- a/modules/binauthz/variables.tf +++ b/modules/binauthz/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "admission_whitelist_patterns" { description = "An image name pattern to allowlist." type = list(string) diff --git a/modules/binauthz/versions.tf b/modules/binauthz/versions.tf index 07adbdc12..5f440d435 100644 --- a/modules/binauthz/versions.tf +++ b/modules/binauthz/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/certificate-authority-service/README.md b/modules/certificate-authority-service/README.md index b99c87711..d59979389 100644 --- a/modules/certificate-authority-service/README.md +++ b/modules/certificate-authority-service/README.md @@ -1,3 +1,19 @@ + + # Certificate Authority Service (CAS) The module allows you to create one or more CAs and an optional CA pool. diff --git a/modules/certificate-authority-service/iam.tf b/modules/certificate-authority-service/iam.tf index ad2396776..dbdd12606 100644 --- a/modules/certificate-authority-service/iam.tf +++ b/modules/certificate-authority-service/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/certificate-authority-service/main.tf b/modules/certificate-authority-service/main.tf index d7f100dd8..59c20c905 100644 --- a/modules/certificate-authority-service/main.tf +++ b/modules/certificate-authority-service/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { pool_id = try( var.ca_pool_config.use_pool.id, diff --git a/modules/certificate-authority-service/outputs.tf b/modules/certificate-authority-service/outputs.tf index 56535c8c5..2b010f816 100644 --- a/modules/certificate-authority-service/outputs.tf +++ b/modules/certificate-authority-service/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "ca_chains" { description = "The CA chains in PEM format." value = { diff --git a/modules/certificate-authority-service/variables-iam.tf b/modules/certificate-authority-service/variables-iam.tf index 4299d4554..ab682e5d1 100644 --- a/modules/certificate-authority-service/variables-iam.tf +++ b/modules/certificate-authority-service/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/certificate-authority-service/variables.tf b/modules/certificate-authority-service/variables.tf index e5e1229c7..55a71a951 100644 --- a/modules/certificate-authority-service/variables.tf +++ b/modules/certificate-authority-service/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "ca_configs" { description = "The CA configurations." type = map(object({ diff --git a/modules/certificate-authority-service/versions.tf b/modules/certificate-authority-service/versions.tf index a16ef3da5..8db1dce6d 100644 --- a/modules/certificate-authority-service/versions.tf +++ b/modules/certificate-authority-service/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/certificate-manager/README.md b/modules/certificate-manager/README.md index 1e7c3cf46..d52ebf626 100644 --- a/modules/certificate-manager/README.md +++ b/modules/certificate-manager/README.md @@ -1,3 +1,19 @@ + + # Certificate manager This module allows you to create a certificate manager map and associated entries, certificates, DNS authorizations and issueance configs. Map and associated entries creation is optional. diff --git a/modules/certificate-manager/main.tf b/modules/certificate-manager/main.tf index e82248f9a..fc8045d73 100644 --- a/modules/certificate-manager/main.tf +++ b/modules/certificate-manager/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_certificate_manager_certificate_map" "map" { count = var.map == null ? 0 : 1 project = var.project_id diff --git a/modules/certificate-manager/outputs.tf b/modules/certificate-manager/outputs.tf index 1648593be..c328bc4d2 100644 --- a/modules/certificate-manager/outputs.tf +++ b/modules/certificate-manager/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "certificate_ids" { description = "Certificate ids." value = { for k, v in google_certificate_manager_certificate.certificates : k => v.id } diff --git a/modules/certificate-manager/variables.tf b/modules/certificate-manager/variables.tf index d70169278..5d9fbd8f1 100644 --- a/modules/certificate-manager/variables.tf +++ b/modules/certificate-manager/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "certificates" { description = "Certificates." type = map(object({ diff --git a/modules/certificate-manager/versions.tf b/modules/certificate-manager/versions.tf index f5b095d90..cd375e7b1 100644 --- a/modules/certificate-manager/versions.tf +++ b/modules/certificate-manager/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cis-log-alerts/README.md b/modules/cis-log-alerts/README.md index 139bf5bfb..2b8056321 100644 --- a/modules/cis-log-alerts/README.md +++ b/modules/cis-log-alerts/README.md @@ -1,3 +1,19 @@ + + # CIS Log Alerts Module This module provisions log-based alerts to satisfy the CIS Google Cloud Computing Foundation Benchmark requirements for monitoring and alerting. diff --git a/modules/cis-log-alerts/main.tf b/modules/cis-log-alerts/main.tf index 340ef8834..0daeebac4 100644 --- a/modules/cis-log-alerts/main.tf +++ b/modules/cis-log-alerts/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { alert_filters = { diff --git a/modules/cis-log-alerts/variables.tf b/modules/cis-log-alerts/variables.tf index 01a310127..61dfd292d 100644 --- a/modules/cis-log-alerts/variables.tf +++ b/modules/cis-log-alerts/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "alert_email" { description = "Alert email." diff --git a/modules/cis-log-metrics/README.md b/modules/cis-log-metrics/README.md index b8dba06ba..a45aec302 100644 --- a/modules/cis-log-metrics/README.md +++ b/modules/cis-log-metrics/README.md @@ -1,3 +1,19 @@ + + # CIS Log Metrics Module This module creates log-based metrics to satisfy the CIS Google Cloud Computing Foundation Benchmark requirements for monitoring and alerting. diff --git a/modules/cis-log-metrics/main.tf b/modules/cis-log-metrics/main.tf index 1b9dd31a8..f2b9adab7 100644 --- a/modules/cis-log-metrics/main.tf +++ b/modules/cis-log-metrics/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ locals { log_filter = { diff --git a/modules/cis-log-metrics/variables.tf b/modules/cis-log-metrics/variables.tf index b4261d6b7..e44fd1527 100644 --- a/modules/cis-log-metrics/variables.tf +++ b/modules/cis-log-metrics/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "project" { description = "Project ID." diff --git a/modules/cloud-config-container/README.md b/modules/cloud-config-container/README.md index b41490040..415b19d9b 100644 --- a/modules/cloud-config-container/README.md +++ b/modules/cloud-config-container/README.md @@ -1,3 +1,19 @@ + + # Instance Configuration via `cloud-config` This set of modules creates specialized [cloud-config](https://cloud.google.com/container-optimized-os/docs/how-to/run-container-instance#starting_a_docker_container_via_cloud-config) configurations, which are designed for use with [Container Optimized OS](https://cloud.google.com/container-optimized-os/docs) (the onprem module is the only exception) but can also be used as a basis for other image types or cloud providers. diff --git a/modules/cloud-config-container/bindplane/README.md b/modules/cloud-config-container/bindplane/README.md index 055b22f22..814423211 100644 --- a/modules/cloud-config-container/bindplane/README.md +++ b/modules/cloud-config-container/bindplane/README.md @@ -1,3 +1,19 @@ + + # Containerized Bindplane on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized [Bindplane](https://observiq.com/solutions) service on Container Optimized OS, using the official [Bindplane EE image](https://hub.docker.com/r/observiq/bindplane-ee) provided by observIQ and documented in the [official documentation page](https://observiq.com/download) when selecting "Docker" as target platform. diff --git a/modules/cloud-config-container/bindplane/cloud-config.yaml b/modules/cloud-config-container/bindplane/cloud-config.yaml index 885a0af40..706e69db6 100644 --- a/modules/cloud-config-container/bindplane/cloud-config.yaml +++ b/modules/cloud-config-container/bindplane/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # https://hub.docker.com/r/nginx/nginx/ # https://nginx.io/manual/toc/#installation diff --git a/modules/cloud-config-container/bindplane/main.tf b/modules/cloud-config-container/bindplane/main.tf index ab7ba0660..64d12c0c8 100644 --- a/modules/cloud-config-container/bindplane/main.tf +++ b/modules/cloud-config-container/bindplane/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cloud_config = templatefile(local.template, merge(var.config_variables, { bindplane_prometheus_image = var.bindplane_config.bindplane_prometheus_image diff --git a/modules/cloud-config-container/bindplane/outputs.tf b/modules/cloud-config-container/bindplane/outputs.tf index 56e082429..713997735 100644 --- a/modules/cloud-config-container/bindplane/outputs.tf +++ b/modules/cloud-config-container/bindplane/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = local.cloud_config diff --git a/modules/cloud-config-container/bindplane/variables.tf b/modules/cloud-config-container/bindplane/variables.tf index 92082aa8d..8bef6ad4f 100644 --- a/modules/cloud-config-container/bindplane/variables.tf +++ b/modules/cloud-config-container/bindplane/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "bindplane_config" { description = "Bindplane configurations." type = object({ diff --git a/modules/cloud-config-container/bindplane/versions.tf b/modules/cloud-config-container/bindplane/versions.tf index f6e661879..a46bd8a43 100644 --- a/modules/cloud-config-container/bindplane/versions.tf +++ b/modules/cloud-config-container/bindplane/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/coredns/README.md b/modules/cloud-config-container/coredns/README.md index c4f63a90b..f43bef25a 100644 --- a/modules/cloud-config-container/coredns/README.md +++ b/modules/cloud-config-container/coredns/README.md @@ -1,3 +1,19 @@ + + # Containerized CoreDNS on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized [CoreDNS](https://coredns.io/) service on Container Optimized OS, using the [official image](https://hub.docker.com/r/coredns/coredns/). diff --git a/modules/cloud-config-container/coredns/cloud-config.yaml b/modules/cloud-config-container/coredns/cloud-config.yaml index 4293c762b..07fbe65a5 100644 --- a/modules/cloud-config-container/coredns/cloud-config.yaml +++ b/modules/cloud-config-container/coredns/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # https://hub.docker.com/r/coredns/coredns/ # https://coredns.io/manual/toc/#installation diff --git a/modules/cloud-config-container/coredns/main.tf b/modules/cloud-config-container/coredns/main.tf index 789168ca4..a51c29e13 100644 --- a/modules/cloud-config-container/coredns/main.tf +++ b/modules/cloud-config-container/coredns/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cloud_config = templatefile(local.template, merge(var.config_variables, { corefile = templatefile(local.corefile, var.config_variables) diff --git a/modules/cloud-config-container/coredns/outputs.tf b/modules/cloud-config-container/coredns/outputs.tf index 7d8d41656..713997735 100644 --- a/modules/cloud-config-container/coredns/outputs.tf +++ b/modules/cloud-config-container/coredns/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = local.cloud_config diff --git a/modules/cloud-config-container/coredns/variables.tf b/modules/cloud-config-container/coredns/variables.tf index c323017fc..dc1831792 100644 --- a/modules/cloud-config-container/coredns/variables.tf +++ b/modules/cloud-config-container/coredns/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "cloud_config" { description = "Cloud config template path. If null default will be used." type = string diff --git a/modules/cloud-config-container/coredns/versions.tf b/modules/cloud-config-container/coredns/versions.tf index 982159d8c..dc3bb94fe 100644 --- a/modules/cloud-config-container/coredns/versions.tf +++ b/modules/cloud-config-container/coredns/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/cos-generic-metadata/README.md b/modules/cloud-config-container/cos-generic-metadata/README.md index 88073986d..0410127a7 100644 --- a/modules/cloud-config-container/cos-generic-metadata/README.md +++ b/modules/cloud-config-container/cos-generic-metadata/README.md @@ -1,3 +1,19 @@ + + # Generic cloud-init generator for Container Optimized OS This helper module manages a `cloud-config` configuration that can start a container on [Container Optimized OS](https://cloud.google.com/container-optimized-os/docs) (COS). Either a complete `cloud-config` template can be provided via the `cloud_config` variable with optional template variables via the `config_variables`, or a generic `cloud-config` can be generated based on typical parameters needed to start a container. diff --git a/modules/cloud-config-container/cos-generic-metadata/cloud-config.yaml b/modules/cloud-config-container/cos-generic-metadata/cloud-config.yaml index d34833635..32ba581c0 100644 --- a/modules/cloud-config-container/cos-generic-metadata/cloud-config.yaml +++ b/modules/cloud-config-container/cos-generic-metadata/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + %{ if length(users) > 0 ~} users: %{ for user in users ~} diff --git a/modules/cloud-config-container/cos-generic-metadata/main.tf b/modules/cloud-config-container/cos-generic-metadata/main.tf index eb807c5ae..438fa5601 100644 --- a/modules/cloud-config-container/cos-generic-metadata/main.tf +++ b/modules/cloud-config-container/cos-generic-metadata/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cloud_config = templatefile(local.template, merge(var.config_variables, { boot_commands = var.boot_commands diff --git a/modules/cloud-config-container/cos-generic-metadata/outputs.tf b/modules/cloud-config-container/cos-generic-metadata/outputs.tf index 7d8d41656..713997735 100644 --- a/modules/cloud-config-container/cos-generic-metadata/outputs.tf +++ b/modules/cloud-config-container/cos-generic-metadata/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = local.cloud_config diff --git a/modules/cloud-config-container/cos-generic-metadata/variables.tf b/modules/cloud-config-container/cos-generic-metadata/variables.tf index 022591649..285842524 100644 --- a/modules/cloud-config-container/cos-generic-metadata/variables.tf +++ b/modules/cloud-config-container/cos-generic-metadata/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "authenticate_gcr" { description = "Setup docker to pull images from private GCR. Requires at least one user since the token is stored in the home of the first user defined." type = bool diff --git a/modules/cloud-config-container/cos-generic-metadata/versions.tf b/modules/cloud-config-container/cos-generic-metadata/versions.tf index a8ee08475..8e6807b1e 100644 --- a/modules/cloud-config-container/cos-generic-metadata/versions.tf +++ b/modules/cloud-config-container/cos-generic-metadata/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/README.md b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/README.md index 76d1b19d4..389d6813f 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/README.md +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/README.md @@ -1,3 +1,19 @@ + + # Containerized Envoy as SNI dynamic forward proxy on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized [Envoy SNI Dynamic forward proxy]https://www.envoyproxy.io/docs/envoy/latest/configuration/listeners/network_filters/sni_dynamic_forward_proxy_filter) service on Container Optimized OS running on port 443. diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/files/envoy.yaml b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/files/envoy.yaml index d9ad5643b..92c95c7ba 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/files/envoy.yaml +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/files/envoy.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + admin: address: socket_address: diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/main.tf b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/main.tf index f0b7cdfb2..75190e756 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/main.tf +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - module "cos-envoy" { source = "../cos-generic-metadata" container_image = var.envoy_image diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/outputs.tf b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/outputs.tf index 417c73e7d..5753d0d4a 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/outputs.tf +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = module.cos-envoy.cloud_config diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/variables.tf b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/variables.tf index 3868a1742..f294cf217 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/variables.tf +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "envoy_image" { description = "Image." type = string diff --git a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tf b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tf index 29afe3375..3bbc09919 100644 --- a/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tf +++ b/modules/cloud-config-container/envoy-sni-dyn-fwd-proxy/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/envoy-traffic-director/README.md b/modules/cloud-config-container/envoy-traffic-director/README.md index caa0ec5ec..d14739f3a 100644 --- a/modules/cloud-config-container/envoy-traffic-director/README.md +++ b/modules/cloud-config-container/envoy-traffic-director/README.md @@ -1,3 +1,19 @@ + + # Containerized Envoy Proxy with Traffic Director on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized Envoy Proxy on Container Optimized OS connected to Traffic Director. The default configuration creates a reverse proxy exposed on the node's port 80. Traffic routing policies and management should be managed by other means via Traffic Director. diff --git a/modules/cloud-config-container/envoy-traffic-director/files/customize.sh b/modules/cloud-config-container/envoy-traffic-director/files/customize.sh index afd884c37..932c19238 100644 --- a/modules/cloud-config-container/envoy-traffic-director/files/customize.sh +++ b/modules/cloud-config-container/envoy-traffic-director/files/customize.sh @@ -1,11 +1,11 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + ENVOY_NODE_ID=$(uuidgen) ENVOY_ZONE=$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/zone | cut -f 4 -d '/') CONFIG_PROJECT_NUMBER=$(curl -s -H "Metadata-Flavor: Google" http://metadata/computeMetadata/v1/instance/network-interfaces/0/network | cut -f 2 -d '/') diff --git a/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml b/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml index 981837c5c..4eb49d7bf 100644 --- a/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml +++ b/modules/cloud-config-container/envoy-traffic-director/files/envoy.yaml @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + node: # The id must be in the following format: projects//networks//nodes/ id: "projects/CONFIG_PROJECT_NUMBER/networks/VPC_NETWORK_NAME/nodes/ENVOY_NODE_ID" diff --git a/modules/cloud-config-container/envoy-traffic-director/main.tf b/modules/cloud-config-container/envoy-traffic-director/main.tf index a6da7847d..fafc42b0f 100644 --- a/modules/cloud-config-container/envoy-traffic-director/main.tf +++ b/modules/cloud-config-container/envoy-traffic-director/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - module "cos-envoy-td" { source = "../cos-generic-metadata" diff --git a/modules/cloud-config-container/envoy-traffic-director/outputs.tf b/modules/cloud-config-container/envoy-traffic-director/outputs.tf index 4ce8d2473..97121cb70 100644 --- a/modules/cloud-config-container/envoy-traffic-director/outputs.tf +++ b/modules/cloud-config-container/envoy-traffic-director/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = module.cos-envoy-td.cloud_config diff --git a/modules/cloud-config-container/envoy-traffic-director/variables.tf b/modules/cloud-config-container/envoy-traffic-director/variables.tf index 82cdbbd6c..45bbfd3a9 100644 --- a/modules/cloud-config-container/envoy-traffic-director/variables.tf +++ b/modules/cloud-config-container/envoy-traffic-director/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "envoy_image" { description = "Envoy Proxy container image to use." type = string diff --git a/modules/cloud-config-container/envoy-traffic-director/versions.tf b/modules/cloud-config-container/envoy-traffic-director/versions.tf index db3e3463a..22057815d 100644 --- a/modules/cloud-config-container/envoy-traffic-director/versions.tf +++ b/modules/cloud-config-container/envoy-traffic-director/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/mysql/README.md b/modules/cloud-config-container/mysql/README.md index 31045804d..542944d23 100644 --- a/modules/cloud-config-container/mysql/README.md +++ b/modules/cloud-config-container/mysql/README.md @@ -1,3 +1,19 @@ + + # Containerized MySQL on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized [MySQL](https://www.mysql.com/) service on Container Optimized OS, using the [official image](https://hub.docker.com/_/mysql). diff --git a/modules/cloud-config-container/mysql/cloud-config.yaml b/modules/cloud-config-container/mysql/cloud-config.yaml index 7d7cd4d6e..f034e8e0c 100644 --- a/modules/cloud-config-container/mysql/cloud-config.yaml +++ b/modules/cloud-config-container/mysql/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + users: - name: mysql uid: 2000 diff --git a/modules/cloud-config-container/mysql/main.tf b/modules/cloud-config-container/mysql/main.tf index 4e44c4693..00c11ed54 100644 --- a/modules/cloud-config-container/mysql/main.tf +++ b/modules/cloud-config-container/mysql/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cloud_config = templatefile(local.template, merge(var.config_variables, { image = var.image diff --git a/modules/cloud-config-container/mysql/outputs.tf b/modules/cloud-config-container/mysql/outputs.tf index 7d8d41656..713997735 100644 --- a/modules/cloud-config-container/mysql/outputs.tf +++ b/modules/cloud-config-container/mysql/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = local.cloud_config diff --git a/modules/cloud-config-container/mysql/variables.tf b/modules/cloud-config-container/mysql/variables.tf index 52bb3dbbd..bca209c39 100644 --- a/modules/cloud-config-container/mysql/variables.tf +++ b/modules/cloud-config-container/mysql/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "cloud_config" { description = "Cloud config template path. If null default will be used." type = string diff --git a/modules/cloud-config-container/mysql/versions.tf b/modules/cloud-config-container/mysql/versions.tf index 7bafaf7a9..51a183bb1 100644 --- a/modules/cloud-config-container/mysql/versions.tf +++ b/modules/cloud-config-container/mysql/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/nginx-tls/README.md b/modules/cloud-config-container/nginx-tls/README.md index 15f2ffe0c..a37f6e4e0 100644 --- a/modules/cloud-config-container/nginx-tls/README.md +++ b/modules/cloud-config-container/nginx-tls/README.md @@ -1,3 +1,19 @@ + + # Containerized Nginx with self-signed TLS on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized Nginx with a self-signed TLS cert on Container Optimized OS. This can be useful if you need quickly a VM or instance group answering HTTPS for prototyping. diff --git a/modules/cloud-config-container/nginx-tls/assets/cloud-config.yaml b/modules/cloud-config-container/nginx-tls/assets/cloud-config.yaml index e6282e327..34ed51ca9 100644 --- a/modules/cloud-config-container/nginx-tls/assets/cloud-config.yaml +++ b/modules/cloud-config-container/nginx-tls/assets/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + users: - name: nginx uid: 2000 diff --git a/modules/cloud-config-container/nginx-tls/assets/customize.sh b/modules/cloud-config-container/nginx-tls/assets/customize.sh index 52ddbe779..a7d3c7859 100644 --- a/modules/cloud-config-container/nginx-tls/assets/customize.sh +++ b/modules/cloud-config-container/nginx-tls/assets/customize.sh @@ -1,11 +1,11 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + FQDN=$(\ curl -s -H "Metadata-Flavor: Google" \ http://metadata/computeMetadata/v1/instance/hostname) diff --git a/modules/cloud-config-container/nginx-tls/outputs.tf b/modules/cloud-config-container/nginx-tls/outputs.tf index 2acd83f64..3b8cb5c8a 100644 --- a/modules/cloud-config-container/nginx-tls/outputs.tf +++ b/modules/cloud-config-container/nginx-tls/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = templatefile("${path.module}/assets/cloud-config.yaml", { diff --git a/modules/cloud-config-container/nginx-tls/variables.tf b/modules/cloud-config-container/nginx-tls/variables.tf index f3cab5826..26735e61b 100644 --- a/modules/cloud-config-container/nginx-tls/variables.tf +++ b/modules/cloud-config-container/nginx-tls/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "files" { description = "Map of extra files to create on the instance, path as key. Owner and permissions will use defaults if null." type = map(object({ diff --git a/modules/cloud-config-container/nginx-tls/versions.tf b/modules/cloud-config-container/nginx-tls/versions.tf index f32e1767c..702730599 100644 --- a/modules/cloud-config-container/nginx-tls/versions.tf +++ b/modules/cloud-config-container/nginx-tls/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/nginx/README.md b/modules/cloud-config-container/nginx/README.md index dad3d55d9..51172b5d4 100644 --- a/modules/cloud-config-container/nginx/README.md +++ b/modules/cloud-config-container/nginx/README.md @@ -1,3 +1,19 @@ + + # Containerized Nginx on Container Optimized OS This module manages a `cloud-config` configuration that starts a containerized [Nginx](https://nginx.org/en/) service on Container Optimized OS, using the [hello demo image](https://hub.docker.com/r/nginxdemos/hello/). diff --git a/modules/cloud-config-container/nginx/cloud-config.yaml b/modules/cloud-config-container/nginx/cloud-config.yaml index bada8bc67..8db2c6ccd 100644 --- a/modules/cloud-config-container/nginx/cloud-config.yaml +++ b/modules/cloud-config-container/nginx/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # https://hub.docker.com/r/nginx/nginx/ # https://nginx.io/manual/toc/#installation diff --git a/modules/cloud-config-container/nginx/main.tf b/modules/cloud-config-container/nginx/main.tf index 39c59930f..ec5e06fb9 100644 --- a/modules/cloud-config-container/nginx/main.tf +++ b/modules/cloud-config-container/nginx/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cloud_config = templatefile(local.template, merge(var.config_variables, { etc_mount = ( diff --git a/modules/cloud-config-container/nginx/outputs.tf b/modules/cloud-config-container/nginx/outputs.tf index 7d8d41656..713997735 100644 --- a/modules/cloud-config-container/nginx/outputs.tf +++ b/modules/cloud-config-container/nginx/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = local.cloud_config diff --git a/modules/cloud-config-container/nginx/variables.tf b/modules/cloud-config-container/nginx/variables.tf index 973baff28..91eeb2526 100644 --- a/modules/cloud-config-container/nginx/variables.tf +++ b/modules/cloud-config-container/nginx/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "cloud_config" { description = "Cloud config template path. If null default will be used." type = string diff --git a/modules/cloud-config-container/nginx/versions.tf b/modules/cloud-config-container/nginx/versions.tf index 0fa7367cf..00ed0b132 100644 --- a/modules/cloud-config-container/nginx/versions.tf +++ b/modules/cloud-config-container/nginx/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-config-container/simple-nva/README.md b/modules/cloud-config-container/simple-nva/README.md index 0f3741fac..93794d421 100644 --- a/modules/cloud-config-container/simple-nva/README.md +++ b/modules/cloud-config-container/simple-nva/README.md @@ -1,3 +1,19 @@ + + # Google Simple NVA Module The module allows you to create Network Virtual Appliances (NVAs) as a stub for future appliances deployments. diff --git a/modules/cloud-config-container/simple-nva/cloud-config.yaml b/modules/cloud-config-container/simple-nva/cloud-config.yaml index b5553793c..80ec9cc41 100644 --- a/modules/cloud-config-container/simple-nva/cloud-config.yaml +++ b/modules/cloud-config-container/simple-nva/cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + write_files: %{ for path, data in files } - path: ${path} diff --git a/modules/cloud-config-container/simple-nva/files/ipprefix_by_netmask.sh b/modules/cloud-config-container/simple-nva/files/ipprefix_by_netmask.sh index 169438253..b17f72645 100644 --- a/modules/cloud-config-container/simple-nva/files/ipprefix_by_netmask.sh +++ b/modules/cloud-config-container/simple-nva/files/ipprefix_by_netmask.sh @@ -1,12 +1,12 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # https://stackoverflow.com/questions/50413579/bash-convert-netmask-in-cidr-notation c=0 x=0$(printf '%o' ${1//./ }) while [ $x -gt 0 ]; do diff --git a/modules/cloud-config-container/simple-nva/files/policy_based_routing.sh b/modules/cloud-config-container/simple-nva/files/policy_based_routing.sh index 008aa0b83..b6cd5ec59 100644 --- a/modules/cloud-config-container/simple-nva/files/policy_based_routing.sh +++ b/modules/cloud-config-container/simple-nva/files/policy_based_routing.sh @@ -1,12 +1,12 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + IF_NAME=$1 IF_NUMBER=$(echo $IF_NAME | sed -e s/eth//) IF_GW=$(curl http://metadata.google.internal/computeMetadata/v1/instance/network-interfaces/$IF_NUMBER/gateway -H "Metadata-Flavor: Google") diff --git a/modules/cloud-config-container/simple-nva/main.tf b/modules/cloud-config-container/simple-nva/main.tf index 7fb0f163f..5e17455c8 100644 --- a/modules/cloud-config-container/simple-nva/main.tf +++ b/modules/cloud-config-container/simple-nva/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _files = merge( { diff --git a/modules/cloud-config-container/simple-nva/outputs.tf b/modules/cloud-config-container/simple-nva/outputs.tf index 54942c1ad..713997735 100644 --- a/modules/cloud-config-container/simple-nva/outputs.tf +++ b/modules/cloud-config-container/simple-nva/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cloud_config" { description = "Rendered cloud-config file to be passed as user-data instance metadata." value = local.cloud_config diff --git a/modules/cloud-config-container/simple-nva/variables.tf b/modules/cloud-config-container/simple-nva/variables.tf index 20eecd0ab..bf301d14c 100644 --- a/modules/cloud-config-container/simple-nva/variables.tf +++ b/modules/cloud-config-container/simple-nva/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "cloud_config" { description = "Cloud config template path. If null default will be used." type = string diff --git a/modules/cloud-config-container/simple-nva/versions.tf b/modules/cloud-config-container/simple-nva/versions.tf index 254029325..d9c2d9b0c 100644 --- a/modules/cloud-config-container/simple-nva/versions.tf +++ b/modules/cloud-config-container/simple-nva/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-function-v1/README.md b/modules/cloud-function-v1/README.md index 6b427e654..2b8415f7e 100644 --- a/modules/cloud-function-v1/README.md +++ b/modules/cloud-function-v1/README.md @@ -1,3 +1,19 @@ + + # Cloud Function Module (V1) Cloud Function management, with support for IAM roles, optional bucket creation and bundle via GCS URI, local zip, or local source folder. diff --git a/modules/cloud-function-v1/bundle.tf b/modules/cloud-function-v1/bundle.tf index 661ece842..044ffcbf3 100644 --- a/modules/cloud-function-v1/bundle.tf +++ b/modules/cloud-function-v1/bundle.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bundle_type = ( startswith(var.bundle_config.path, "gs://") diff --git a/modules/cloud-function-v1/main.tf b/modules/cloud-function-v1/main.tf index e51ded541..8e3575ce2 100644 --- a/modules/cloud-function-v1/main.tf +++ b/modules/cloud-function-v1/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bucket = ( var.bucket_config == null diff --git a/modules/cloud-function-v1/outputs.tf b/modules/cloud-function-v1/outputs.tf index 16fddf15e..413360ab6 100644 --- a/modules/cloud-function-v1/outputs.tf +++ b/modules/cloud-function-v1/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "bucket" { description = "Bucket resource (only if auto-created)." value = try( diff --git a/modules/cloud-function-v1/variables.tf b/modules/cloud-function-v1/variables.tf index 98f1f10af..5be337f93 100644 --- a/modules/cloud-function-v1/variables.tf +++ b/modules/cloud-function-v1/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "bucket_config" { description = "Enable and configure auto-created bucket. Set fields to null to use defaults." type = object({ diff --git a/modules/cloud-function-v1/versions.tf b/modules/cloud-function-v1/versions.tf index f92cb3d4c..a2f14515c 100644 --- a/modules/cloud-function-v1/versions.tf +++ b/modules/cloud-function-v1/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-function-v2/README.md b/modules/cloud-function-v2/README.md index 366eac29d..aac66a1d6 100644 --- a/modules/cloud-function-v2/README.md +++ b/modules/cloud-function-v2/README.md @@ -1,3 +1,19 @@ + + # Cloud Function Module (v2) Cloud Function management, with support for IAM roles, optional bucket creation and bundle via GCS URI, local zip, or local source folder. diff --git a/modules/cloud-function-v2/bundle.tf b/modules/cloud-function-v2/bundle.tf index 661ece842..044ffcbf3 100644 --- a/modules/cloud-function-v2/bundle.tf +++ b/modules/cloud-function-v2/bundle.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bundle_type = ( startswith(var.bundle_config.path, "gs://") diff --git a/modules/cloud-function-v2/main.tf b/modules/cloud-function-v2/main.tf index 691720106..39e9d6030 100644 --- a/modules/cloud-function-v2/main.tf +++ b/modules/cloud-function-v2/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bucket = ( var.bucket_config == null diff --git a/modules/cloud-function-v2/outputs.tf b/modules/cloud-function-v2/outputs.tf index d2256d256..1b344380d 100644 --- a/modules/cloud-function-v2/outputs.tf +++ b/modules/cloud-function-v2/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "bucket" { description = "Bucket resource (only if auto-created)." value = try( diff --git a/modules/cloud-function-v2/variables.tf b/modules/cloud-function-v2/variables.tf index f51ba347d..4e7d980e5 100644 --- a/modules/cloud-function-v2/variables.tf +++ b/modules/cloud-function-v2/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "bucket_config" { description = "Enable and configure auto-created bucket. Set fields to null to use defaults." type = object({ diff --git a/modules/cloud-function-v2/versions.tf b/modules/cloud-function-v2/versions.tf index 49734d86e..679f236b3 100644 --- a/modules/cloud-function-v2/versions.tf +++ b/modules/cloud-function-v2/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-identity-group/README.md b/modules/cloud-identity-group/README.md index eee01c407..d030f38e7 100644 --- a/modules/cloud-identity-group/README.md +++ b/modules/cloud-identity-group/README.md @@ -1,3 +1,19 @@ + + # Cloud Identity Group Module This module allows creating a Cloud Identity group and assigning members. diff --git a/modules/cloud-identity-group/main.tf b/modules/cloud-identity-group/main.tf index 7e0455ef0..386df4a39 100644 --- a/modules/cloud-identity-group/main.tf +++ b/modules/cloud-identity-group/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_cloud_identity_group" "group" { display_name = var.display_name parent = var.customer_id diff --git a/modules/cloud-identity-group/outputs.tf b/modules/cloud-identity-group/outputs.tf index 95c31de20..ff85fc408 100644 --- a/modules/cloud-identity-group/outputs.tf +++ b/modules/cloud-identity-group/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified group id." value = google_cloud_identity_group.group.id diff --git a/modules/cloud-identity-group/variables.tf b/modules/cloud-identity-group/variables.tf index 221bcb849..2f1af65d7 100644 --- a/modules/cloud-identity-group/variables.tf +++ b/modules/cloud-identity-group/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "customer_id" { description = "Directory customer ID in the form customers/C0xxxxxxx." type = string diff --git a/modules/cloud-identity-group/versions.tf b/modules/cloud-identity-group/versions.tf index 4e8153ec5..4ef48401a 100644 --- a/modules/cloud-identity-group/versions.tf +++ b/modules/cloud-identity-group/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-run-v2-se/README.md b/modules/cloud-run-v2-se/README.md index 0a651c41a..8a57f9d70 100644 --- a/modules/cloud-run-v2-se/README.md +++ b/modules/cloud-run-v2-se/README.md @@ -1,3 +1,19 @@ + + # Cloud Run Module Cloud Run Services and Jobs, with support for IAM roles and Eventarc trigger creation. This module uses provider default value for `deletion_protection`, which means service is by default protected from removal (or reprovisioning). diff --git a/modules/cloud-run-v2-se/job.tf b/modules/cloud-run-v2-se/job.tf index bd2584f15..7f0390106 100644 --- a/modules/cloud-run-v2-se/job.tf +++ b/modules/cloud-run-v2-se/job.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_cloud_run_v2_job" "job" { count = var.create_job ? 1 : 0 provider = google-beta diff --git a/modules/cloud-run-v2-se/main.tf b/modules/cloud-run-v2-se/main.tf index 5e506de7c..d277db971 100644 --- a/modules/cloud-run-v2-se/main.tf +++ b/modules/cloud-run-v2-se/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { connector = ( var.vpc_connector_create != null diff --git a/modules/cloud-run-v2-se/outputs.tf b/modules/cloud-run-v2-se/outputs.tf index 0abcebd09..7ba38f4b5 100644 --- a/modules/cloud-run-v2-se/outputs.tf +++ b/modules/cloud-run-v2-se/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified job or service id." value = var.create_job ? google_cloud_run_v2_job.job[0].id : google_cloud_run_v2_service.service[0].id diff --git a/modules/cloud-run-v2-se/service.tf b/modules/cloud-run-v2-se/service.tf index 3ede9ce2a..f99583608 100644 --- a/modules/cloud-run-v2-se/service.tf +++ b/modules/cloud-run-v2-se/service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_cloud_run_v2_service" "service" { count = var.create_job ? 0 : 1 provider = google-beta diff --git a/modules/cloud-run-v2-se/tags.tf b/modules/cloud-run-v2-se/tags.tf index 001911d03..60bacbbe9 100644 --- a/modules/cloud-run-v2-se/tags.tf +++ b/modules/cloud-run-v2-se/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_location_tag_binding" "binding" { for_each = var.create_job ? {} : var.tag_bindings parent = ( diff --git a/modules/cloud-run-v2-se/variables-vpcconnector.tf b/modules/cloud-run-v2-se/variables-vpcconnector.tf index 199f2d5bc..34edafbe7 100644 --- a/modules/cloud-run-v2-se/variables-vpcconnector.tf +++ b/modules/cloud-run-v2-se/variables-vpcconnector.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "vpc_connector_create" { description = "Populate this to create a Serverless VPC Access connector." type = object({ diff --git a/modules/cloud-run-v2-se/variables.tf b/modules/cloud-run-v2-se/variables.tf index 38da2c70a..9ac22642e 100644 --- a/modules/cloud-run-v2-se/variables.tf +++ b/modules/cloud-run-v2-se/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "binary_authorization_mode" { description = "Mode for Binary Authorization. Can be 'default', 'policy', or 'disabled'" type = string diff --git a/modules/cloud-run-v2-se/versions.tf b/modules/cloud-run-v2-se/versions.tf index ee12f597a..151ad734d 100644 --- a/modules/cloud-run-v2-se/versions.tf +++ b/modules/cloud-run-v2-se/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-run-v2-se/vpcconnector.tf b/modules/cloud-run-v2-se/vpcconnector.tf index 50a7904c9..2900abaa6 100644 --- a/modules/cloud-run-v2-se/vpcconnector.tf +++ b/modules/cloud-run-v2-se/vpcconnector.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_vpc_access_connector" "connector" { count = var.vpc_connector_create != null ? 1 : 0 project = var.project_id diff --git a/modules/cloud-run-v2/README.md b/modules/cloud-run-v2/README.md index 0a651c41a..8a57f9d70 100644 --- a/modules/cloud-run-v2/README.md +++ b/modules/cloud-run-v2/README.md @@ -1,3 +1,19 @@ + + # Cloud Run Module Cloud Run Services and Jobs, with support for IAM roles and Eventarc trigger creation. This module uses provider default value for `deletion_protection`, which means service is by default protected from removal (or reprovisioning). diff --git a/modules/cloud-run-v2/job.tf b/modules/cloud-run-v2/job.tf index bd2584f15..7f0390106 100644 --- a/modules/cloud-run-v2/job.tf +++ b/modules/cloud-run-v2/job.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_cloud_run_v2_job" "job" { count = var.create_job ? 1 : 0 provider = google-beta diff --git a/modules/cloud-run-v2/main.tf b/modules/cloud-run-v2/main.tf index 5e506de7c..d277db971 100644 --- a/modules/cloud-run-v2/main.tf +++ b/modules/cloud-run-v2/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { connector = ( var.vpc_connector_create != null diff --git a/modules/cloud-run-v2/outputs.tf b/modules/cloud-run-v2/outputs.tf index 0abcebd09..7ba38f4b5 100644 --- a/modules/cloud-run-v2/outputs.tf +++ b/modules/cloud-run-v2/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified job or service id." value = var.create_job ? google_cloud_run_v2_job.job[0].id : google_cloud_run_v2_service.service[0].id diff --git a/modules/cloud-run-v2/service.tf b/modules/cloud-run-v2/service.tf index 8df793740..f6330eb8f 100644 --- a/modules/cloud-run-v2/service.tf +++ b/modules/cloud-run-v2/service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_cloud_run_v2_service" "service" { count = var.create_job ? 0 : 1 provider = google-beta diff --git a/modules/cloud-run-v2/tags.tf b/modules/cloud-run-v2/tags.tf index 001911d03..60bacbbe9 100644 --- a/modules/cloud-run-v2/tags.tf +++ b/modules/cloud-run-v2/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_location_tag_binding" "binding" { for_each = var.create_job ? {} : var.tag_bindings parent = ( diff --git a/modules/cloud-run-v2/variables-vpcconnector.tf b/modules/cloud-run-v2/variables-vpcconnector.tf index 199f2d5bc..34edafbe7 100644 --- a/modules/cloud-run-v2/variables-vpcconnector.tf +++ b/modules/cloud-run-v2/variables-vpcconnector.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "vpc_connector_create" { description = "Populate this to create a Serverless VPC Access connector." type = object({ diff --git a/modules/cloud-run-v2/variables.tf b/modules/cloud-run-v2/variables.tf index 951ad84c1..2e25ee845 100644 --- a/modules/cloud-run-v2/variables.tf +++ b/modules/cloud-run-v2/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "containers" { description = "Containers in name => attributes format." type = map(object({ diff --git a/modules/cloud-run-v2/versions.tf b/modules/cloud-run-v2/versions.tf index ee12f597a..151ad734d 100644 --- a/modules/cloud-run-v2/versions.tf +++ b/modules/cloud-run-v2/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-run-v2/vpcconnector.tf b/modules/cloud-run-v2/vpcconnector.tf index 50a7904c9..2900abaa6 100644 --- a/modules/cloud-run-v2/vpcconnector.tf +++ b/modules/cloud-run-v2/vpcconnector.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_vpc_access_connector" "connector" { count = var.vpc_connector_create != null ? 1 : 0 project = var.project_id diff --git a/modules/cloud-run/README.md b/modules/cloud-run/README.md index 9dbf641af..c48150c7e 100644 --- a/modules/cloud-run/README.md +++ b/modules/cloud-run/README.md @@ -1,3 +1,19 @@ + + # Cloud Run Module Cloud Run management, with support for IAM roles, revision annotations and optional Eventarc trigger creation. diff --git a/modules/cloud-run/main.tf b/modules/cloud-run/main.tf index f9c859a48..c626df95f 100644 --- a/modules/cloud-run/main.tf +++ b/modules/cloud-run/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _vpcaccess_annotation = ( local.vpc_connector_create diff --git a/modules/cloud-run/outputs.tf b/modules/cloud-run/outputs.tf index dcca33374..2b39a23e4 100644 --- a/modules/cloud-run/outputs.tf +++ b/modules/cloud-run/outputs.tf @@ -1,6 +1,6 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified service id." value = google_cloud_run_service.service.id diff --git a/modules/cloud-run/tags.tf b/modules/cloud-run/tags.tf index c988ed650..0934f0e77 100644 --- a/modules/cloud-run/tags.tf +++ b/modules/cloud-run/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_location_tag_binding" "binding" { for_each = var.tag_bindings parent = ( diff --git a/modules/cloud-run/variables.tf b/modules/cloud-run/variables.tf index 197864505..85fbcd7b0 100644 --- a/modules/cloud-run/variables.tf +++ b/modules/cloud-run/variables.tf @@ -1,6 +1,6 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "container_concurrency" { description = "Maximum allowed in-flight (concurrent) requests per container of the revision." type = string diff --git a/modules/cloud-run/versions.tf b/modules/cloud-run/versions.tf index c4901ba9c..343388893 100644 --- a/modules/cloud-run/versions.tf +++ b/modules/cloud-run/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/cloud-scheduler/README.md b/modules/cloud-scheduler/README.md index b52cd972f..b5d42cbda 100644 --- a/modules/cloud-scheduler/README.md +++ b/modules/cloud-scheduler/README.md @@ -1,3 +1,19 @@ + + # Cloud Schedulder Module This module manages the creation of a Cloud Scheduler Job diff --git a/modules/cloud-scheduler/main.tf b/modules/cloud-scheduler/main.tf index 569d6e760..4f4e55c33 100644 --- a/modules/cloud-scheduler/main.tf +++ b/modules/cloud-scheduler/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_cloud_scheduler_job" "job" { project = var.project_id diff --git a/modules/cloud-scheduler/outputs.tf b/modules/cloud-scheduler/outputs.tf index 19456522a..e992d2296 100644 --- a/modules/cloud-scheduler/outputs.tf +++ b/modules/cloud-scheduler/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "id" { description = "Job ID." diff --git a/modules/cloud-scheduler/variables.tf b/modules/cloud-scheduler/variables.tf index 5d4b69d2c..d0bdc206d 100644 --- a/modules/cloud-scheduler/variables.tf +++ b/modules/cloud-scheduler/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "description" { description = "Job description." diff --git a/modules/cloud-scheduler/versions.tf b/modules/cloud-scheduler/versions.tf index 2cea29229..fc10e46b3 100644 --- a/modules/cloud-scheduler/versions.tf +++ b/modules/cloud-scheduler/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v35.0.0 diff --git a/modules/cloudsql-instance/README.md b/modules/cloudsql-instance/README.md index 925e0a84a..3c6c1ba11 100644 --- a/modules/cloudsql-instance/README.md +++ b/modules/cloudsql-instance/README.md @@ -1,3 +1,19 @@ + + # Cloud SQL instance module This module manages the creation of Cloud SQL instances with potential read replicas in other regions. It can also create an initial set of users and databases via the `users` and `databases` parameters. diff --git a/modules/cloudsql-instance/main.tf b/modules/cloudsql-instance/main.tf index 5f6287cc8..c85a33356 100644 --- a/modules/cloudsql-instance/main.tf +++ b/modules/cloudsql-instance/main.tf @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + /** TO MOD * Copyright 2024 Google LLC * diff --git a/modules/cloudsql-instance/outputs.tf b/modules/cloudsql-instance/outputs.tf index a9f4b814d..066d3ba43 100644 --- a/modules/cloudsql-instance/outputs.tf +++ b/modules/cloudsql-instance/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _all_instances = merge( { primary = google_sql_database_instance.primary }, diff --git a/modules/cloudsql-instance/variables.tf b/modules/cloudsql-instance/variables.tf index 678d4f531..b78be61cc 100644 --- a/modules/cloudsql-instance/variables.tf +++ b/modules/cloudsql-instance/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/modules/cloudsql-instance/versions.tf b/modules/cloudsql-instance/versions.tf index f3b8efea0..d2a0d0c27 100644 --- a/modules/cloudsql-instance/versions.tf +++ b/modules/cloudsql-instance/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/compute-mig/README.md b/modules/compute-mig/README.md index 01aec0163..3f74bcd1c 100644 --- a/modules/compute-mig/README.md +++ b/modules/compute-mig/README.md @@ -1,3 +1,19 @@ + + # GCE Managed Instance Group module This module allows creating a managed instance group supporting one or more application versions via instance templates. Optionally, a health check and an autoscaler can be created, and the managed instance group can be configured to be stateful. diff --git a/modules/compute-mig/autoscaler.tf b/modules/compute-mig/autoscaler.tf index 9f8f9480c..5d9870253 100644 --- a/modules/compute-mig/autoscaler.tf +++ b/modules/compute-mig/autoscaler.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Autoscaler resource. locals { diff --git a/modules/compute-mig/health-check.tf b/modules/compute-mig/health-check.tf index 88f9f6ea7..e3c7b3b71 100644 --- a/modules/compute-mig/health-check.tf +++ b/modules/compute-mig/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. locals { diff --git a/modules/compute-mig/main.tf b/modules/compute-mig/main.tf index 12a8a9b5e..b2950f744 100644 --- a/modules/compute-mig/main.tf +++ b/modules/compute-mig/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { health_check = ( try(var.auto_healing_policies.health_check, null) == null diff --git a/modules/compute-mig/outputs.tf b/modules/compute-mig/outputs.tf index 389a8d296..f530f1868 100644 --- a/modules/compute-mig/outputs.tf +++ b/modules/compute-mig/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "autoscaler" { description = "Auto-created autoscaler resource." value = var.autoscaler_config == null ? null : try( diff --git a/modules/compute-mig/stateful-config.tf b/modules/compute-mig/stateful-config.tf index 0073fba67..888a6a06b 100644 --- a/modules/compute-mig/stateful-config.tf +++ b/modules/compute-mig/stateful-config.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Instance-level stateful configuration resources. resource "google_compute_per_instance_config" "default" { diff --git a/modules/compute-mig/variables.tf b/modules/compute-mig/variables.tf index 20864d186..774c5375d 100644 --- a/modules/compute-mig/variables.tf +++ b/modules/compute-mig/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "all_instances_config" { description = "Metadata and labels set to all instances in the group." type = object({ diff --git a/modules/compute-mig/versions.tf b/modules/compute-mig/versions.tf index 2cb0c4f60..8c3514e37 100644 --- a/modules/compute-mig/versions.tf +++ b/modules/compute-mig/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/compute-vm/README.md b/modules/compute-vm/README.md index 1928a8dce..74282085b 100644 --- a/modules/compute-vm/README.md +++ b/modules/compute-vm/README.md @@ -1,3 +1,19 @@ + + # Google Compute Engine VM module This module can operate in two distinct modes: diff --git a/modules/compute-vm/main.tf b/modules/compute-vm/main.tf index bf215af06..be0a9266a 100644 --- a/modules/compute-vm/main.tf +++ b/modules/compute-vm/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { advanced_mf = var.options.advanced_machine_features attached_disks = { diff --git a/modules/compute-vm/outputs.tf b/modules/compute-vm/outputs.tf index dc5a80266..ca3889571 100644 --- a/modules/compute-vm/outputs.tf +++ b/modules/compute-vm/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "external_ip" { description = "Instance main interface external IP addresses." value = ( diff --git a/modules/compute-vm/resource-policies.tf b/modules/compute-vm/resource-policies.tf index 743e1e335..15d22b542 100644 --- a/modules/compute-vm/resource-policies.tf +++ b/modules/compute-vm/resource-policies.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Resource policies. locals { diff --git a/modules/compute-vm/tags.tf b/modules/compute-vm/tags.tf index 4f494cb95..7133a9be7 100644 --- a/modules/compute-vm/tags.tf +++ b/modules/compute-vm/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Tag bindings. # TODO: re-implement once the following have been addressed in the provider diff --git a/modules/compute-vm/test.tfvars b/modules/compute-vm/test.tfvars index 5c60eab21..d42475e45 100644 --- a/modules/compute-vm/test.tfvars +++ b/modules/compute-vm/test.tfvars @@ -1,3 +1,19 @@ +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + project_id = "tf-playground-svpc-gce" zone = "europe-west8-b" name = "test-sa" diff --git a/modules/compute-vm/variables.tf b/modules/compute-vm/variables.tf index 6e84daa84..e3dc63b32 100644 --- a/modules/compute-vm/variables.tf +++ b/modules/compute-vm/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "attached_disk_defaults" { description = "Defaults for attached disks options." type = object({ diff --git a/modules/compute-vm/versions.tf b/modules/compute-vm/versions.tf index d2da71ccc..d8fa6f89d 100644 --- a/modules/compute-vm/versions.tf +++ b/modules/compute-vm/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/container-registry/README.md b/modules/container-registry/README.md index fd8b1c524..390e03210 100644 --- a/modules/container-registry/README.md +++ b/modules/container-registry/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Container Registry Module This module simplifies the creation of GCS buckets used by Google Container Registry. diff --git a/modules/container-registry/main.tf b/modules/container-registry/main.tf index 740975105..29ff9d8ec 100644 --- a/modules/container-registry/main.tf +++ b/modules/container-registry/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_container_registry" "registry" { project = var.project_id location = var.location diff --git a/modules/container-registry/outputs.tf b/modules/container-registry/outputs.tf index 1c2aeb4e4..8907cf56c 100644 --- a/modules/container-registry/outputs.tf +++ b/modules/container-registry/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified id of the registry bucket." value = google_container_registry.registry.id diff --git a/modules/container-registry/variables.tf b/modules/container-registry/variables.tf index f09274e44..2ddaf482e 100644 --- a/modules/container-registry/variables.tf +++ b/modules/container-registry/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings for topic in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/container-registry/versions.tf b/modules/container-registry/versions.tf index 37eb4e9a5..241821ece 100644 --- a/modules/container-registry/versions.tf +++ b/modules/container-registry/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/data-catalog-policy-tag/README.md b/modules/data-catalog-policy-tag/README.md index a9906ed63..66fede85e 100644 --- a/modules/data-catalog-policy-tag/README.md +++ b/modules/data-catalog-policy-tag/README.md @@ -1,3 +1,19 @@ + + # Data Catalog Module This module simplifies the creation of [Data Catalog](https://cloud.google.com/data-catalog) Policy Tags. Policy Tags can be used to configure [Bigquery column-level access](https://cloud.google.com/bigquery/docs/best-practices-policy-tags). diff --git a/modules/data-catalog-policy-tag/iam.tf b/modules/data-catalog-policy-tag/iam.tf index 4abd98a92..ee2b09fd1 100644 --- a/modules/data-catalog-policy-tag/iam.tf +++ b/modules/data-catalog-policy-tag/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Data Catalog Taxonomy IAM definition. locals { diff --git a/modules/data-catalog-policy-tag/main.tf b/modules/data-catalog-policy-tag/main.tf index 0ccd9235f..033bf326f 100644 --- a/modules/data-catalog-policy-tag/main.tf +++ b/modules/data-catalog-policy-tag/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Data Catalog Taxonomy definition locals { diff --git a/modules/data-catalog-policy-tag/outputs.tf b/modules/data-catalog-policy-tag/outputs.tf index 4f579c284..7c4b5a713 100644 --- a/modules/data-catalog-policy-tag/outputs.tf +++ b/modules/data-catalog-policy-tag/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified taxonomy id." value = google_data_catalog_taxonomy.default.id diff --git a/modules/data-catalog-policy-tag/variables-iam.tf b/modules/data-catalog-policy-tag/variables-iam.tf index fbe243d8d..733d2b50a 100644 --- a/modules/data-catalog-policy-tag/variables-iam.tf +++ b/modules/data-catalog-policy-tag/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam_by_principals" { description = "Authoritative IAM binding in {PRINCIPAL => [ROLES]} format. Principals need to be statically defined to avoid cycle errors. Merged internally with the `iam` variable." type = map(list(string)) diff --git a/modules/data-catalog-policy-tag/variables.tf b/modules/data-catalog-policy-tag/variables.tf index c294b086e..8c4f4c30a 100644 --- a/modules/data-catalog-policy-tag/variables.tf +++ b/modules/data-catalog-policy-tag/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "activated_policy_types" { description = "A list of policy types that are activated for this taxonomy." type = list(string) diff --git a/modules/data-catalog-policy-tag/versions.tf b/modules/data-catalog-policy-tag/versions.tf index e8a256022..5723bb1ae 100644 --- a/modules/data-catalog-policy-tag/versions.tf +++ b/modules/data-catalog-policy-tag/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/data-catalog-tag-template/README.md b/modules/data-catalog-tag-template/README.md index 73246cfc4..a301daeea 100644 --- a/modules/data-catalog-tag-template/README.md +++ b/modules/data-catalog-tag-template/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Data Catalog Tag Template Module This module allows managing [Data Catalog Tag Templates](https://cloud.google.com/data-catalog/docs/tags-and-tag-templates). diff --git a/modules/data-catalog-tag-template/iam.tf b/modules/data-catalog-tag-template/iam.tf index 68ffd30bc..114f3035d 100644 --- a/modules/data-catalog-tag-template/iam.tf +++ b/modules/data-catalog-tag-template/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings locals { diff --git a/modules/data-catalog-tag-template/main.tf b/modules/data-catalog-tag-template/main.tf index 1498dcb81..8e66a620a 100644 --- a/modules/data-catalog-tag-template/main.tf +++ b/modules/data-catalog-tag-template/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # read factory data _tt_path = try(pathexpand(var.factories_config.tag_templates), null) diff --git a/modules/data-catalog-tag-template/outputs.tf b/modules/data-catalog-tag-template/outputs.tf index 241db2335..d280534c9 100644 --- a/modules/data-catalog-tag-template/outputs.tf +++ b/modules/data-catalog-tag-template/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "data_catalog_tag_template_ids" { description = "Data catalog tag template ids." value = { diff --git a/modules/data-catalog-tag-template/variables.tf b/modules/data-catalog-tag-template/variables.tf index 3e72cc3e2..453ea67d0 100644 --- a/modules/data-catalog-tag-template/variables.tf +++ b/modules/data-catalog-tag-template/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "factories_config" { description = "Paths to data files and folders that enable factory functionality." type = object({ diff --git a/modules/data-catalog-tag-template/versions.tf b/modules/data-catalog-tag-template/versions.tf index bc785e12d..b58486908 100644 --- a/modules/data-catalog-tag-template/versions.tf +++ b/modules/data-catalog-tag-template/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/data-catalog-tag/README.md b/modules/data-catalog-tag/README.md index fa2f3379e..8c4198dd9 100644 --- a/modules/data-catalog-tag/README.md +++ b/modules/data-catalog-tag/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Data Catalog Tag Module This module allows managing [Data Catalog Tag](https://cloud.google.com/data-catalog/docs/tags-and-tag-templates) on GCP resources such as BigQuery Datasets, Tables or columns. diff --git a/modules/data-catalog-tag/main.tf b/modules/data-catalog-tag/main.tf index ee9d1b7cb..6adf5e7cd 100644 --- a/modules/data-catalog-tag/main.tf +++ b/modules/data-catalog-tag/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _factory_tag_template = { for f in try(fileset(var.factories_config.tags, "*.yaml"), []) : diff --git a/modules/data-catalog-tag/outputs.tf b/modules/data-catalog-tag/outputs.tf index 8ee99a901..fe323e583 100644 --- a/modules/data-catalog-tag/outputs.tf +++ b/modules/data-catalog-tag/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "data_catalog_tag_ids" { description = "Data catalog tag ids." value = { for k, v in google_data_catalog_tag.engine : k => v.id } diff --git a/modules/data-catalog-tag/variables.tf b/modules/data-catalog-tag/variables.tf index 7456ca90f..fbe87f53d 100644 --- a/modules/data-catalog-tag/variables.tf +++ b/modules/data-catalog-tag/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "factories_config" { description = "Paths to data files and folders that enable factory functionality." type = object({ diff --git a/modules/data-catalog-tag/versions.tf b/modules/data-catalog-tag/versions.tf index 83d791b33..a341f5722 100644 --- a/modules/data-catalog-tag/versions.tf +++ b/modules/data-catalog-tag/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/dataform-repository/README.md b/modules/dataform-repository/README.md index 47699dc1b..4116973b3 100644 --- a/modules/dataform-repository/README.md +++ b/modules/dataform-repository/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Dataform Repository module This module allows managing a dataform repository, allows adding IAM permissions. Also enables attaching a remote repository. diff --git a/modules/dataform-repository/iam.tf b/modules/dataform-repository/iam.tf index 5763e3c6c..8e309789b 100644 --- a/modules/dataform-repository/iam.tf +++ b/modules/dataform-repository/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_dataform_repository_iam_binding" "authoritative" { provider = google-beta for_each = var.iam diff --git a/modules/dataform-repository/main.tf b/modules/dataform-repository/main.tf index d37155876..17e0a6cab 100644 --- a/modules/dataform-repository/main.tf +++ b/modules/dataform-repository/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_dataform_repository" "default" { provider = google-beta project = var.project_id diff --git a/modules/dataform-repository/variables.tf b/modules/dataform-repository/variables.tf index 649507b2f..077702731 100644 --- a/modules/dataform-repository/variables.tf +++ b/modules/dataform-repository/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings in {ROLE => [MEMBERS]} format. Mutually exclusive with the access_* variables used for basic roles." type = map(list(string)) diff --git a/modules/dataform-repository/versions.tf b/modules/dataform-repository/versions.tf index 0251890a4..dc2f98802 100644 --- a/modules/dataform-repository/versions.tf +++ b/modules/dataform-repository/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/datafusion-se/README.md b/modules/datafusion-se/README.md index 0de6157c7..de931c0f5 100644 --- a/modules/datafusion-se/README.md +++ b/modules/datafusion-se/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Data Fusion Module This module allows simple management of ['Google Data Fusion'](https://cloud.google.com/data-fusion) instances. It supports creating Basic or Enterprise, public or private instances. diff --git a/modules/datafusion-se/main.tf b/modules/datafusion-se/main.tf index 402adf7aa..769264647 100644 --- a/modules/datafusion-se/main.tf +++ b/modules/datafusion-se/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/modules/datafusion-se/outputs.tf b/modules/datafusion-se/outputs.tf index 869e3e570..bb2c0d769 100644 --- a/modules/datafusion-se/outputs.tf +++ b/modules/datafusion-se/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified instance id." value = google_data_fusion_instance.default.id diff --git a/modules/datafusion-se/variables.tf b/modules/datafusion-se/variables.tf index be228cd0f..a79c45c98 100644 --- a/modules/datafusion-se/variables.tf +++ b/modules/datafusion-se/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - ############################################################################### # DtaFusion variables # ############################################################################### diff --git a/modules/datafusion-se/versions.tf b/modules/datafusion-se/versions.tf index 2cea29229..fc10e46b3 100644 --- a/modules/datafusion-se/versions.tf +++ b/modules/datafusion-se/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v35.0.0 diff --git a/modules/datafusion/README.md b/modules/datafusion/README.md index 03b65b7b2..97b04b1e1 100644 --- a/modules/datafusion/README.md +++ b/modules/datafusion/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Data Fusion Module This module allows simple management of ['Google Data Fusion'](https://cloud.google.com/data-fusion) instances. It supports creating Basic or Enterprise, public or private instances. diff --git a/modules/datafusion/main.tf b/modules/datafusion/main.tf index f6784dd97..901316124 100644 --- a/modules/datafusion/main.tf +++ b/modules/datafusion/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { prefix_length = 22 ip_allocation = ( diff --git a/modules/datafusion/outputs.tf b/modules/datafusion/outputs.tf index a7248c137..8d83b54e3 100644 --- a/modules/datafusion/outputs.tf +++ b/modules/datafusion/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified instance id." value = google_data_fusion_instance.default.id diff --git a/modules/datafusion/variables.tf b/modules/datafusion/variables.tf index 19d61f49c..822ce3587 100644 --- a/modules/datafusion/variables.tf +++ b/modules/datafusion/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - ############################################################################### # DtaFusion variables # ############################################################################### diff --git a/modules/datafusion/versions.tf b/modules/datafusion/versions.tf index f9fd6ae95..472afaa9c 100644 --- a/modules/datafusion/versions.tf +++ b/modules/datafusion/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/dataplex-datascan/README.md b/modules/dataplex-datascan/README.md index e36ded9ac..0e9abe2f7 100644 --- a/modules/dataplex-datascan/README.md +++ b/modules/dataplex-datascan/README.md @@ -1,3 +1,19 @@ + + # Dataplex DataScan This module manages the creation of Dataplex DataScan resources. diff --git a/modules/dataplex-datascan/factory.tf b/modules/dataplex-datascan/factory.tf index e76f9af78..e136828b6 100644 --- a/modules/dataplex-datascan/factory.tf +++ b/modules/dataplex-datascan/factory.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _factory_data = ( var.factories_config.data_quality_spec == null diff --git a/modules/dataplex-datascan/iam.tf b/modules/dataplex-datascan/iam.tf index dea671a95..b6410305b 100644 --- a/modules/dataplex-datascan/iam.tf +++ b/modules/dataplex-datascan/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _iam_principal_roles = distinct(flatten(values(var.iam_by_principals))) _iam_principals = { diff --git a/modules/dataplex-datascan/main.tf b/modules/dataplex-datascan/main.tf index 752fe7730..109549f5f 100644 --- a/modules/dataplex-datascan/main.tf +++ b/modules/dataplex-datascan/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { data_quality_spec = { post_scan_actions = try( diff --git a/modules/dataplex-datascan/outputs.tf b/modules/dataplex-datascan/outputs.tf index f314c57b9..997ac1d94 100644 --- a/modules/dataplex-datascan/outputs.tf +++ b/modules/dataplex-datascan/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "data_scan_id" { description = "Dataplex DataScan ID." value = google_dataplex_datascan.datascan.data_scan_id diff --git a/modules/dataplex-datascan/variables-iam.tf b/modules/dataplex-datascan/variables-iam.tf index 81a93f9ff..ec90cf574 100644 --- a/modules/dataplex-datascan/variables-iam.tf +++ b/modules/dataplex-datascan/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam_by_principals" { description = "Authoritative IAM binding in {PRINCIPAL => [ROLES]} format. Principals need to be statically defined to avoid cycle errors. Merged internally with the `iam` variable." type = map(list(string)) diff --git a/modules/dataplex-datascan/variables.tf b/modules/dataplex-datascan/variables.tf index 6c6a6a68e..fb916dde8 100644 --- a/modules/dataplex-datascan/variables.tf +++ b/modules/dataplex-datascan/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "data" { description = "The data source for DataScan. The source can be either a Dataplex `entity` or a BigQuery `resource`." type = object({ diff --git a/modules/dataplex-datascan/versions.tf b/modules/dataplex-datascan/versions.tf index 17ccc0709..c18ec86fa 100644 --- a/modules/dataplex-datascan/versions.tf +++ b/modules/dataplex-datascan/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/dataplex/README.md b/modules/dataplex/README.md index bc16be747..102272093 100644 --- a/modules/dataplex/README.md +++ b/modules/dataplex/README.md @@ -1,3 +1,19 @@ + + # Dataplex instance with lake, zone & assets This module manages the creation of Dataplex instance along with lake, zone & assets in single regions. diff --git a/modules/dataplex/main.tf b/modules/dataplex/main.tf index b78ca5481..efe61ef9a 100644 --- a/modules/dataplex/main.tf +++ b/modules/dataplex/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { prefix = var.prefix == null ? "" : "${var.prefix}-" zone_assets = flatten([ diff --git a/modules/dataplex/outputs.tf b/modules/dataplex/outputs.tf index 0da4fcc24..653e372e3 100644 --- a/modules/dataplex/outputs.tf +++ b/modules/dataplex/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "assets" { description = "Assets attached to the lake of Dataplex Lake." value = local.zone_assets[*] diff --git a/modules/dataplex/variables.tf b/modules/dataplex/variables.tf index fa4e65211..cc9d4fa4b 100644 --- a/modules/dataplex/variables.tf +++ b/modules/dataplex/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "Dataplex lake IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/dataplex/versions.tf b/modules/dataplex/versions.tf index edc25cb23..3b3497c12 100644 --- a/modules/dataplex/versions.tf +++ b/modules/dataplex/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/dataproc/README.md b/modules/dataproc/README.md index 6f7356a24..1a8d73e6a 100644 --- a/modules/dataproc/README.md +++ b/modules/dataproc/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Dataproc This module Manages a Google Cloud [Dataproc](https://cloud.google.com/dataproc) cluster resource, including IAM. diff --git a/modules/dataproc/iam.tf b/modules/dataproc/iam.tf index b3fc6aa47..ea08c52b3 100644 --- a/modules/dataproc/iam.tf +++ b/modules/dataproc/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/dataproc/main.tf b/modules/dataproc/main.tf index 02d9f21e4..74066640d 100644 --- a/modules/dataproc/main.tf +++ b/modules/dataproc/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Cloud Dataproc resource definition. resource "google_dataproc_cluster" "cluster" { diff --git a/modules/dataproc/outputs.tf b/modules/dataproc/outputs.tf index 27f47236d..42bcb915a 100644 --- a/modules/dataproc/outputs.tf +++ b/modules/dataproc/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Cloud Dataproc module output. # FIXME: 2024-03-08: broken in provider diff --git a/modules/dataproc/variables-iam.tf b/modules/dataproc/variables-iam.tf index 16f24608a..ffc563689 100644 --- a/modules/dataproc/variables-iam.tf +++ b/modules/dataproc/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam_by_principals" { description = "Authoritative IAM binding in {PRINCIPAL => [ROLES]} format. Principals need to be statically defined to avoid cycle errors. Merged internally with the `iam` variable." type = map(list(string)) diff --git a/modules/dataproc/variables.tf b/modules/dataproc/variables.tf index 3d39da00a..9d21812c5 100644 --- a/modules/dataproc/variables.tf +++ b/modules/dataproc/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "dataproc_config" { description = "Dataproc cluster config." type = object({ diff --git a/modules/dataproc/versions.tf b/modules/dataproc/versions.tf index 287772fa5..0c0c10d8c 100644 --- a/modules/dataproc/versions.tf +++ b/modules/dataproc/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/dns-response-policy/README.md b/modules/dns-response-policy/README.md index 010c09c5a..df7332a52 100644 --- a/modules/dns-response-policy/README.md +++ b/modules/dns-response-policy/README.md @@ -1,3 +1,19 @@ + + # Google Cloud DNS Response Policy This module allows management of a [Google Cloud DNS policy and its rules](https://cloud.google.com/dns/docs/zones/manage-response-policies). The policy can already exist and be referenced by name by setting the `policy_create` variable to `false`. diff --git a/modules/dns-response-policy/main.tf b/modules/dns-response-policy/main.tf index 0cee3ca14..996f2c50a 100644 --- a/modules/dns-response-policy/main.tf +++ b/modules/dns-response-policy/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _factory_data = ( var.factories_config.rules != null diff --git a/modules/dns-response-policy/outputs.tf b/modules/dns-response-policy/outputs.tf index cea4a5865..3214a521a 100644 --- a/modules/dns-response-policy/outputs.tf +++ b/modules/dns-response-policy/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified policy id." value = try(google_dns_response_policy.default[0].id, null) diff --git a/modules/dns-response-policy/variables.tf b/modules/dns-response-policy/variables.tf index 1c39260a9..665eeb6dd 100644 --- a/modules/dns-response-policy/variables.tf +++ b/modules/dns-response-policy/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "clusters" { description = "Map of GKE clusters to which this policy is applied in name => id format." type = map(string) diff --git a/modules/dns-response-policy/versions.tf b/modules/dns-response-policy/versions.tf index a198a21f5..9426a4966 100644 --- a/modules/dns-response-policy/versions.tf +++ b/modules/dns-response-policy/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/dns/README.md b/modules/dns/README.md index fe2fdb90c..1c0959316 100644 --- a/modules/dns/README.md +++ b/modules/dns/README.md @@ -1,3 +1,19 @@ + + # Google Cloud DNS Module This module allows simple management of Google Cloud DNS zones and records. It supports creating public, private, forwarding, peering, service directory and reverse-managed based zones. To create inbound/outbound server policies, please have a look at the [net-vpc](../net-vpc/README.md) module. diff --git a/modules/dns/main.tf b/modules/dns/main.tf index a13ea40f1..c1513f6c2 100644 --- a/modules/dns/main.tf +++ b/modules/dns/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { managed_zone = (var.zone_config == null ? data.google_dns_managed_zone.dns_managed_zone[0] diff --git a/modules/dns/outputs.tf b/modules/dns/outputs.tf index e84bf9768..7679edd93 100644 --- a/modules/dns/outputs.tf +++ b/modules/dns/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "dns_keys" { description = "DNSKEY and DS records of DNSSEC-signed managed zones." value = try(data.google_dns_keys.dns_keys[0], null) diff --git a/modules/dns/variables.tf b/modules/dns/variables.tf index 4dc10e2c5..509071782 100644 --- a/modules/dns/variables.tf +++ b/modules/dns/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "description" { description = "Domain description." type = string diff --git a/modules/dns/versions.tf b/modules/dns/versions.tf index da3fba6eb..5d3c9a33c 100644 --- a/modules/dns/versions.tf +++ b/modules/dns/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/endpoints/README.md b/modules/endpoints/README.md index 2b687966e..4efc8c606 100644 --- a/modules/endpoints/README.md +++ b/modules/endpoints/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Endpoints This module allows simple management of ['Google Cloud Endpoints'](https://cloud.google.com/endpoints/) services. It supports creating ['OpenAPI'](https://cloud.google.com/endpoints/docs/openapi) or ['gRPC'](https://cloud.google.com/endpoints/docs/grpc/about-grpc) endpoints. diff --git a/modules/endpoints/main.tf b/modules/endpoints/main.tf index dc8c61ba0..4b69d7420 100644 --- a/modules/endpoints/main.tf +++ b/modules/endpoints/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_endpoints_service" "default" { project = var.project_id service_name = var.service_name diff --git a/modules/endpoints/outputs.tf b/modules/endpoints/outputs.tf index 27fe3f60c..d068f3dfc 100644 --- a/modules/endpoints/outputs.tf +++ b/modules/endpoints/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "endpoints" { description = "A list of Endpoint objects." value = google_endpoints_service.default.endpoints diff --git a/modules/endpoints/variables.tf b/modules/endpoints/variables.tf index ffd621ec6..f596002fa 100644 --- a/modules/endpoints/variables.tf +++ b/modules/endpoints/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "grpc_config" { description = "The configuration for a gRPC endpoint. Either this or openapi_config must be specified." type = object({ diff --git a/modules/endpoints/versions.tf b/modules/endpoints/versions.tf index 9f4707a68..eb282a5f9 100644 --- a/modules/endpoints/versions.tf +++ b/modules/endpoints/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/firestore/README.md b/modules/firestore/README.md index 474bc3428..7119bbd70 100644 --- a/modules/firestore/README.md +++ b/modules/firestore/README.md @@ -1,3 +1,19 @@ + + # Firestore This module allows to crete a firestore datatabase, fields, indexes and documents. diff --git a/modules/firestore/main.tf b/modules/firestore/main.tf index 547d0171f..49427fe17 100644 --- a/modules/firestore/main.tf +++ b/modules/firestore/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { firestore_database_name = var.database_create ? google_firestore_database.firestore_database[0].name : var.database.name } diff --git a/modules/firestore/outputs.tf b/modules/firestore/outputs.tf index f72ba2c9c..528d581d3 100644 --- a/modules/firestore/outputs.tf +++ b/modules/firestore/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "firestore_database" { description = "Firestore database." value = var.database_create ? google_firestore_database.firestore_database[0] : null diff --git a/modules/firestore/variables.tf b/modules/firestore/variables.tf index 8a95d5336..f7f61fe44 100644 --- a/modules/firestore/variables.tf +++ b/modules/firestore/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "backup_schedule" { description = "Backup schedule." type = object({ diff --git a/modules/firestore/versions.tf b/modules/firestore/versions.tf index 23ea6bf29..e6e8cf1fa 100644 --- a/modules/firestore/versions.tf +++ b/modules/firestore/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/folder/README.md b/modules/folder/README.md index a1466e3d6..233ce728a 100644 --- a/modules/folder/README.md +++ b/modules/folder/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Folder Module This module allows the creation and management of folders, including support for IAM bindings, organization policies, and hierarchical firewall rules. diff --git a/modules/folder/iam.tf b/modules/folder/iam.tf index af80f2d5b..80e96308e 100644 --- a/modules/folder/iam.tf +++ b/modules/folder/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/folder/logging.tf b/modules/folder/logging.tf index 6941a4e7b..1d7d195ed 100644 --- a/modules/folder/logging.tf +++ b/modules/folder/logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Log sinks and supporting resources. locals { diff --git a/modules/folder/main.tf b/modules/folder/main.tf index ccb17616e..9e9451f66 100644 --- a/modules/folder/main.tf +++ b/modules/folder/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { folder_id = ( var.assured_workload_config == null diff --git a/modules/folder/organization-policies.tf b/modules/folder/organization-policies.tf index 45c4c8dbe..602deac96 100644 --- a/modules/folder/organization-policies.tf +++ b/modules/folder/organization-policies.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Folder-level organization policies. locals { diff --git a/modules/folder/outputs.tf b/modules/folder/outputs.tf index f9acdad40..a43bd7be2 100644 --- a/modules/folder/outputs.tf +++ b/modules/folder/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "assured_workload" { description = "Assured Workloads workload resource." value = try(google_assured_workloads_workload.folder[0], null) diff --git a/modules/folder/tags.tf b/modules/folder/tags.tf index 323886ef5..305129fe2 100644 --- a/modules/folder/tags.tf +++ b/modules/folder/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_tag_binding" "binding" { for_each = coalesce(var.tag_bindings, {}) parent = "//cloudresourcemanager.googleapis.com/${local.folder_id}" diff --git a/modules/folder/variables-iam.tf b/modules/folder/variables-iam.tf index ba2768b29..9081f5cfd 100644 --- a/modules/folder/variables-iam.tf +++ b/modules/folder/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/folder/variables-logging.tf b/modules/folder/variables-logging.tf index 79a47c9d5..b93cae40c 100644 --- a/modules/folder/variables-logging.tf +++ b/modules/folder/variables-logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "logging_data_access" { description = "Control activation of data access logs. The special 'allServices' key denotes configuration for all services." type = map(object({ diff --git a/modules/folder/variables.tf b/modules/folder/variables.tf index 7ff29ca55..1f01b78c0 100644 --- a/modules/folder/variables.tf +++ b/modules/folder/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "assured_workload_config" { description = "Create AssuredWorkloads folder instead of regular folder when value is provided. Incompatible with folder_create=false." type = object({ diff --git a/modules/folder/versions.tf b/modules/folder/versions.tf index 47ca67c06..87953bc13 100644 --- a/modules/folder/versions.tf +++ b/modules/folder/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/gcs/README.md b/modules/gcs/README.md index e4e55beff..73c73b7de 100644 --- a/modules/gcs/README.md +++ b/modules/gcs/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Storage Module diff --git a/modules/gcs/iam.tf b/modules/gcs/iam.tf index 69a4f62ac..0a0fa8145 100644 --- a/modules/gcs/iam.tf +++ b/modules/gcs/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings locals { diff --git a/modules/gcs/main.tf b/modules/gcs/main.tf index f67d5f791..a72d6a4b5 100644 --- a/modules/gcs/main.tf +++ b/modules/gcs/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _name = "${local.prefix}${lower(var.name)}" prefix = var.prefix == null ? "" : "${var.prefix}-" diff --git a/modules/gcs/managed-folders.tf b/modules/gcs/managed-folders.tf index b042c66ac..f8e54accf 100644 --- a/modules/gcs/managed-folders.tf +++ b/modules/gcs/managed-folders.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # ensure all keys end with / as required by # google_storage_managed_folder diff --git a/modules/gcs/outputs.tf b/modules/gcs/outputs.tf index 8ee19644a..81eaec06d 100644 --- a/modules/gcs/outputs.tf +++ b/modules/gcs/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "bucket" { description = "Bucket resource." value = one(google_storage_bucket.bucket) diff --git a/modules/gcs/tags.tf b/modules/gcs/tags.tf index 9432411ca..f44927a37 100644 --- a/modules/gcs/tags.tf +++ b/modules/gcs/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_location_tag_binding" "binding" { for_each = var.tag_bindings parent = "//storage.googleapis.com/projects/_/buckets/${local._name}" diff --git a/modules/gcs/variables.tf b/modules/gcs/variables.tf index da26b163a..aafdf9332 100644 --- a/modules/gcs/variables.tf +++ b/modules/gcs/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "autoclass" { description = "Enable autoclass to automatically transition objects to appropriate storage classes based on their access pattern. If set to true, storage_class must be set to STANDARD. Defaults to false." type = bool diff --git a/modules/gcs/versions.tf b/modules/gcs/versions.tf index 857a6b0ae..e0d6874eb 100644 --- a/modules/gcs/versions.tf +++ b/modules/gcs/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/gcve-private-cloud/README.md b/modules/gcve-private-cloud/README.md index 0461dc852..e0d9bf6fc 100644 --- a/modules/gcve-private-cloud/README.md +++ b/modules/gcve-private-cloud/README.md @@ -1,3 +1,19 @@ + + # Google Cloud VMWare Engine Private Cloud module The module manages one or more Google Cloud VMWare Engine Private Clouds. diff --git a/modules/gcve-private-cloud/main.tf b/modules/gcve-private-cloud/main.tf index 08e4eca7b..f82fa0638 100644 --- a/modules/gcve-private-cloud/main.tf +++ b/modules/gcve-private-cloud/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # aggregate clusters into a single map and add their parent private cloud additional_cluster_configs = merge([ diff --git a/modules/gcve-private-cloud/outputs.tf b/modules/gcve-private-cloud/outputs.tf index e42d98ce1..0119186ce 100644 --- a/modules/gcve-private-cloud/outputs.tf +++ b/modules/gcve-private-cloud/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "network" { description = "VMware engine network." value = local.vmw_network diff --git a/modules/gcve-private-cloud/variables.tf b/modules/gcve-private-cloud/variables.tf index cc184a82b..78856fc96 100644 --- a/modules/gcve-private-cloud/variables.tf +++ b/modules/gcve-private-cloud/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "prefix" { description = "Prefix used in resource names." type = string diff --git a/modules/gcve-private-cloud/versions.tf b/modules/gcve-private-cloud/versions.tf index a35ac750f..6b42c1072 100644 --- a/modules/gcve-private-cloud/versions.tf +++ b/modules/gcve-private-cloud/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/gke-cluster-autopilot/README.md b/modules/gke-cluster-autopilot/README.md index 5fb61ee9b..ab4c80fed 100644 --- a/modules/gke-cluster-autopilot/README.md +++ b/modules/gke-cluster-autopilot/README.md @@ -1,3 +1,19 @@ + + # GKE Autopilot cluster module This module offers a way to create and manage Google Kubernetes Engine (GKE) [Autopilot clusters](https://cloud.google.com/kubernetes-engine/docs/concepts/autopilot-overview). With its sensible default settings based on best practices and authors' experience as Google Cloud practitioners, the module accommodates for many common use cases out-of-the-box, without having to rely on verbose configuration. diff --git a/modules/gke-cluster-autopilot/main.tf b/modules/gke-cluster-autopilot/main.tf index 8a60908f5..9834b96da 100644 --- a/modules/gke-cluster-autopilot/main.tf +++ b/modules/gke-cluster-autopilot/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_container_cluster" "cluster" { provider = google-beta project = var.project_id diff --git a/modules/gke-cluster-autopilot/outputs.tf b/modules/gke-cluster-autopilot/outputs.tf index 81bdc2a0c..2fcf49d4b 100644 --- a/modules/gke-cluster-autopilot/outputs.tf +++ b/modules/gke-cluster-autopilot/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "ca_certificate" { description = "Public certificate of the cluster (base64-encoded)." value = google_container_cluster.cluster.master_auth[0].cluster_ca_certificate diff --git a/modules/gke-cluster-autopilot/variables.tf b/modules/gke-cluster-autopilot/variables.tf index 000496e8a..2119c5e94 100644 --- a/modules/gke-cluster-autopilot/variables.tf +++ b/modules/gke-cluster-autopilot/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "access_config" { description = "Control plane endpoint and nodes access configurations." type = object({ diff --git a/modules/gke-cluster-autopilot/versions.tf b/modules/gke-cluster-autopilot/versions.tf index c09096729..1a9762c68 100644 --- a/modules/gke-cluster-autopilot/versions.tf +++ b/modules/gke-cluster-autopilot/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/gke-cluster-standard-se/README.md b/modules/gke-cluster-standard-se/README.md index beebe43c7..4c7f720c0 100644 --- a/modules/gke-cluster-standard-se/README.md +++ b/modules/gke-cluster-standard-se/README.md @@ -1,3 +1,19 @@ + + # GKE Standard cluster module This module offers a way to create and manage Google Kubernetes Engine (GKE) [Standard clusters](https://cloud.google.com/kubernetes-engine/docs/concepts/choose-cluster-mode#why-standard). With its sensible default settings based on best practices and authors' experience as Google Cloud practitioners, the module accommodates for many common use cases out-of-the-box, without having to rely on verbose configuration. diff --git a/modules/gke-cluster-standard-se/main.tf b/modules/gke-cluster-standard-se/main.tf index 76e5024e1..d219589d8 100644 --- a/modules/gke-cluster-standard-se/main.tf +++ b/modules/gke-cluster-standard-se/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cas = var.cluster_autoscaling cas_apd = try(local.cas.auto_provisioning_defaults, null) diff --git a/modules/gke-cluster-standard-se/outputs.tf b/modules/gke-cluster-standard-se/outputs.tf index 0d7e86064..95f9d8442 100644 --- a/modules/gke-cluster-standard-se/outputs.tf +++ b/modules/gke-cluster-standard-se/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "ca_certificate" { description = "Public certificate of the cluster (base64-encoded)." value = google_container_cluster.cluster.master_auth[0].cluster_ca_certificate diff --git a/modules/gke-cluster-standard-se/variables.tf b/modules/gke-cluster-standard-se/variables.tf index 33452039f..52bb5313f 100644 --- a/modules/gke-cluster-standard-se/variables.tf +++ b/modules/gke-cluster-standard-se/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - variable "backup_configs" { description = "Configuration for Backup for GKE." type = object({ diff --git a/modules/gke-cluster-standard-se/versions.tf b/modules/gke-cluster-standard-se/versions.tf index f569ce5af..c019728ee 100644 --- a/modules/gke-cluster-standard-se/versions.tf +++ b/modules/gke-cluster-standard-se/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v35.0.0 diff --git a/modules/gke-cluster-standard/README.md b/modules/gke-cluster-standard/README.md index e6dbd08b3..383fa8217 100644 --- a/modules/gke-cluster-standard/README.md +++ b/modules/gke-cluster-standard/README.md @@ -1,3 +1,19 @@ + + # GKE Standard cluster module This module offers a way to create and manage Google Kubernetes Engine (GKE) [Standard clusters](https://cloud.google.com/kubernetes-engine/docs/concepts/choose-cluster-mode#why-standard). With its sensible default settings based on best practices and authors' experience as Google Cloud practitioners, the module accommodates for many common use cases out-of-the-box, without having to rely on verbose configuration. diff --git a/modules/gke-cluster-standard/main.tf b/modules/gke-cluster-standard/main.tf index eaa50464e..e0a5b948a 100644 --- a/modules/gke-cluster-standard/main.tf +++ b/modules/gke-cluster-standard/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { cas = var.cluster_autoscaling cas_apd = try(local.cas.auto_provisioning_defaults, null) diff --git a/modules/gke-cluster-standard/outputs.tf b/modules/gke-cluster-standard/outputs.tf index bc6c8e9a4..fe93753da 100644 --- a/modules/gke-cluster-standard/outputs.tf +++ b/modules/gke-cluster-standard/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "ca_certificate" { description = "Public certificate of the cluster (base64-encoded)." value = ( diff --git a/modules/gke-cluster-standard/variables.tf b/modules/gke-cluster-standard/variables.tf index ee2f7d8e7..3c0c57a25 100644 --- a/modules/gke-cluster-standard/variables.tf +++ b/modules/gke-cluster-standard/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "access_config" { description = "Control plane endpoint and nodes access configurations." type = object({ diff --git a/modules/gke-cluster-standard/versions.tf b/modules/gke-cluster-standard/versions.tf index e65879bb2..2abbb7475 100644 --- a/modules/gke-cluster-standard/versions.tf +++ b/modules/gke-cluster-standard/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/gke-hub/README.md b/modules/gke-hub/README.md index c5c7205f4..6f93392b9 100644 --- a/modules/gke-hub/README.md +++ b/modules/gke-hub/README.md @@ -1,3 +1,19 @@ + + # GKE hub module This module allows simplified creation and management of a GKE Hub object and its features for a given set of clusters. The given list of clusters will be registered inside the Hub and all the configured features will be activated. diff --git a/modules/gke-hub/main.tf b/modules/gke-hub/main.tf index 740890d6b..37e7ee59e 100644 --- a/modules/gke-hub/main.tf +++ b/modules/gke-hub/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _cluster_cm_config = flatten([ for template, clusters in var.configmanagement_clusters : [ diff --git a/modules/gke-hub/outputs.tf b/modules/gke-hub/outputs.tf index 2e74cdaf0..280eec4cd 100644 --- a/modules/gke-hub/outputs.tf +++ b/modules/gke-hub/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cluster_ids" { description = "Fully qualified ids of all clusters." value = { diff --git a/modules/gke-hub/variables.tf b/modules/gke-hub/variables.tf index a981f7de0..edb1bcc94 100644 --- a/modules/gke-hub/variables.tf +++ b/modules/gke-hub/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "clusters" { description = "Clusters members of this GKE Hub in name => id format." type = map(string) diff --git a/modules/gke-hub/versions.tf b/modules/gke-hub/versions.tf index 9244915f2..bbecdfd92 100644 --- a/modules/gke-hub/versions.tf +++ b/modules/gke-hub/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/gke-nodepool/README.md b/modules/gke-nodepool/README.md index 7a3f60251..43e635b7e 100644 --- a/modules/gke-nodepool/README.md +++ b/modules/gke-nodepool/README.md @@ -1,3 +1,19 @@ + + # GKE nodepool module This module allows simplified creation and management of individual GKE nodepools, setting sensible defaults (eg a service account is created for nodes if none is set) and allowing for less verbose usage in most use cases. diff --git a/modules/gke-nodepool/main.tf b/modules/gke-nodepool/main.tf index 4e2b00ca1..4c5873da5 100644 --- a/modules/gke-nodepool/main.tf +++ b/modules/gke-nodepool/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _image = coalesce(var.node_config.image_type, "-") image = { diff --git a/modules/gke-nodepool/outputs.tf b/modules/gke-nodepool/outputs.tf index 4102d9e11..f14d07868 100644 --- a/modules/gke-nodepool/outputs.tf +++ b/modules/gke-nodepool/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified nodepool id." value = google_container_node_pool.nodepool.id diff --git a/modules/gke-nodepool/variables.tf b/modules/gke-nodepool/variables.tf index bf0f69c21..0ce4d4abe 100644 --- a/modules/gke-nodepool/variables.tf +++ b/modules/gke-nodepool/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "cluster_id" { description = "Cluster id. Optional, but providing cluster_id is recommended to prevent cluster misconfiguration in some of the edge cases." type = string diff --git a/modules/gke-nodepool/versions.tf b/modules/gke-nodepool/versions.tf index 6ac171cbe..e8ba6ffd6 100644 --- a/modules/gke-nodepool/versions.tf +++ b/modules/gke-nodepool/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/iam-service-account/README.md b/modules/iam-service-account/README.md index e039fc87f..cc6ec1359 100644 --- a/modules/iam-service-account/README.md +++ b/modules/iam-service-account/README.md @@ -1,3 +1,19 @@ + + # Google Service Account Module This module allows simplified creation and management of one a service account and its IAM bindings. diff --git a/modules/iam-service-account/iam.tf b/modules/iam-service-account/iam.tf index 15ae1acca..e53fd6528 100644 --- a/modules/iam-service-account/iam.tf +++ b/modules/iam-service-account/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/iam-service-account/main.tf b/modules/iam-service-account/main.tf index 48eae52b5..400a1989b 100644 --- a/modules/iam-service-account/main.tf +++ b/modules/iam-service-account/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { name = split("@", var.name)[0] prefix = var.prefix == null ? "" : "${var.prefix}-" diff --git a/modules/iam-service-account/outputs.tf b/modules/iam-service-account/outputs.tf index 1ec73afb5..0dce2428f 100644 --- a/modules/iam-service-account/outputs.tf +++ b/modules/iam-service-account/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "email" { description = "Service account email." value = local.resource_email_static diff --git a/modules/iam-service-account/variables.tf b/modules/iam-service-account/variables.tf index c9d944536..83176b253 100644 --- a/modules/iam-service-account/variables.tf +++ b/modules/iam-service-account/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "description" { description = "Optional description." type = string diff --git a/modules/iam-service-account/versions.tf b/modules/iam-service-account/versions.tf index cdbbae8be..bbae9b635 100644 --- a/modules/iam-service-account/versions.tf +++ b/modules/iam-service-account/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/intrusion-detection-system/README.md b/modules/intrusion-detection-system/README.md index dced0cf96..fee0a1f15 100644 --- a/modules/intrusion-detection-system/README.md +++ b/modules/intrusion-detection-system/README.md @@ -1,3 +1,19 @@ + + # Intrusion Detection System Module This module implements Cloud Intrusion Detection System (Cloud IDS) resources, including IDS endpoints and endpoint attachments, for network threat detection. diff --git a/modules/intrusion-detection-system/main.tf b/modules/intrusion-detection-system/main.tf index 65a6008c5..029ade32d 100644 --- a/modules/intrusion-detection-system/main.tf +++ b/modules/intrusion-detection-system/main.tf @@ -1,17 +1,18 @@ -## Copyright 2023 Google LLC -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## https://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. - +#/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "google_compute_network" "vpc_network" { name = var.landing_network project = var.project diff --git a/modules/intrusion-detection-system/outputs.tf b/modules/intrusion-detection-system/outputs.tf index 1190cfb2e..b0b68dd4f 100644 --- a/modules/intrusion-detection-system/outputs.tf +++ b/modules/intrusion-detection-system/outputs.tf @@ -1,19 +1,18 @@ -## Copyright 2023 Google LLC -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## https://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. - - - +#/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "ids_endpoint_severity" { description = "IDS Endpoint severity" value = google_cloud_ids_endpoint.ids_endpoint.severity diff --git a/modules/intrusion-detection-system/variables.tf b/modules/intrusion-detection-system/variables.tf index 1deef7b38..0240869bd 100644 --- a/modules/intrusion-detection-system/variables.tf +++ b/modules/intrusion-detection-system/variables.tf @@ -1,17 +1,18 @@ -## Copyright 2023 Google LLC -## -## Licensed under the Apache License, Version 2.0 (the "License"); -## you may not use this file except in compliance with the License. -## You may obtain a copy of the License at -## -## https://www.apache.org/licenses/LICENSE-2.0 -## -## Unless required by applicable law or agreed to in writing, software -## distributed under the License is distributed on an "AS IS" BASIS, -## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -## See the License for the specific language governing permissions and -## limitations under the License. - +#/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "project_id" { description = "Id of the project you will like to use." type = string diff --git a/modules/intrusion-detection-system/versions.tf b/modules/intrusion-detection-system/versions.tf index 663146342..b1cf03e70 100644 --- a/modules/intrusion-detection-system/versions.tf +++ b/modules/intrusion-detection-system/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ terraform { required_version = ">= 1.7.4" diff --git a/modules/kms/README.md b/modules/kms/README.md index 59979af95..4bd335752 100644 --- a/modules/kms/README.md +++ b/modules/kms/README.md @@ -1,3 +1,19 @@ + + # Google KMS Module This module allows creating and managing KMS crypto keys and IAM bindings at both the keyring and crypto key level. An existing keyring can be used, or a new one can be created and managed by the module if needed. diff --git a/modules/kms/iam.tf b/modules/kms/iam.tf index 8ac17a567..e12d83820 100644 --- a/modules/kms/iam.tf +++ b/modules/kms/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { key_iam = flatten([ for k, v in var.keys : [ diff --git a/modules/kms/main.tf b/modules/kms/main.tf index d8b6819a6..620f2abef 100644 --- a/modules/kms/main.tf +++ b/modules/kms/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { keyring = ( var.keyring_create diff --git a/modules/kms/outputs.tf b/modules/kms/outputs.tf index 9346ce6b8..fe3411ef8 100644 --- a/modules/kms/outputs.tf +++ b/modules/kms/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified keyring id." value = local.keyring.id diff --git a/modules/kms/tags.tf b/modules/kms/tags.tf index eaee171de..3b2ab383e 100644 --- a/modules/kms/tags.tf +++ b/modules/kms/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_tags_location_tag_binding" "binding" { for_each = var.tag_bindings parent = "//cloudkms.googleapis.com/${local.keyring.id}" diff --git a/modules/kms/variables.tf b/modules/kms/variables.tf index fabaf0322..e8a1152a5 100644 --- a/modules/kms/variables.tf +++ b/modules/kms/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "Keyring IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/kms/versions.tf b/modules/kms/versions.tf index 2652f967b..9fa47d8a7 100644 --- a/modules/kms/versions.tf +++ b/modules/kms/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/logging-bucket/README.md b/modules/logging-bucket/README.md index 3f776e3bf..885d5870a 100644 --- a/modules/logging-bucket/README.md +++ b/modules/logging-bucket/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Logging Buckets Module This module manages [logging buckets](https://cloud.google.com/logging/docs/routing/overview#buckets) for a project, folder, organization or billing account. diff --git a/modules/logging-bucket/iam.tf b/modules/logging-bucket/iam.tf index 2f671b209..d149efc22 100644 --- a/modules/logging-bucket/iam.tf +++ b/modules/logging-bucket/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { view_iam = flatten([ for k, v in var.views : [ diff --git a/modules/logging-bucket/main.tf b/modules/logging-bucket/main.tf index 6fe84adf1..5c4a0c33c 100644 --- a/modules/logging-bucket/main.tf +++ b/modules/logging-bucket/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bucket = try( google_logging_project_bucket_config.bucket[0], diff --git a/modules/logging-bucket/outputs.tf b/modules/logging-bucket/outputs.tf index 276673a95..474c0886c 100644 --- a/modules/logging-bucket/outputs.tf +++ b/modules/logging-bucket/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified logging bucket id." value = local.bucket.id diff --git a/modules/logging-bucket/variables.tf b/modules/logging-bucket/variables.tf index 39b50bc24..f00bedace 100644 --- a/modules/logging-bucket/variables.tf +++ b/modules/logging-bucket/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "description" { description = "Human-readable description for the logging bucket." type = string diff --git a/modules/logging-bucket/versions.tf b/modules/logging-bucket/versions.tf index 9215f3860..09ba11282 100644 --- a/modules/logging-bucket/versions.tf +++ b/modules/logging-bucket/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/looker-core/README.md b/modules/looker-core/README.md index 330ee9b58..a5347dac2 100644 --- a/modules/looker-core/README.md +++ b/modules/looker-core/README.md @@ -1,3 +1,19 @@ + + # Looker Core module This module manages the creation of a [Looker Core instance](https://cloud.google.com/looker/docs/looker-core). diff --git a/modules/looker-core/main.tf b/modules/looker-core/main.tf index 8278fec6b..b59f6e8d1 100644 --- a/modules/looker-core/main.tf +++ b/modules/looker-core/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bootstrap_oauth_client = var.oauth_config.client_secret == null || var.oauth_config.client_id == null looker_instance_name = "${local.prefix}${var.name}" diff --git a/modules/looker-core/outputs.tf b/modules/looker-core/outputs.tf index 9c2af964f..25dde05d6 100644 --- a/modules/looker-core/outputs.tf +++ b/modules/looker-core/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "egress_public_ip" { description = "Public IP address of Looker instance for egress." value = google_looker_instance.looker.egress_public_ip diff --git a/modules/looker-core/variables.tf b/modules/looker-core/variables.tf index bc28c71d1..5bdbb9b90 100644 --- a/modules/looker-core/variables.tf +++ b/modules/looker-core/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "admin_settings" { description = "Looker Core admins settings." type = object({ diff --git a/modules/looker-core/versions.tf b/modules/looker-core/versions.tf index d83d9129a..1f00fd05c 100644 --- a/modules/looker-core/versions.tf +++ b/modules/looker-core/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/ncc-spoke-ra/README.md b/modules/ncc-spoke-ra/README.md index f20585242..11976c50f 100644 --- a/modules/ncc-spoke-ra/README.md +++ b/modules/ncc-spoke-ra/README.md @@ -1,3 +1,19 @@ + + # NCC Spoke RA Module This module allows management of NCC Spokes backed by Router Appliances. Network virtual appliances used as router appliances allow to connect an external network to Google Cloud by using a SD-WAN router or another appliance with BGP capabilities (_site-to-cloud_ connectivity). It is also possible to enable site-to-site data transfer, although this feature is not available in all regions, particularly not in EMEA. diff --git a/modules/ncc-spoke-ra/main.tf b/modules/ncc-spoke-ra/main.tf index 2ecaae6b9..a4d30adde 100644 --- a/modules/ncc-spoke-ra/main.tf +++ b/modules/ncc-spoke-ra/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { spoke_vms = [ for ras in var.router_appliances : { diff --git a/modules/ncc-spoke-ra/outputs.tf b/modules/ncc-spoke-ra/outputs.tf index 59ebc213d..6e34fb5ec 100644 --- a/modules/ncc-spoke-ra/outputs.tf +++ b/modules/ncc-spoke-ra/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "hub" { description = "NCC hub resource (only if auto-created)." value = try(google_network_connectivity_hub.hub[0], null) diff --git a/modules/ncc-spoke-ra/variables.tf b/modules/ncc-spoke-ra/variables.tf index 4b01ea168..41766a1c4 100644 --- a/modules/ncc-spoke-ra/variables.tf +++ b/modules/ncc-spoke-ra/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "data_transfer" { description = "Site-to-site data transfer feature, available only in some regions." type = bool diff --git a/modules/ncc-spoke-ra/versions.tf b/modules/ncc-spoke-ra/versions.tf index c2ed365e2..a2b8397bb 100644 --- a/modules/ncc-spoke-ra/versions.tf +++ b/modules/ncc-spoke-ra/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-address/README.md b/modules/net-address/README.md index 535b222ac..2a196b4fc 100644 --- a/modules/net-address/README.md +++ b/modules/net-address/README.md @@ -1,3 +1,19 @@ + + # Net Address Reservation Module This module allows reserving Compute Engine external, global, and internal addresses. The module also supports managing VPC network attachments from service projects. diff --git a/modules/net-address/main.tf b/modules/net-address/main.tf index e7c69413c..0eb9cb3c7 100644 --- a/modules/net-address/main.tf +++ b/modules/net-address/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_global_address" "global" { for_each = var.global_addresses project = var.project_id diff --git a/modules/net-address/outputs.tf b/modules/net-address/outputs.tf index 95ab38b11..88566de12 100644 --- a/modules/net-address/outputs.tf +++ b/modules/net-address/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "external_addresses" { description = "Allocated external addresses." value = { diff --git a/modules/net-address/psc.tf b/modules/net-address/psc.tf index 2047a935a..723923393 100644 --- a/modules/net-address/psc.tf +++ b/modules/net-address/psc.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { network_attachments = { for k, v in var.network_attachments : k => merge(v, { diff --git a/modules/net-address/variables.tf b/modules/net-address/variables.tf index fb3760b35..4bf0f962b 100644 --- a/modules/net-address/variables.tf +++ b/modules/net-address/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "external_addresses" { description = "Map of external addresses, keyed by name." type = map(object({ diff --git a/modules/net-address/versions.tf b/modules/net-address/versions.tf index 13c240817..a5bc39bfa 100644 --- a/modules/net-address/versions.tf +++ b/modules/net-address/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-cloudnat/README.md b/modules/net-cloudnat/README.md index 1a2b143a1..244070152 100644 --- a/modules/net-cloudnat/README.md +++ b/modules/net-cloudnat/README.md @@ -1,3 +1,19 @@ + + # Cloud NAT Module Simple Cloud NAT management, with optional router creation. diff --git a/modules/net-cloudnat/main.tf b/modules/net-cloudnat/main.tf index 2c6d8eb67..1608cf20c 100644 --- a/modules/net-cloudnat/main.tf +++ b/modules/net-cloudnat/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { router_name = ( var.router_create diff --git a/modules/net-cloudnat/outputs.tf b/modules/net-cloudnat/outputs.tf index 62f6afa88..d5de09873 100644 --- a/modules/net-cloudnat/outputs.tf +++ b/modules/net-cloudnat/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified NAT (router) id." value = google_compute_router_nat.nat.id diff --git a/modules/net-cloudnat/variables.tf b/modules/net-cloudnat/variables.tf index 88fe1cb83..223230421 100644 --- a/modules/net-cloudnat/variables.tf +++ b/modules/net-cloudnat/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "addresses" { description = "Optional list of external address self links." type = list(string) diff --git a/modules/net-cloudnat/versions.tf b/modules/net-cloudnat/versions.tf index 6b2dbfabb..61c7d27d4 100644 --- a/modules/net-cloudnat/versions.tf +++ b/modules/net-cloudnat/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-firewall-policy/README.md b/modules/net-firewall-policy/README.md index bffad88a8..fe89b7ad7 100644 --- a/modules/net-firewall-policy/README.md +++ b/modules/net-firewall-policy/README.md @@ -1,3 +1,19 @@ + + # Firewall Policies This module allows creation and management of two different firewall policy types: diff --git a/modules/net-firewall-policy/factory.tf b/modules/net-firewall-policy/factory.tf index 6cc15a5d1..eba7d023f 100644 --- a/modules/net-firewall-policy/factory.tf +++ b/modules/net-firewall-policy/factory.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _factory_egress_rules = coalesce( try( diff --git a/modules/net-firewall-policy/hierarchical.tf b/modules/net-firewall-policy/hierarchical.tf index 7969a559d..bab911041 100644 --- a/modules/net-firewall-policy/hierarchical.tf +++ b/modules/net-firewall-policy/hierarchical.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_firewall_policy" "hierarchical" { count = local.use_hierarchical ? 1 : 0 parent = var.parent_id diff --git a/modules/net-firewall-policy/main.tf b/modules/net-firewall-policy/main.tf index 093c8bf23..565fb3444 100644 --- a/modules/net-firewall-policy/main.tf +++ b/modules/net-firewall-policy/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _rules_egress = { for name, rule in merge(var.egress_rules) : diff --git a/modules/net-firewall-policy/net-global.tf b/modules/net-firewall-policy/net-global.tf index cf837c861..c85062620 100644 --- a/modules/net-firewall-policy/net-global.tf +++ b/modules/net-firewall-policy/net-global.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_network_firewall_policy" "net-global" { count = !local.use_hierarchical && !local.use_regional ? 1 : 0 project = var.parent_id diff --git a/modules/net-firewall-policy/net-regional.tf b/modules/net-firewall-policy/net-regional.tf index 281cbc4f9..b1618224d 100644 --- a/modules/net-firewall-policy/net-regional.tf +++ b/modules/net-firewall-policy/net-regional.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_region_network_firewall_policy" "net-regional" { count = !local.use_hierarchical && local.use_regional ? 1 : 0 project = var.parent_id diff --git a/modules/net-firewall-policy/outputs.tf b/modules/net-firewall-policy/outputs.tf index 589a06768..17e521814 100644 --- a/modules/net-firewall-policy/outputs.tf +++ b/modules/net-firewall-policy/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified firewall policy id." value = ( diff --git a/modules/net-firewall-policy/variables.tf b/modules/net-firewall-policy/variables.tf index bab3ee853..7b40cbfbb 100644 --- a/modules/net-firewall-policy/variables.tf +++ b/modules/net-firewall-policy/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "attachments" { description = "Ids of the resources to which this policy will be attached, in descriptive name => self link format. Specify folders or organization for hierarchical policy, VPCs for network policy." type = map(string) diff --git a/modules/net-firewall-policy/versions.tf b/modules/net-firewall-policy/versions.tf index f9a11f53d..4d9fae4de 100644 --- a/modules/net-firewall-policy/versions.tf +++ b/modules/net-firewall-policy/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-ipsec-over-interconnect/README.md b/modules/net-ipsec-over-interconnect/README.md index 8dd0a6471..7bdf8d6ec 100644 --- a/modules/net-ipsec-over-interconnect/README.md +++ b/modules/net-ipsec-over-interconnect/README.md @@ -1,3 +1,19 @@ + + # VLAN Attachment module This module allows for the provisioning of [HA VPN over Interconnect](https://cloud.google.com/network-connectivity/docs/interconnect/concepts/ha-vpn-interconnect?hl=it). Specifically, this module creates a VPN gateway, a configurable number of tunnels, and all the resources required to established IPSec and BGP with the peer routers. diff --git a/modules/net-ipsec-over-interconnect/main.tf b/modules/net-ipsec-over-interconnect/main.tf index 9fe30d15d..e974958c9 100644 --- a/modules/net-ipsec-over-interconnect/main.tf +++ b/modules/net-ipsec-over-interconnect/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { peer_gateway_id = ( var.peer_gateway_config.create diff --git a/modules/net-ipsec-over-interconnect/outputs.tf b/modules/net-ipsec-over-interconnect/outputs.tf index e0ba83fd2..a34c7b2bb 100644 --- a/modules/net-ipsec-over-interconnect/outputs.tf +++ b/modules/net-ipsec-over-interconnect/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - output "bgp_peers" { description = "BGP peer resources." value = { diff --git a/modules/net-ipsec-over-interconnect/variables.tf b/modules/net-ipsec-over-interconnect/variables.tf index 780d40b96..92340ab1c 100644 --- a/modules/net-ipsec-over-interconnect/variables.tf +++ b/modules/net-ipsec-over-interconnect/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "interconnect_attachments" { description = "VLAN attachments used by the VPN Gateway." type = object({ diff --git a/modules/net-ipsec-over-interconnect/versions.tf b/modules/net-ipsec-over-interconnect/versions.tf index 271c76d38..ba5767769 100644 --- a/modules/net-ipsec-over-interconnect/versions.tf +++ b/modules/net-ipsec-over-interconnect/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-lb-app-ext-regional/README.md b/modules/net-lb-app-ext-regional/README.md index 68d54d322..fe4c21cb5 100644 --- a/modules/net-lb-app-ext-regional/README.md +++ b/modules/net-lb-app-ext-regional/README.md @@ -1,3 +1,19 @@ + + # External Regional Application Load Balancer Module This module allows managing External Regional HTTP/HTTPS Application Load Balancers. It's designed to expose the full configuration of the underlying resources, and to facilitate common usage patterns by providing sensible defaults, and optionally managing prerequisite resources like health checks, instance groups, etc. diff --git a/modules/net-lb-app-ext-regional/backend-service.tf b/modules/net-lb-app-ext-regional/backend-service.tf index 75dc946f6..7c57e4a55 100644 --- a/modules/net-lb-app-ext-regional/backend-service.tf +++ b/modules/net-lb-app-ext-regional/backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend service resources. locals { diff --git a/modules/net-lb-app-ext-regional/groups.tf b/modules/net-lb-app-ext-regional/groups.tf index 285ca79a3..4955996c2 100644 --- a/modules/net-lb-app-ext-regional/groups.tf +++ b/modules/net-lb-app-ext-regional/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_instance_group" "default" { for_each = var.group_configs project = ( diff --git a/modules/net-lb-app-ext-regional/health-check.tf b/modules/net-lb-app-ext-regional/health-check.tf index f7dc9c178..747cb4b7a 100644 --- a/modules/net-lb-app-ext-regional/health-check.tf +++ b/modules/net-lb-app-ext-regional/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. resource "google_compute_region_health_check" "default" { diff --git a/modules/net-lb-app-ext-regional/main.tf b/modules/net-lb-app-ext-regional/main.tf index c009c4c2c..d898404ce 100644 --- a/modules/net-lb-app-ext-regional/main.tf +++ b/modules/net-lb-app-ext-regional/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { fwd_rule_ports = ( var.protocol == "HTTPS" ? [443] : coalesce(var.ports, [80]) diff --git a/modules/net-lb-app-ext-regional/negs.tf b/modules/net-lb-app-ext-regional/negs.tf index d712813d9..d5b1ea4e8 100644 --- a/modules/net-lb-app-ext-regional/negs.tf +++ b/modules/net-lb-app-ext-regional/negs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description NEG resources. locals { diff --git a/modules/net-lb-app-ext-regional/outputs.tf b/modules/net-lb-app-ext-regional/outputs.tf index 9c6773b02..3964c2e79 100644 --- a/modules/net-lb-app-ext-regional/outputs.tf +++ b/modules/net-lb-app-ext-regional/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "address" { description = "Forwarding rule address." value = google_compute_forwarding_rule.default.ip_address diff --git a/modules/net-lb-app-ext-regional/urlmap.tf b/modules/net-lb-app-ext-regional/urlmap.tf index f88cc0a38..9809da781 100644 --- a/modules/net-lb-app-ext-regional/urlmap.tf +++ b/modules/net-lb-app-ext-regional/urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URL map resources. locals { diff --git a/modules/net-lb-app-ext-regional/variables-backend-service.tf b/modules/net-lb-app-ext-regional/variables-backend-service.tf index c6b4d6586..c2e52ff9c 100644 --- a/modules/net-lb-app-ext-regional/variables-backend-service.tf +++ b/modules/net-lb-app-ext-regional/variables-backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend services variables. variable "backend_service_configs" { diff --git a/modules/net-lb-app-ext-regional/variables-health-check.tf b/modules/net-lb-app-ext-regional/variables-health-check.tf index be34d779d..b366db1f9 100644 --- a/modules/net-lb-app-ext-regional/variables-health-check.tf +++ b/modules/net-lb-app-ext-regional/variables-health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check variable. variable "health_check_configs" { diff --git a/modules/net-lb-app-ext-regional/variables-urlmap.tf b/modules/net-lb-app-ext-regional/variables-urlmap.tf index 385cf687e..4e66a7b2c 100644 --- a/modules/net-lb-app-ext-regional/variables-urlmap.tf +++ b/modules/net-lb-app-ext-regional/variables-urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URLmap variable. variable "urlmap_config" { diff --git a/modules/net-lb-app-ext-regional/variables.tf b/modules/net-lb-app-ext-regional/variables.tf index dbd701168..3b51b170d 100644 --- a/modules/net-lb-app-ext-regional/variables.tf +++ b/modules/net-lb-app-ext-regional/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "address" { description = "Optional IP address used for the forwarding rule." type = string diff --git a/modules/net-lb-app-ext-regional/versions.tf b/modules/net-lb-app-ext-regional/versions.tf index 11ef73e02..c18cdd655 100644 --- a/modules/net-lb-app-ext-regional/versions.tf +++ b/modules/net-lb-app-ext-regional/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-lb-app-ext/README.md b/modules/net-lb-app-ext/README.md index be91c2d0f..2d32d1198 100644 --- a/modules/net-lb-app-ext/README.md +++ b/modules/net-lb-app-ext/README.md @@ -1,3 +1,19 @@ + + # External Application Load Balancer Module This module allows managing Global HTTP/HTTPS Classic Load Balancers (GLBs). It's designed to expose the full configuration of the underlying resources, and to facilitate common usage patterns by providing sensible defaults, and optionally managing prerequisite resources like health checks, instance groups, etc. diff --git a/modules/net-lb-app-ext/backend-service.tf b/modules/net-lb-app-ext/backend-service.tf index 5093b2853..34f4f3856 100644 --- a/modules/net-lb-app-ext/backend-service.tf +++ b/modules/net-lb-app-ext/backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend service resources. locals { diff --git a/modules/net-lb-app-ext/backends.tf b/modules/net-lb-app-ext/backends.tf index 107e2be65..14f9cd931 100644 --- a/modules/net-lb-app-ext/backends.tf +++ b/modules/net-lb-app-ext/backends.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend groups and backend buckets resources. resource "google_compute_backend_bucket" "default" { diff --git a/modules/net-lb-app-ext/groups.tf b/modules/net-lb-app-ext/groups.tf index 285ca79a3..4955996c2 100644 --- a/modules/net-lb-app-ext/groups.tf +++ b/modules/net-lb-app-ext/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_instance_group" "default" { for_each = var.group_configs project = ( diff --git a/modules/net-lb-app-ext/health-check.tf b/modules/net-lb-app-ext/health-check.tf index 66ba58c56..8c0d844ec 100644 --- a/modules/net-lb-app-ext/health-check.tf +++ b/modules/net-lb-app-ext/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. resource "google_compute_health_check" "default" { diff --git a/modules/net-lb-app-ext/main.tf b/modules/net-lb-app-ext/main.tf index c440b3738..c4bf0b254 100644 --- a/modules/net-lb-app-ext/main.tf +++ b/modules/net-lb-app-ext/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { fwd_rule_names = { for k, v in var.forwarding_rules_config : diff --git a/modules/net-lb-app-ext/negs.tf b/modules/net-lb-app-ext/negs.tf index 290866c6f..a0969ab5b 100644 --- a/modules/net-lb-app-ext/negs.tf +++ b/modules/net-lb-app-ext/negs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description NEG resources. locals { diff --git a/modules/net-lb-app-ext/outputs.tf b/modules/net-lb-app-ext/outputs.tf index 0f1f31020..decb88186 100644 --- a/modules/net-lb-app-ext/outputs.tf +++ b/modules/net-lb-app-ext/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "address" { description = "Forwarding rule addresses." value = { diff --git a/modules/net-lb-app-ext/urlmap.tf b/modules/net-lb-app-ext/urlmap.tf index 3a6e8888b..de08413c5 100644 --- a/modules/net-lb-app-ext/urlmap.tf +++ b/modules/net-lb-app-ext/urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URL map resources. locals { diff --git a/modules/net-lb-app-ext/variables-backend-service.tf b/modules/net-lb-app-ext/variables-backend-service.tf index 88317c57f..b9073484a 100644 --- a/modules/net-lb-app-ext/variables-backend-service.tf +++ b/modules/net-lb-app-ext/variables-backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend services variables. variable "backend_service_configs" { diff --git a/modules/net-lb-app-ext/variables-health-check.tf b/modules/net-lb-app-ext/variables-health-check.tf index be34d779d..b366db1f9 100644 --- a/modules/net-lb-app-ext/variables-health-check.tf +++ b/modules/net-lb-app-ext/variables-health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check variable. variable "health_check_configs" { diff --git a/modules/net-lb-app-ext/variables-urlmap.tf b/modules/net-lb-app-ext/variables-urlmap.tf index e6ffe5551..c889461e1 100644 --- a/modules/net-lb-app-ext/variables-urlmap.tf +++ b/modules/net-lb-app-ext/variables-urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URLmap variable. variable "urlmap_config" { diff --git a/modules/net-lb-app-ext/variables.tf b/modules/net-lb-app-ext/variables.tf index f4717fd00..ee2d7a9f5 100644 --- a/modules/net-lb-app-ext/variables.tf +++ b/modules/net-lb-app-ext/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "backend_buckets_config" { description = "Backend buckets configuration." type = map(object({ diff --git a/modules/net-lb-app-ext/versions.tf b/modules/net-lb-app-ext/versions.tf index ea03a78cc..34cdd09f4 100644 --- a/modules/net-lb-app-ext/versions.tf +++ b/modules/net-lb-app-ext/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-lb-app-int-cross-region/README.md b/modules/net-lb-app-int-cross-region/README.md index 3e9fa5486..6a8f40126 100644 --- a/modules/net-lb-app-int-cross-region/README.md +++ b/modules/net-lb-app-int-cross-region/README.md @@ -1,3 +1,19 @@ + + # Cross-region Internal Application Load Balancer Module This module allows managing Cross-regional Internal HTTP/HTTPS Load Balancers (L7 ILBs). It's designed to expose the full configuration of the underlying resources, and to facilitate common usage patterns by providing sensible defaults, and optionally managing prerequisite resources like health checks, instance groups, etc. diff --git a/modules/net-lb-app-int-cross-region/backend-service.tf b/modules/net-lb-app-int-cross-region/backend-service.tf index 7b62f0a48..5334d8dc3 100644 --- a/modules/net-lb-app-int-cross-region/backend-service.tf +++ b/modules/net-lb-app-int-cross-region/backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend service resources. locals { diff --git a/modules/net-lb-app-int-cross-region/groups.tf b/modules/net-lb-app-int-cross-region/groups.tf index 53ba6b27f..519fd719c 100644 --- a/modules/net-lb-app-int-cross-region/groups.tf +++ b/modules/net-lb-app-int-cross-region/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_instance_group" "default" { for_each = var.group_configs project = ( diff --git a/modules/net-lb-app-int-cross-region/health-check.tf b/modules/net-lb-app-int-cross-region/health-check.tf index 66ba58c56..8c0d844ec 100644 --- a/modules/net-lb-app-int-cross-region/health-check.tf +++ b/modules/net-lb-app-int-cross-region/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. resource "google_compute_health_check" "default" { diff --git a/modules/net-lb-app-int-cross-region/main.tf b/modules/net-lb-app-int-cross-region/main.tf index a46e01829..5088ed2ad 100644 --- a/modules/net-lb-app-int-cross-region/main.tf +++ b/modules/net-lb-app-int-cross-region/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # we need keys in the endpoint type to address issue #1055 _neg_endpoints = flatten([ diff --git a/modules/net-lb-app-int-cross-region/outputs.tf b/modules/net-lb-app-int-cross-region/outputs.tf index 0d2b136f4..1a3c1fc6e 100644 --- a/modules/net-lb-app-int-cross-region/outputs.tf +++ b/modules/net-lb-app-int-cross-region/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "addresses" { description = "Forwarding rule address." value = { for k, v in google_compute_global_forwarding_rule.forwarding_rules : k => v.ip_address } diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/README.md b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/README.md index 1bdd5a9a6..fe2ce263a 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/README.md +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/README.md @@ -1,3 +1,19 @@ + + # Cross-region internal Application Load Balancer with VM instance group backends This recipe shows an actual usage scenario for the [cross-region internal application load balancer](../README.md) by implementing the [example provided in the GCP documentation](https://cloud.google.com/load-balancing/docs/l7-internal/setting-up-l7-cross-reg-internal). diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/instances.tf b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/instances.tf index 32bf10095..ec8381965 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/instances.tf +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/instances.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Instance-related locals and resources. locals { diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/main.tf b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/main.tf index 237eb606b..432a0b530 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/main.tf +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Load balancer and VPC resources. locals { diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/nginx-cloud-config.yaml b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/nginx-cloud-config.yaml index 7817eb606..232e655dd 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/nginx-cloud-config.yaml +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/nginx-cloud-config.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2022 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # https://hub.docker.com/r/nginx/nginx/ # https://nginx.io/manual/toc/#installation diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/outputs.tf b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/outputs.tf index f0f70880a..1583b509b 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/outputs.tf +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "instances" { description = "Instances details." value = { diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/region_shortnames.tf b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/region_shortnames.tf index 291cfce56..9f2958f19 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/region_shortnames.tf +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/region_shortnames.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Region shortnames via locals. # adapted from FAST networking stages diff --git a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/variables.tf b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/variables.tf index e9cef8d68..6e0cdebe5 100644 --- a/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/variables.tf +++ b/modules/net-lb-app-int-cross-region/recipe-cross-reg-int-app-lb-vm-dns/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "dns_config" { description = "DNS configuration." type = object({ diff --git a/modules/net-lb-app-int-cross-region/urlmap.tf b/modules/net-lb-app-int-cross-region/urlmap.tf index 62ccd9a92..169dc7d3a 100644 --- a/modules/net-lb-app-int-cross-region/urlmap.tf +++ b/modules/net-lb-app-int-cross-region/urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URL map resources. locals { diff --git a/modules/net-lb-app-int-cross-region/variables-backend-service.tf b/modules/net-lb-app-int-cross-region/variables-backend-service.tf index 0b92c7849..fb28eb1eb 100644 --- a/modules/net-lb-app-int-cross-region/variables-backend-service.tf +++ b/modules/net-lb-app-int-cross-region/variables-backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend services variables. variable "backend_service_configs" { diff --git a/modules/net-lb-app-int-cross-region/variables-health-check.tf b/modules/net-lb-app-int-cross-region/variables-health-check.tf index a51994ecf..b04ca6e30 100644 --- a/modules/net-lb-app-int-cross-region/variables-health-check.tf +++ b/modules/net-lb-app-int-cross-region/variables-health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check variable. variable "health_check_configs" { diff --git a/modules/net-lb-app-int-cross-region/variables-urlmap.tf b/modules/net-lb-app-int-cross-region/variables-urlmap.tf index ee48b7df0..961908e57 100644 --- a/modules/net-lb-app-int-cross-region/variables-urlmap.tf +++ b/modules/net-lb-app-int-cross-region/variables-urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URLmap variable. variable "urlmap_config" { diff --git a/modules/net-lb-app-int-cross-region/variables.tf b/modules/net-lb-app-int-cross-region/variables.tf index b707057a0..8cd416a62 100644 --- a/modules/net-lb-app-int-cross-region/variables.tf +++ b/modules/net-lb-app-int-cross-region/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "addresses" { description = "Optional IP address used for the forwarding rule." type = map(string) diff --git a/modules/net-lb-app-int-cross-region/versions.tf b/modules/net-lb-app-int-cross-region/versions.tf index 6af7a3288..2d9fdbb4a 100644 --- a/modules/net-lb-app-int-cross-region/versions.tf +++ b/modules/net-lb-app-int-cross-region/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-lb-app-int/README.md b/modules/net-lb-app-int/README.md index 87eaeab54..d3eb9cbea 100644 --- a/modules/net-lb-app-int/README.md +++ b/modules/net-lb-app-int/README.md @@ -1,3 +1,19 @@ + + # Internal Application Load Balancer Module This module allows managing Internal HTTP/HTTPS Load Balancers (L7 ILBs). It's designed to expose the full configuration of the underlying resources, and to facilitate common usage patterns by providing sensible defaults, and optionally managing prerequisite resources like health checks, instance groups, etc. diff --git a/modules/net-lb-app-int/backend-service.tf b/modules/net-lb-app-int/backend-service.tf index d4f5a8dee..0ca0f1502 100644 --- a/modules/net-lb-app-int/backend-service.tf +++ b/modules/net-lb-app-int/backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend service resources. locals { diff --git a/modules/net-lb-app-int/groups.tf b/modules/net-lb-app-int/groups.tf index 53ba6b27f..519fd719c 100644 --- a/modules/net-lb-app-int/groups.tf +++ b/modules/net-lb-app-int/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_instance_group" "default" { for_each = var.group_configs project = ( diff --git a/modules/net-lb-app-int/health-check.tf b/modules/net-lb-app-int/health-check.tf index 66ba58c56..8c0d844ec 100644 --- a/modules/net-lb-app-int/health-check.tf +++ b/modules/net-lb-app-int/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. resource "google_compute_health_check" "default" { diff --git a/modules/net-lb-app-int/main.tf b/modules/net-lb-app-int/main.tf index 6a3e10521..b8ce4b76a 100644 --- a/modules/net-lb-app-int/main.tf +++ b/modules/net-lb-app-int/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # we need keys in the endpoint type to address issue #1055 _neg_endpoints = flatten([ diff --git a/modules/net-lb-app-int/outputs.tf b/modules/net-lb-app-int/outputs.tf index 103cc0ed1..28319be88 100644 --- a/modules/net-lb-app-int/outputs.tf +++ b/modules/net-lb-app-int/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "address" { description = "Forwarding rule address." value = google_compute_forwarding_rule.default.ip_address diff --git a/modules/net-lb-app-int/urlmap.tf b/modules/net-lb-app-int/urlmap.tf index d680beb03..e8216a744 100644 --- a/modules/net-lb-app-int/urlmap.tf +++ b/modules/net-lb-app-int/urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URL map resources. locals { diff --git a/modules/net-lb-app-int/variables-backend-service.tf b/modules/net-lb-app-int/variables-backend-service.tf index 9340becf9..36c0ac134 100644 --- a/modules/net-lb-app-int/variables-backend-service.tf +++ b/modules/net-lb-app-int/variables-backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend services variables. variable "backend_service_configs" { diff --git a/modules/net-lb-app-int/variables-health-check.tf b/modules/net-lb-app-int/variables-health-check.tf index a51994ecf..b04ca6e30 100644 --- a/modules/net-lb-app-int/variables-health-check.tf +++ b/modules/net-lb-app-int/variables-health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check variable. variable "health_check_configs" { diff --git a/modules/net-lb-app-int/variables-urlmap.tf b/modules/net-lb-app-int/variables-urlmap.tf index ee48b7df0..961908e57 100644 --- a/modules/net-lb-app-int/variables-urlmap.tf +++ b/modules/net-lb-app-int/variables-urlmap.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description URLmap variable. variable "urlmap_config" { diff --git a/modules/net-lb-app-int/variables.tf b/modules/net-lb-app-int/variables.tf index d3311fbe3..424cfde06 100644 --- a/modules/net-lb-app-int/variables.tf +++ b/modules/net-lb-app-int/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "address" { description = "Optional IP address used for the forwarding rule." type = string diff --git a/modules/net-lb-app-int/versions.tf b/modules/net-lb-app-int/versions.tf index 601ed8bf2..447feb972 100644 --- a/modules/net-lb-app-int/versions.tf +++ b/modules/net-lb-app-int/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-lb-ext/README.md b/modules/net-lb-ext/README.md index 1d45eadbe..283949bee 100644 --- a/modules/net-lb-ext/README.md +++ b/modules/net-lb-ext/README.md @@ -1,3 +1,19 @@ + + # External Passthrough Network Load Balancer Module This module allows managing a GCE Network Load Balancer and integrates the forwarding rule, regional backend, and optional health check resources. It's designed to be a simple match for the [`compute-vm`](../compute-vm) module, which can be used to manage instance templates and instance groups. diff --git a/modules/net-lb-ext/groups.tf b/modules/net-lb-ext/groups.tf index 3389fb17d..e704a2232 100644 --- a/modules/net-lb-ext/groups.tf +++ b/modules/net-lb-ext/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Optional instance group resources. resource "google_compute_instance_group" "default" { diff --git a/modules/net-lb-ext/health-check.tf b/modules/net-lb-ext/health-check.tf index 250058056..e0e3b7126 100644 --- a/modules/net-lb-ext/health-check.tf +++ b/modules/net-lb-ext/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. locals { diff --git a/modules/net-lb-ext/main.tf b/modules/net-lb-ext/main.tf index 27dd19675..ba29ea165 100644 --- a/modules/net-lb-ext/main.tf +++ b/modules/net-lb-ext/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { bs_conntrack = var.backend_service_config.connection_tracking bs_failover = var.backend_service_config.failover_config diff --git a/modules/net-lb-ext/outputs.tf b/modules/net-lb-ext/outputs.tf index fd11e67f1..673310530 100644 --- a/modules/net-lb-ext/outputs.tf +++ b/modules/net-lb-ext/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "backend_service" { description = "Backend resource." value = google_compute_region_backend_service.default diff --git a/modules/net-lb-ext/variables.tf b/modules/net-lb-ext/variables.tf index a048cd178..49febe443 100644 --- a/modules/net-lb-ext/variables.tf +++ b/modules/net-lb-ext/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "backend_service_config" { description = "Backend service level configuration." type = object({ diff --git a/modules/net-lb-ext/versions.tf b/modules/net-lb-ext/versions.tf index ff32e2fee..79ccc8788 100644 --- a/modules/net-lb-ext/versions.tf +++ b/modules/net-lb-ext/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-lb-int/README.md b/modules/net-lb-int/README.md index 5b6de2fa3..92f69c691 100644 --- a/modules/net-lb-int/README.md +++ b/modules/net-lb-int/README.md @@ -1,3 +1,19 @@ + + # Internal Passthrough Network Load Balancer Module This module allows managing a GCE Internal Load Balancer and integrates the forwarding rule, regional backend, and optional health check resources. It's designed to be a simple match for the [`compute-vm`](../compute-vm) module, which can be used to manage instance templates and instance groups. diff --git a/modules/net-lb-int/groups.tf b/modules/net-lb-int/groups.tf index 736dfc6f5..42fb2dbc5 100644 --- a/modules/net-lb-int/groups.tf +++ b/modules/net-lb-int/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Optional instance group resources. resource "google_compute_instance_group" "default" { diff --git a/modules/net-lb-int/health-check.tf b/modules/net-lb-int/health-check.tf index 1e0bd193b..ff784ae9d 100644 --- a/modules/net-lb-int/health-check.tf +++ b/modules/net-lb-int/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. locals { diff --git a/modules/net-lb-int/main.tf b/modules/net-lb-int/main.tf index 1b1996a57..64e0480a4 100644 --- a/modules/net-lb-int/main.tf +++ b/modules/net-lb-int/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - locals { bs_conntrack = var.backend_service_config.connection_tracking bs_failover = var.backend_service_config.failover_config diff --git a/modules/net-lb-int/outputs.tf b/modules/net-lb-int/outputs.tf index 29c925443..9f26e8eab 100644 --- a/modules/net-lb-int/outputs.tf +++ b/modules/net-lb-int/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "backend_service" { description = "Backend resource." sensitive = true diff --git a/modules/net-lb-int/recipe-ilb-next-hop/README.md b/modules/net-lb-int/recipe-ilb-next-hop/README.md index 4234b2579..d874d8841 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/README.md +++ b/modules/net-lb-int/recipe-ilb-next-hop/README.md @@ -1,3 +1,19 @@ + + # Internal Network Load Balancer as Next Hop This recipe shows how to bootstraps a minimal infrastructure for testing [ILB as next hop](https://cloud.google.com/load-balancing/docs/internal/ilb-next-hop-overview), using simple Linux gateway VMS between two VPCs to emulate virtual appliances. diff --git a/modules/net-lb-int/recipe-ilb-next-hop/assets/gw.yaml b/modules/net-lb-int/recipe-ilb-next-hop/assets/gw.yaml index 73bd18dce..11ca3d6e7 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/assets/gw.yaml +++ b/modules/net-lb-int/recipe-ilb-next-hop/assets/gw.yaml @@ -1,12 +1,12 @@ #cloud-config -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + write_files: - path: /etc/sysctl.conf permissions: "0644" diff --git a/modules/net-lb-int/recipe-ilb-next-hop/backend.tf.sample b/modules/net-lb-int/recipe-ilb-next-hop/backend.tf.sample index e1bb8eaf5..13f55ed94 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/backend.tf.sample +++ b/modules/net-lb-int/recipe-ilb-next-hop/backend.tf.sample @@ -1,10 +1,10 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ # limitations under the License. + terraform { backend "gcs" { bucket = "" diff --git a/modules/net-lb-int/recipe-ilb-next-hop/gateways.tf b/modules/net-lb-int/recipe-ilb-next-hop/gateways.tf index 2e99956e2..6cbe9c402 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/gateways.tf +++ b/modules/net-lb-int/recipe-ilb-next-hop/gateways.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - module "gw" { source = "../../../modules/compute-vm" for_each = local.zones diff --git a/modules/net-lb-int/recipe-ilb-next-hop/main.tf b/modules/net-lb-int/recipe-ilb-next-hop/main.tf index efdc0f08b..f42f2aa60 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/main.tf +++ b/modules/net-lb-int/recipe-ilb-next-hop/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { addresses = { for k, v in module.addresses.internal_addresses : diff --git a/modules/net-lb-int/recipe-ilb-next-hop/outputs.tf b/modules/net-lb-int/recipe-ilb-next-hop/outputs.tf index c69501d92..9384eb0ec 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/outputs.tf +++ b/modules/net-lb-int/recipe-ilb-next-hop/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "addresses" { description = "IP addresses." value = { diff --git a/modules/net-lb-int/recipe-ilb-next-hop/variables.tf b/modules/net-lb-int/recipe-ilb-next-hop/variables.tf index be59b2177..7eaf79b1b 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/variables.tf +++ b/modules/net-lb-int/recipe-ilb-next-hop/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "_testing" { description = "Populate this variable to avoid triggering the data source." type = object({ diff --git a/modules/net-lb-int/recipe-ilb-next-hop/vms.tf b/modules/net-lb-int/recipe-ilb-next-hop/vms.tf index 259eacb09..2fe19aa2c 100644 --- a/modules/net-lb-int/recipe-ilb-next-hop/vms.tf +++ b/modules/net-lb-int/recipe-ilb-next-hop/vms.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { vm_startup_script = < + # Internal Proxy Network Load Balancer Module This module allows managing Internal HTTP/HTTPS Load Balancers (L7 ILBs). It's designed to expose the full configuration of the underlying resources, and to facilitate common usage patterns by providing sensible defaults, and optionally managing prerequisite resources like health checks, instance groups, etc. diff --git a/modules/net-lb-proxy-int/backend-service.tf b/modules/net-lb-proxy-int/backend-service.tf index e6aa07a28..664e5d94f 100644 --- a/modules/net-lb-proxy-int/backend-service.tf +++ b/modules/net-lb-proxy-int/backend-service.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Backend service resources. locals { diff --git a/modules/net-lb-proxy-int/groups.tf b/modules/net-lb-proxy-int/groups.tf index 53ba6b27f..519fd719c 100644 --- a/modules/net-lb-proxy-int/groups.tf +++ b/modules/net-lb-proxy-int/groups.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_compute_instance_group" "default" { for_each = var.group_configs project = ( diff --git a/modules/net-lb-proxy-int/health-check.tf b/modules/net-lb-proxy-int/health-check.tf index 5ec01c255..2e0cdf79d 100644 --- a/modules/net-lb-proxy-int/health-check.tf +++ b/modules/net-lb-proxy-int/health-check.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Health check resource. locals { diff --git a/modules/net-lb-proxy-int/main.tf b/modules/net-lb-proxy-int/main.tf index 096ae33ce..192edc4ee 100644 --- a/modules/net-lb-proxy-int/main.tf +++ b/modules/net-lb-proxy-int/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # we need keys in the endpoint type to address issue #1055 _neg_endpoints = flatten([ diff --git a/modules/net-lb-proxy-int/outputs.tf b/modules/net-lb-proxy-int/outputs.tf index 7f37aa7e6..d713831c0 100644 --- a/modules/net-lb-proxy-int/outputs.tf +++ b/modules/net-lb-proxy-int/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "address" { description = "Forwarding rule address." value = google_compute_forwarding_rule.default.ip_address diff --git a/modules/net-lb-proxy-int/variables.tf b/modules/net-lb-proxy-int/variables.tf index 119265d24..f1f81b037 100644 --- a/modules/net-lb-proxy-int/variables.tf +++ b/modules/net-lb-proxy-int/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "address" { description = "Optional IP address used for the forwarding rule." type = string diff --git a/modules/net-lb-proxy-int/versions.tf b/modules/net-lb-proxy-int/versions.tf index bc98cd235..1e3da28b1 100644 --- a/modules/net-lb-proxy-int/versions.tf +++ b/modules/net-lb-proxy-int/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-swp/README.md b/modules/net-swp/README.md index 53758eb81..93fbc7fea 100644 --- a/modules/net-swp/README.md +++ b/modules/net-swp/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Secure Web Proxy This module allows creation and management of [Secure Web Proxy](https://cloud.google.com/secure-web-proxy/docs/overview), and its URL lists and policy rules. diff --git a/modules/net-swp/main.tf b/modules/net-swp/main.tf index 471cf5f35..faeac361b 100644 --- a/modules/net-swp/main.tf +++ b/modules/net-swp/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _url_lists_path = try(pathexpand(var.factories_config.url_lists), null) _url_lists = { diff --git a/modules/net-swp/outputs.tf b/modules/net-swp/outputs.tf index fe271d9a9..d6b82cb2b 100644 --- a/modules/net-swp/outputs.tf +++ b/modules/net-swp/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "gateway" { description = "The gateway resource." value = google_network_services_gateway.default diff --git a/modules/net-swp/policy-rules.tf b/modules/net-swp/policy-rules.tf index f534ad68c..18f2f4581 100644 --- a/modules/net-swp/policy-rules.tf +++ b/modules/net-swp/policy-rules.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _policy_rules_path = try(pathexpand(var.factories_config.policy_rules), null) _policy_rules = { diff --git a/modules/net-swp/variables.tf b/modules/net-swp/variables.tf index cff9e3f49..fb67c3d8a 100644 --- a/modules/net-swp/variables.tf +++ b/modules/net-swp/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "certificates" { description = "List of certificates to be used for Secure Web Proxy." type = list(string) diff --git a/modules/net-swp/versions.tf b/modules/net-swp/versions.tf index 458e04439..22ba189bd 100644 --- a/modules/net-swp/versions.tf +++ b/modules/net-swp/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vlan-attachment/README.md b/modules/net-vlan-attachment/README.md index a72cb9387..6c5d6a701 100644 --- a/modules/net-vlan-attachment/README.md +++ b/modules/net-vlan-attachment/README.md @@ -1,3 +1,19 @@ + + # VLAN Attachment module This module allows for the provisioning of VLAN Attachments for [Dedicated Interconnect](https://cloud.google.com/network-connectivity/docs/interconnect/how-to/dedicated/creating-vlan-attachments) or [Partner Interconnect](https://cloud.google.com/network-connectivity/docs/interconnect/how-to/partner/creating-vlan-attachments). diff --git a/modules/net-vlan-attachment/main.tf b/modules/net-vlan-attachment/main.tf index 40b2c81f6..58360e224 100644 --- a/modules/net-vlan-attachment/main.tf +++ b/modules/net-vlan-attachment/main.tf @@ -1,162 +1,161 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -locals { - ipsec_enabled = var.vpn_gateways_ip_range == null ? false : true - router = ( - var.router_config.create - ? local.ipsec_enabled ? try(google_compute_router.encrypted[0].name, null) : try(google_compute_router.unencrypted[0].name, null) - : var.router_config.name - ) - secret = random_id.secret.b64_url -} - -resource "google_compute_address" "default" { - count = local.ipsec_enabled ? 1 : 0 - project = var.project_id - network = var.network - region = var.region - name = "pool-${var.name}" - address_type = "INTERNAL" - purpose = "IPSEC_INTERCONNECT" - address = split("/", var.vpn_gateways_ip_range)[0] - prefix_length = split("/", var.vpn_gateways_ip_range)[1] -} - -resource "google_compute_interconnect_attachment" "default" { - project = var.project_id - region = var.region - router = local.router - name = var.name - description = var.description - interconnect = try(var.dedicated_interconnect_config.interconnect, null) - bandwidth = try(var.dedicated_interconnect_config.bandwidth, null) - mtu = local.ipsec_enabled ? null : var.mtu - candidate_subnets = var.dedicated_interconnect_config != null ? [var.dedicated_interconnect_config.bgp_range] : null - vlan_tag8021q = try(var.dedicated_interconnect_config.vlan_tag, null) - admin_enabled = var.admin_enabled - encryption = local.ipsec_enabled ? "IPSEC" : null - type = var.dedicated_interconnect_config == null ? "PARTNER" : "DEDICATED" - edge_availability_domain = try(var.partner_interconnect_config.edge_availability_domain, null) - ipsec_internal_addresses = local.ipsec_enabled ? [google_compute_address.default[0].self_link] : null -} - -resource "google_compute_router" "encrypted" { - count = var.router_config.create && local.ipsec_enabled ? 1 : 0 - name = "${var.name}-underlay" - network = var.network - project = var.project_id - region = var.region - encrypted_interconnect_router = true - bgp { - asn = var.router_config.asn - advertise_mode = var.dedicated_interconnect_config == null ? "DEFAULT" : "CUSTOM" - dynamic "advertised_ip_ranges" { - for_each = var.dedicated_interconnect_config == null ? var.ipsec_gateway_ip_ranges : {} - content { - description = advertised_ip_ranges.key - range = advertised_ip_ranges.value - } - } - } -} - -resource "google_compute_router" "unencrypted" { - count = var.router_config.create && !local.ipsec_enabled ? 1 : 0 - name = coalesce(var.router_config.name, "underlay-${var.name}") - project = var.project_id - region = var.region - network = var.network - bgp { - advertise_mode = ( - var.router_config.custom_advertise != null - ? "CUSTOM" - : "DEFAULT" - ) - advertised_groups = ( - try(var.router_config.custom_advertise.all_subnets, false) - ? ["ALL_SUBNETS"] - : [] - ) - dynamic "advertised_ip_ranges" { - for_each = try(var.router_config.custom_advertise.ip_ranges, {}) - iterator = range - content { - range = range.key - description = range.value - } - } - keepalive_interval = try(var.router_config.keepalive, null) - asn = var.router_config.asn - } -} - -resource "google_compute_router_interface" "default" { - count = var.dedicated_interconnect_config != null ? 1 : 0 - project = var.project_id - region = var.region - name = "${var.name}-intf" - router = local.router - ip_range = google_compute_interconnect_attachment.default.cloud_router_ip_address - interconnect_attachment = google_compute_interconnect_attachment.default.self_link -} - -resource "google_compute_router_peer" "default" { - count = var.dedicated_interconnect_config != null ? 1 : 0 - name = "${var.name}-peer" - project = var.project_id - router = local.router - region = var.region - peer_ip_address = split("/", google_compute_interconnect_attachment.default.customer_router_ip_address)[0] - peer_asn = var.peer_asn - interface = google_compute_router_interface.default[0].name - advertised_route_priority = var.dedicated_interconnect_config.bgp_priority - advertise_mode = "CUSTOM" - - dynamic "advertised_ip_ranges" { - for_each = var.ipsec_gateway_ip_ranges - content { - description = advertised_ip_ranges.key - range = advertised_ip_ranges.value - } - } - - dynamic "bfd" { - for_each = var.router_config.bfd != null ? toset([var.router_config.bfd]) : [] - content { - session_initialization_mode = bfd.value.session_initialization_mode - min_receive_interval = bfd.value.min_receive_interval - min_transmit_interval = bfd.value.min_transmit_interval - multiplier = bfd.value.multiplier - } - } - - dynamic "md5_authentication_key" { - for_each = var.router_config.md5_authentication_key != null ? [var.router_config.md5_authentication_key] : [] - content { - name = md5_authentication_key.value.name - key = coalesce(md5_authentication_key.value.key, local.secret) - } - } - - depends_on = [ - google_compute_router_interface.default - ] -} - -resource "random_id" "secret" { - byte_length = 12 -} +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +locals { + ipsec_enabled = var.vpn_gateways_ip_range == null ? false : true + router = ( + var.router_config.create + ? local.ipsec_enabled ? try(google_compute_router.encrypted[0].name, null) : try(google_compute_router.unencrypted[0].name, null) + : var.router_config.name + ) + secret = random_id.secret.b64_url +} + +resource "google_compute_address" "default" { + count = local.ipsec_enabled ? 1 : 0 + project = var.project_id + network = var.network + region = var.region + name = "pool-${var.name}" + address_type = "INTERNAL" + purpose = "IPSEC_INTERCONNECT" + address = split("/", var.vpn_gateways_ip_range)[0] + prefix_length = split("/", var.vpn_gateways_ip_range)[1] +} + +resource "google_compute_interconnect_attachment" "default" { + project = var.project_id + region = var.region + router = local.router + name = var.name + description = var.description + interconnect = try(var.dedicated_interconnect_config.interconnect, null) + bandwidth = try(var.dedicated_interconnect_config.bandwidth, null) + mtu = local.ipsec_enabled ? null : var.mtu + candidate_subnets = var.dedicated_interconnect_config != null ? [var.dedicated_interconnect_config.bgp_range] : null + vlan_tag8021q = try(var.dedicated_interconnect_config.vlan_tag, null) + admin_enabled = var.admin_enabled + encryption = local.ipsec_enabled ? "IPSEC" : null + type = var.dedicated_interconnect_config == null ? "PARTNER" : "DEDICATED" + edge_availability_domain = try(var.partner_interconnect_config.edge_availability_domain, null) + ipsec_internal_addresses = local.ipsec_enabled ? [google_compute_address.default[0].self_link] : null +} + +resource "google_compute_router" "encrypted" { + count = var.router_config.create && local.ipsec_enabled ? 1 : 0 + name = "${var.name}-underlay" + network = var.network + project = var.project_id + region = var.region + encrypted_interconnect_router = true + bgp { + asn = var.router_config.asn + advertise_mode = var.dedicated_interconnect_config == null ? "DEFAULT" : "CUSTOM" + dynamic "advertised_ip_ranges" { + for_each = var.dedicated_interconnect_config == null ? var.ipsec_gateway_ip_ranges : {} + content { + description = advertised_ip_ranges.key + range = advertised_ip_ranges.value + } + } + } +} + +resource "google_compute_router" "unencrypted" { + count = var.router_config.create && !local.ipsec_enabled ? 1 : 0 + name = coalesce(var.router_config.name, "underlay-${var.name}") + project = var.project_id + region = var.region + network = var.network + bgp { + advertise_mode = ( + var.router_config.custom_advertise != null + ? "CUSTOM" + : "DEFAULT" + ) + advertised_groups = ( + try(var.router_config.custom_advertise.all_subnets, false) + ? ["ALL_SUBNETS"] + : [] + ) + dynamic "advertised_ip_ranges" { + for_each = try(var.router_config.custom_advertise.ip_ranges, {}) + iterator = range + content { + range = range.key + description = range.value + } + } + keepalive_interval = try(var.router_config.keepalive, null) + asn = var.router_config.asn + } +} + +resource "google_compute_router_interface" "default" { + count = var.dedicated_interconnect_config != null ? 1 : 0 + project = var.project_id + region = var.region + name = "${var.name}-intf" + router = local.router + ip_range = google_compute_interconnect_attachment.default.cloud_router_ip_address + interconnect_attachment = google_compute_interconnect_attachment.default.self_link +} + +resource "google_compute_router_peer" "default" { + count = var.dedicated_interconnect_config != null ? 1 : 0 + name = "${var.name}-peer" + project = var.project_id + router = local.router + region = var.region + peer_ip_address = split("/", google_compute_interconnect_attachment.default.customer_router_ip_address)[0] + peer_asn = var.peer_asn + interface = google_compute_router_interface.default[0].name + advertised_route_priority = var.dedicated_interconnect_config.bgp_priority + advertise_mode = "CUSTOM" + + dynamic "advertised_ip_ranges" { + for_each = var.ipsec_gateway_ip_ranges + content { + description = advertised_ip_ranges.key + range = advertised_ip_ranges.value + } + } + + dynamic "bfd" { + for_each = var.router_config.bfd != null ? toset([var.router_config.bfd]) : [] + content { + session_initialization_mode = bfd.value.session_initialization_mode + min_receive_interval = bfd.value.min_receive_interval + min_transmit_interval = bfd.value.min_transmit_interval + multiplier = bfd.value.multiplier + } + } + + dynamic "md5_authentication_key" { + for_each = var.router_config.md5_authentication_key != null ? [var.router_config.md5_authentication_key] : [] + content { + name = md5_authentication_key.value.name + key = coalesce(md5_authentication_key.value.key, local.secret) + } + } + + depends_on = [ + google_compute_router_interface.default + ] +} + +resource "random_id" "secret" { + byte_length = 12 +} diff --git a/modules/net-vlan-attachment/outputs.tf b/modules/net-vlan-attachment/outputs.tf index 6a8533075..0496edc4b 100644 --- a/modules/net-vlan-attachment/outputs.tf +++ b/modules/net-vlan-attachment/outputs.tf @@ -1,61 +1,60 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -output "attachment" { - description = "VLAN Attachment resource." - value = google_compute_interconnect_attachment.default -} - -output "id" { - description = "Fully qualified VLAN attachment id." - value = google_compute_interconnect_attachment.default.id -} - -output "md5_configuration" { - description = "MD5 configuration." - value = ( - var.router_config.md5_authentication_key != null - ? { - name = var.router_config.md5_authentication_key.name - key = coalesce(var.router_config.md5_authentication_key.key, local.secret) - } : {} - ) -} - -output "name" { - description = "The name of the VLAN attachment created." - value = google_compute_interconnect_attachment.default.name -} - -output "pairing_key" { - description = "Opaque identifier of an PARTNER attachment used to initiate provisioning with a selected partner." - value = google_compute_interconnect_attachment.default.pairing_key -} - -output "router" { - description = "Router resource (only if auto-created)." - value = local.ipsec_enabled ? one(google_compute_router.encrypted[*]) : one(google_compute_router.unencrypted[*]) -} - -output "router_interface" { - description = "Router interface created for the VLAN attachment." - value = google_compute_router_interface.default -} - -output "router_name" { - description = "Router name." - value = local.router -} +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +output "attachment" { + description = "VLAN Attachment resource." + value = google_compute_interconnect_attachment.default +} + +output "id" { + description = "Fully qualified VLAN attachment id." + value = google_compute_interconnect_attachment.default.id +} + +output "md5_configuration" { + description = "MD5 configuration." + value = ( + var.router_config.md5_authentication_key != null + ? { + name = var.router_config.md5_authentication_key.name + key = coalesce(var.router_config.md5_authentication_key.key, local.secret) + } : {} + ) +} + +output "name" { + description = "The name of the VLAN attachment created." + value = google_compute_interconnect_attachment.default.name +} + +output "pairing_key" { + description = "Opaque identifier of an PARTNER attachment used to initiate provisioning with a selected partner." + value = google_compute_interconnect_attachment.default.pairing_key +} + +output "router" { + description = "Router resource (only if auto-created)." + value = local.ipsec_enabled ? one(google_compute_router.encrypted[*]) : one(google_compute_router.unencrypted[*]) +} + +output "router_interface" { + description = "Router interface created for the VLAN attachment." + value = google_compute_router_interface.default +} + +output "router_name" { + description = "Router name." + value = local.router +} diff --git a/modules/net-vlan-attachment/variables.tf b/modules/net-vlan-attachment/variables.tf index cd87b39c9..27d87b5ca 100644 --- a/modules/net-vlan-attachment/variables.tf +++ b/modules/net-vlan-attachment/variables.tf @@ -1,119 +1,118 @@ -/** - * Copyright 2023 Google LLC - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -variable "admin_enabled" { - description = "Whether the VLAN attachment is enabled." - type = bool - default = true -} - -variable "dedicated_interconnect_config" { - description = "Dedicated interconnect configuration." - type = object({ - # Possible values @ https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_interconnect_attachment#bandwidth - bandwidth = optional(string, "BPS_10G") - bgp_range = optional(string) - bgp_priority = optional(number) - interconnect = string - vlan_tag = string - }) - default = null -} - -variable "description" { - description = "VLAN attachment description." - type = string -} - -variable "ipsec_gateway_ip_ranges" { - description = "IPSec Gateway IP Ranges." - type = map(string) - default = {} -} - -variable "mtu" { - description = "The MTU associated to the VLAN attachment (1440 / 1500)." - type = number - default = "1500" -} - -variable "name" { - description = "The common resources name, used after resource type prefix and suffix." - type = string -} - -variable "network" { - description = "The VPC name to which resources are associated to." - type = string -} - -variable "partner_interconnect_config" { - description = "Partner interconnect configuration." - type = object({ - edge_availability_domain = string - }) - validation { - condition = var.partner_interconnect_config == null ? true : contains(["AVAILABILITY_DOMAIN_1", "AVAILABILITY_DOMAIN_2", "AVAILABILITY_DOMAIN_ANY"], var.partner_interconnect_config.edge_availability_domain) - error_message = "The edge_availability_domain must have one of these values: AVAILABILITY_DOMAIN_1, AVAILABILITY_DOMAIN_2, AVAILABILITY_DOMAIN_ANY." - } - default = null -} - -variable "peer_asn" { - description = "The on-premises underlay router ASN." - type = string -} - -variable "project_id" { - description = "The project id where resources are created." - type = string -} - -variable "region" { - description = "The region where resources are created." - type = string -} - -variable "router_config" { - description = "Cloud Router configuration for the VPN. If you want to reuse an existing router, set create to false and use name to specify the desired router." - type = object({ - create = optional(bool, true) - asn = optional(number, 65001) - bfd = optional(object({ - min_receive_interval = optional(number) - min_transmit_interval = optional(number) - multiplier = optional(number) - session_initialization_mode = optional(string, "ACTIVE") - })) - custom_advertise = optional(object({ - all_subnets = bool - ip_ranges = map(string) - })) - md5_authentication_key = optional(object({ - name = string - key = optional(string) - })) - keepalive = optional(number) - name = optional(string, "router") - }) - nullable = false -} - -variable "vpn_gateways_ip_range" { - description = "The IP range (cidr notation) to be used for the GCP VPN gateways. If null IPSec over Interconnect is not enabled." - type = string - default = null -} +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +variable "admin_enabled" { + description = "Whether the VLAN attachment is enabled." + type = bool + default = true +} + +variable "dedicated_interconnect_config" { + description = "Dedicated interconnect configuration." + type = object({ + # Possible values @ https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_interconnect_attachment#bandwidth + bandwidth = optional(string, "BPS_10G") + bgp_range = optional(string) + bgp_priority = optional(number) + interconnect = string + vlan_tag = string + }) + default = null +} + +variable "description" { + description = "VLAN attachment description." + type = string +} + +variable "ipsec_gateway_ip_ranges" { + description = "IPSec Gateway IP Ranges." + type = map(string) + default = {} +} + +variable "mtu" { + description = "The MTU associated to the VLAN attachment (1440 / 1500)." + type = number + default = "1500" +} + +variable "name" { + description = "The common resources name, used after resource type prefix and suffix." + type = string +} + +variable "network" { + description = "The VPC name to which resources are associated to." + type = string +} + +variable "partner_interconnect_config" { + description = "Partner interconnect configuration." + type = object({ + edge_availability_domain = string + }) + validation { + condition = var.partner_interconnect_config == null ? true : contains(["AVAILABILITY_DOMAIN_1", "AVAILABILITY_DOMAIN_2", "AVAILABILITY_DOMAIN_ANY"], var.partner_interconnect_config.edge_availability_domain) + error_message = "The edge_availability_domain must have one of these values: AVAILABILITY_DOMAIN_1, AVAILABILITY_DOMAIN_2, AVAILABILITY_DOMAIN_ANY." + } + default = null +} + +variable "peer_asn" { + description = "The on-premises underlay router ASN." + type = string +} + +variable "project_id" { + description = "The project id where resources are created." + type = string +} + +variable "region" { + description = "The region where resources are created." + type = string +} + +variable "router_config" { + description = "Cloud Router configuration for the VPN. If you want to reuse an existing router, set create to false and use name to specify the desired router." + type = object({ + create = optional(bool, true) + asn = optional(number, 65001) + bfd = optional(object({ + min_receive_interval = optional(number) + min_transmit_interval = optional(number) + multiplier = optional(number) + session_initialization_mode = optional(string, "ACTIVE") + })) + custom_advertise = optional(object({ + all_subnets = bool + ip_ranges = map(string) + })) + md5_authentication_key = optional(object({ + name = string + key = optional(string) + })) + keepalive = optional(number) + name = optional(string, "router") + }) + nullable = false +} + +variable "vpn_gateways_ip_range" { + description = "The IP range (cidr notation) to be used for the GCP VPN gateways. If null IPSec over Interconnect is not enabled." + type = string + default = null +} diff --git a/modules/net-vlan-attachment/versions.tf b/modules/net-vlan-attachment/versions.tf index 89277df1f..58fa6ad6c 100644 --- a/modules/net-vlan-attachment/versions.tf +++ b/modules/net-vlan-attachment/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vpc-firewall/README.md b/modules/net-vpc-firewall/README.md index b23a270c4..140e734ad 100644 --- a/modules/net-vpc-firewall/README.md +++ b/modules/net-vpc-firewall/README.md @@ -1,3 +1,19 @@ + + # Google Cloud VPC Firewall This module allows creation and management of different types of firewall rules for a single VPC network: diff --git a/modules/net-vpc-firewall/default-rules.tf b/modules/net-vpc-firewall/default-rules.tf index 976c45e6b..62d68b989 100644 --- a/modules/net-vpc-firewall/default-rules.tf +++ b/modules/net-vpc-firewall/default-rules.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Optional default rule resources. locals { diff --git a/modules/net-vpc-firewall/main.tf b/modules/net-vpc-firewall/main.tf index 1f9442ef4..49148573e 100644 --- a/modules/net-vpc-firewall/main.tf +++ b/modules/net-vpc-firewall/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _factory_rules_folder = try(pathexpand(var.factories_config.rules_folder), null) # define list of rule files diff --git a/modules/net-vpc-firewall/outputs.tf b/modules/net-vpc-firewall/outputs.tf index 9206ab546..928a37f81 100644 --- a/modules/net-vpc-firewall/outputs.tf +++ b/modules/net-vpc-firewall/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "default_rules" { description = "Default rule resources." value = { diff --git a/modules/net-vpc-firewall/variables.tf b/modules/net-vpc-firewall/variables.tf index 104f87d5b..66f0eccf0 100644 --- a/modules/net-vpc-firewall/variables.tf +++ b/modules/net-vpc-firewall/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "default_rules_config" { description = "Optionally created convenience rules. Set the 'disabled' attribute to true, or individual rule attributes to empty lists to disable." type = object({ diff --git a/modules/net-vpc-firewall/versions.tf b/modules/net-vpc-firewall/versions.tf index 9c5346dec..908e5cf4f 100644 --- a/modules/net-vpc-firewall/versions.tf +++ b/modules/net-vpc-firewall/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vpc-peering/README.md b/modules/net-vpc-peering/README.md index 869ad1563..262fdfc95 100644 --- a/modules/net-vpc-peering/README.md +++ b/modules/net-vpc-peering/README.md @@ -1,3 +1,19 @@ + + # Google Network Peering This module allows creation of a [VPC Network Peering](https://cloud.google.com/vpc/docs/vpc-peering) between two networks. diff --git a/modules/net-vpc-peering/main.tf b/modules/net-vpc-peering/main.tf index 234881e30..3421d4930 100644 --- a/modules/net-vpc-peering/main.tf +++ b/modules/net-vpc-peering/main.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { local_network_name = element(reverse(split("/", var.local_network)), 0) auto_local_name = "${local.prefix}${local.local_network_name}-${local.peer_network_name}" diff --git a/modules/net-vpc-peering/outputs.tf b/modules/net-vpc-peering/outputs.tf index 558c4bac1..218e326d3 100644 --- a/modules/net-vpc-peering/outputs.tf +++ b/modules/net-vpc-peering/outputs.tf @@ -1,11 +1,11 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "local_network_peering" { description = "Network peering resource." value = google_compute_network_peering.local_network_peering diff --git a/modules/net-vpc-peering/variables.tf b/modules/net-vpc-peering/variables.tf index b30446368..bddfdc829 100644 --- a/modules/net-vpc-peering/variables.tf +++ b/modules/net-vpc-peering/variables.tf @@ -1,11 +1,11 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * https://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "local_network" { description = "The full resource link (self-link) of the local VPC network for the peering connection." type = string diff --git a/modules/net-vpc-peering/versions.tf b/modules/net-vpc-peering/versions.tf index faa10f69a..e8211b389 100644 --- a/modules/net-vpc-peering/versions.tf +++ b/modules/net-vpc-peering/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vpc/README.md b/modules/net-vpc/README.md index 57570c508..d9128389c 100644 --- a/modules/net-vpc/README.md +++ b/modules/net-vpc/README.md @@ -1,3 +1,19 @@ + + # VPC module This module allows creation and management of VPC networks including subnetworks and subnetwork IAM bindings, and most features and options related to VPCs and subnets. diff --git a/modules/net-vpc/main.tf b/modules/net-vpc/main.tf index dd9a19295..361e870de 100644 --- a/modules/net-vpc/main.tf +++ b/modules/net-vpc/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { network = ( var.vpc_create diff --git a/modules/net-vpc/outputs.tf b/modules/net-vpc/outputs.tf index 8184e96d4..3d4d82d0e 100644 --- a/modules/net-vpc/outputs.tf +++ b/modules/net-vpc/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified network id." value = local.network.id diff --git a/modules/net-vpc/psa.tf b/modules/net-vpc/psa.tf index 959193896..9ae85df67 100644 --- a/modules/net-vpc/psa.tf +++ b/modules/net-vpc/psa.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Private Service Access resources. locals { diff --git a/modules/net-vpc/routes.tf b/modules/net-vpc/routes.tf index be16bb936..963965a69 100644 --- a/modules/net-vpc/routes.tf +++ b/modules/net-vpc/routes.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Route resources. locals { diff --git a/modules/net-vpc/subnets.tf b/modules/net-vpc/subnets.tf index a75f5b7b9..d980b96ab 100644 --- a/modules/net-vpc/subnets.tf +++ b/modules/net-vpc/subnets.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Subnet resources. locals { diff --git a/modules/net-vpc/variables.tf b/modules/net-vpc/variables.tf index fcbc7843f..f7da06b32 100644 --- a/modules/net-vpc/variables.tf +++ b/modules/net-vpc/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "auto_create_subnetworks" { description = "Set to true to create an auto mode subnet, defaults to custom mode." type = bool diff --git a/modules/net-vpc/versions.tf b/modules/net-vpc/versions.tf index 0a9f3e1c8..283fd0561 100644 --- a/modules/net-vpc/versions.tf +++ b/modules/net-vpc/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vpn-dynamic/README.md b/modules/net-vpn-dynamic/README.md index 5f79ffaaa..cef080af9 100644 --- a/modules/net-vpn-dynamic/README.md +++ b/modules/net-vpn-dynamic/README.md @@ -1,3 +1,19 @@ + + # Cloud VPN Dynamic Module ## Example diff --git a/modules/net-vpn-dynamic/main.tf b/modules/net-vpn-dynamic/main.tf index fcf26934b..5cae8d77f 100644 --- a/modules/net-vpn-dynamic/main.tf +++ b/modules/net-vpn-dynamic/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { gateway_address = ( var.gateway_address_create diff --git a/modules/net-vpn-dynamic/outputs.tf b/modules/net-vpn-dynamic/outputs.tf index 2595a8fc4..83b284f90 100644 --- a/modules/net-vpn-dynamic/outputs.tf +++ b/modules/net-vpn-dynamic/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "address" { description = "VPN gateway address." value = local.gateway_address diff --git a/modules/net-vpn-dynamic/variables.tf b/modules/net-vpn-dynamic/variables.tf index 33d23a040..2a9e7730a 100644 --- a/modules/net-vpn-dynamic/variables.tf +++ b/modules/net-vpn-dynamic/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "gateway_address" { description = "Optional address assigned to the VPN gateway. Ignored unless gateway_address_create is set to false." type = string diff --git a/modules/net-vpn-dynamic/versions.tf b/modules/net-vpn-dynamic/versions.tf index 5ee6d91a2..a7d66b883 100644 --- a/modules/net-vpn-dynamic/versions.tf +++ b/modules/net-vpn-dynamic/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vpn-ha/README.md b/modules/net-vpn-ha/README.md index edd623907..d8325344b 100644 --- a/modules/net-vpn-ha/README.md +++ b/modules/net-vpn-ha/README.md @@ -1,3 +1,19 @@ + + # Cloud HA VPN Module This module makes it easy to deploy either GCP-to-GCP or GCP-to-On-prem [Cloud HA VPN](https://cloud.google.com/network-connectivity/docs/vpn/concepts/overview#ha-vpn). diff --git a/modules/net-vpn-ha/main.tf b/modules/net-vpn-ha/main.tf index c53e18e52..011f8a66e 100644 --- a/modules/net-vpn-ha/main.tf +++ b/modules/net-vpn-ha/main.tf @@ -1,6 +1,6 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,7 +14,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { md5_keys = { for k, v in random_id.md5_keys diff --git a/modules/net-vpn-ha/outputs.tf b/modules/net-vpn-ha/outputs.tf index 09e96e625..31785dd58 100644 --- a/modules/net-vpn-ha/outputs.tf +++ b/modules/net-vpn-ha/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,8 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - - output "bgp_peers" { description = "BGP peer resources." value = { diff --git a/modules/net-vpn-ha/variables.tf b/modules/net-vpn-ha/variables.tf index d20b48daa..469f573e7 100644 --- a/modules/net-vpn-ha/variables.tf +++ b/modules/net-vpn-ha/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "name" { description = "VPN Gateway name (if an existing VPN Gateway is not used), and prefix used for dependent resources." type = string diff --git a/modules/net-vpn-ha/versions.tf b/modules/net-vpn-ha/versions.tf index dc908a08c..efbb41f7d 100644 --- a/modules/net-vpn-ha/versions.tf +++ b/modules/net-vpn-ha/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/net-vpn-static/README.md b/modules/net-vpn-static/README.md index 902fc1e46..be1b0fbaa 100644 --- a/modules/net-vpn-static/README.md +++ b/modules/net-vpn-static/README.md @@ -1,3 +1,19 @@ + + # Cloud VPN Route-based Module ## Example diff --git a/modules/net-vpn-static/main.tf b/modules/net-vpn-static/main.tf index f05771c16..9a6ac6deb 100644 --- a/modules/net-vpn-static/main.tf +++ b/modules/net-vpn-static/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { gateway_address = ( var.gateway_address_create diff --git a/modules/net-vpn-static/outputs.tf b/modules/net-vpn-static/outputs.tf index 946063f72..95358e93b 100644 --- a/modules/net-vpn-static/outputs.tf +++ b/modules/net-vpn-static/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "address" { description = "VPN gateway address." value = local.gateway_address diff --git a/modules/net-vpn-static/variables.tf b/modules/net-vpn-static/variables.tf index 935c543a4..9446f3b91 100644 --- a/modules/net-vpn-static/variables.tf +++ b/modules/net-vpn-static/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "gateway_address" { description = "Optional address assigned to the VPN gateway. Ignored unless gateway_address_create is set to false." type = string diff --git a/modules/net-vpn-static/versions.tf b/modules/net-vpn-static/versions.tf index bb04113a6..8d26c8ab6 100644 --- a/modules/net-vpn-static/versions.tf +++ b/modules/net-vpn-static/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/organization-se/README.md b/modules/organization-se/README.md index 525ae912a..b075d6143 100644 --- a/modules/organization-se/README.md +++ b/modules/organization-se/README.md @@ -1,3 +1,19 @@ + + # Organization Module This module allows managing several organization properties: diff --git a/modules/organization-se/iam.tf b/modules/organization-se/iam.tf index 607a54f0a..bb0cf6137 100644 --- a/modules/organization-se/iam.tf +++ b/modules/organization-se/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/organization-se/logging.tf b/modules/organization-se/logging.tf index 9e0874c05..ac8b5cde8 100644 --- a/modules/organization-se/logging.tf +++ b/modules/organization-se/logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Log sinks and data access logs. locals { diff --git a/modules/organization-se/main.tf b/modules/organization-se/main.tf index 45668ceec..aa7148342 100644 --- a/modules/organization-se/main.tf +++ b/modules/organization-se/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { organization_id_numeric = split("/", var.organization_id)[1] } diff --git a/modules/organization-se/org-policy-custom-constraints.tf b/modules/organization-se/org-policy-custom-constraints.tf index 4508acb50..eebb8cd2f 100644 --- a/modules/organization-se/org-policy-custom-constraints.tf +++ b/modules/organization-se/org-policy-custom-constraints.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _custom_constraints_factory_data_raw = merge([ for f in try(fileset(var.factories_config.org_policy_custom_constraints, "*.yaml"), []) : diff --git a/modules/organization-se/organization-policies.tf b/modules/organization-se/organization-policies.tf index 732d052c0..cdbc2a2fd 100644 --- a/modules/organization-se/organization-policies.tf +++ b/modules/organization-se/organization-policies.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Organization-level organization policies. locals { diff --git a/modules/organization-se/outputs.tf b/modules/organization-se/outputs.tf index 51905624f..b0910315e 100644 --- a/modules/organization-se/outputs.tf +++ b/modules/organization-se/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "custom_constraint_ids" { description = "Map of CUSTOM_CONSTRAINTS => ID in the organization." value = { for k, v in google_org_policy_custom_constraint.constraint : k => v.id } diff --git a/modules/organization-se/variables-iam.tf b/modules/organization-se/variables-iam.tf index 95929afb8..aa663c907 100644 --- a/modules/organization-se/variables-iam.tf +++ b/modules/organization-se/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings, in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/organization-se/variables-logging.tf b/modules/organization-se/variables-logging.tf index f30fb2080..745738afc 100644 --- a/modules/organization-se/variables-logging.tf +++ b/modules/organization-se/variables-logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "logging_data_access" { description = "Control activation of data access logs. The special 'allServices' key denotes configuration for all services." type = map(object({ diff --git a/modules/organization-se/variables.tf b/modules/organization-se/variables.tf index 0ef099644..4d676ce5a 100644 --- a/modules/organization-se/variables.tf +++ b/modules/organization-se/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "contacts" { description = "List of essential contacts for this resource. Must be in the form EMAIL -> [NOTIFICATION_TYPES]. Valid notification types are ALL, SUSPENSION, SECURITY, TECHNICAL, BILLING, LEGAL, PRODUCT_UPDATES." type = map(list(string)) diff --git a/modules/organization-se/versions.tf b/modules/organization-se/versions.tf index f5645b5da..c034a4da7 100644 --- a/modules/organization-se/versions.tf +++ b/modules/organization-se/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/organization/README.md b/modules/organization/README.md index 525ae912a..b075d6143 100644 --- a/modules/organization/README.md +++ b/modules/organization/README.md @@ -1,3 +1,19 @@ + + # Organization Module This module allows managing several organization properties: diff --git a/modules/organization/iam.tf b/modules/organization/iam.tf index 607a54f0a..bb0cf6137 100644 --- a/modules/organization/iam.tf +++ b/modules/organization/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/organization/logging.tf b/modules/organization/logging.tf index 9e0874c05..ac8b5cde8 100644 --- a/modules/organization/logging.tf +++ b/modules/organization/logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Log sinks and data access logs. locals { diff --git a/modules/organization/main.tf b/modules/organization/main.tf index 45668ceec..aa7148342 100644 --- a/modules/organization/main.tf +++ b/modules/organization/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { organization_id_numeric = split("/", var.organization_id)[1] } diff --git a/modules/organization/org-policy-custom-constraints.tf b/modules/organization/org-policy-custom-constraints.tf index cae888d1c..8ddfc11b3 100644 --- a/modules/organization/org-policy-custom-constraints.tf +++ b/modules/organization/org-policy-custom-constraints.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _custom_constraints_factory_data_raw = merge([ for f in try(fileset(var.factories_config.org_policy_custom_constraints, "*.yaml"), []) : diff --git a/modules/organization/organization-policies.tf b/modules/organization/organization-policies.tf index ff65f0df1..dd2ce41bc 100644 --- a/modules/organization/organization-policies.tf +++ b/modules/organization/organization-policies.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Organization-level organization policies. locals { diff --git a/modules/organization/outputs.tf b/modules/organization/outputs.tf index 9422134a7..d17c0a555 100644 --- a/modules/organization/outputs.tf +++ b/modules/organization/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "custom_constraint_ids" { description = "Map of CUSTOM_CONSTRAINTS => ID in the organization." value = { for k, v in google_org_policy_custom_constraint.constraint : k => v.id } diff --git a/modules/organization/tags.tf b/modules/organization/tags.tf index 0321818a5..ae0cd2b4c 100644 --- a/modules/organization/tags.tf +++ b/modules/organization/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _tag_iam = flatten([ for k, v in local.tags : [ diff --git a/modules/organization/variables-iam.tf b/modules/organization/variables-iam.tf index 95929afb8..aa663c907 100644 --- a/modules/organization/variables-iam.tf +++ b/modules/organization/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings, in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/organization/variables-logging.tf b/modules/organization/variables-logging.tf index f30fb2080..745738afc 100644 --- a/modules/organization/variables-logging.tf +++ b/modules/organization/variables-logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "logging_data_access" { description = "Control activation of data access logs. The special 'allServices' key denotes configuration for all services." type = map(object({ diff --git a/modules/organization/variables-tags.tf b/modules/organization/variables-tags.tf index 21a0efe6f..542d00c01 100644 --- a/modules/organization/variables-tags.tf +++ b/modules/organization/variables-tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "network_tags" { description = "Network tags by key name. If `id` is provided, key creation is skipped. The `iam` attribute behaves like the similarly named one at module level." type = map(object({ diff --git a/modules/organization/variables.tf b/modules/organization/variables.tf index e9b67bb01..5ce8ba33a 100644 --- a/modules/organization/variables.tf +++ b/modules/organization/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "contacts" { description = "List of essential contacts for this resource. Must be in the form EMAIL -> [NOTIFICATION_TYPES]. Valid notification types are ALL, SUSPENSION, SECURITY, TECHNICAL, BILLING, LEGAL, PRODUCT_UPDATES." type = map(list(string)) diff --git a/modules/organization/versions.tf b/modules/organization/versions.tf index f5645b5da..c034a4da7 100644 --- a/modules/organization/versions.tf +++ b/modules/organization/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/private-service-connect/README.md b/modules/private-service-connect/README.md index e6f6d4441..8280c474f 100644 --- a/modules/private-service-connect/README.md +++ b/modules/private-service-connect/README.md @@ -1,3 +1,19 @@ + + # Private Service Connect This module enables the usage of [Private Service Connect](https://cloud.google.com/vpc/docs/private-service-connect) for a specific subnetwork. diff --git a/modules/private-service-connect/dns.tf b/modules/private-service-connect/dns.tf index 5580181ec..e2c7fe106 100644 --- a/modules/private-service-connect/dns.tf +++ b/modules/private-service-connect/dns.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - /****************************************** Private Google APIs DNS Zone & records. *****************************************/ diff --git a/modules/private-service-connect/main.tf b/modules/private-service-connect/main.tf index e5daf633a..c30202101 100644 --- a/modules/private-service-connect/main.tf +++ b/modules/private-service-connect/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { dns_code = var.dns_code != "" ? "${var.dns_code}-" : "" googleapis_url = var.forwarding_rule_target == "vpc-sc" ? "restricted.googleapis.com." : "private.googleapis.com." diff --git a/modules/private-service-connect/metadata.yaml b/modules/private-service-connect/metadata.yaml index 613ae7823..faa4539c8 100644 --- a/modules/private-service-connect/metadata.yaml +++ b/modules/private-service-connect/metadata.yaml @@ -1,10 +1,10 @@ -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + apiVersion: blueprints.cloud.google.com/v1alpha1 kind: BlueprintMetadata metadata: diff --git a/modules/private-service-connect/outputs.tf b/modules/private-service-connect/outputs.tf index 53a892f3b..0a6748e00 100644 --- a/modules/private-service-connect/outputs.tf +++ b/modules/private-service-connect/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "private_service_connect_name" { value = google_compute_global_address.private_service_connect.name description = "Private service connect name" diff --git a/modules/private-service-connect/provider.tf b/modules/private-service-connect/provider.tf index 5e75ee536..e8342dcc0 100644 --- a/modules/private-service-connect/provider.tf +++ b/modules/private-service-connect/provider.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - terraform { required_version = ">= 0.13" required_providers { diff --git a/modules/private-service-connect/variables.tf b/modules/private-service-connect/variables.tf index 5fc7e67fd..f7f34f1ed 100644 --- a/modules/private-service-connect/variables.tf +++ b/modules/private-service-connect/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "project_id" { description = "Project ID for Private Service Connect." type = string diff --git a/modules/project-factory/README.md b/modules/project-factory/README.md index 00f55be66..e1d193191 100644 --- a/modules/project-factory/README.md +++ b/modules/project-factory/README.md @@ -1,3 +1,19 @@ + + # Project and Folder Factory This module implements end-to-end creation processes for a folder hierarchy, projects and billing budgets via YAML data configurations. diff --git a/modules/project-factory/automation.tf b/modules/project-factory/automation.tf index 8ddbe2a07..c70d3052f 100644 --- a/modules/project-factory/automation.tf +++ b/modules/project-factory/automation.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Automation projects locals and resources. locals { diff --git a/modules/project-factory/factory-budgets.tf b/modules/project-factory/factory-budgets.tf index 97c138487..7b1ef12cf 100644 --- a/modules/project-factory/factory-budgets.tf +++ b/modules/project-factory/factory-budgets.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Billing budget factory locals. locals { diff --git a/modules/project-factory/factory-folders.tf b/modules/project-factory/factory-folders.tf index bc9fb812a..9e398c898 100644 --- a/modules/project-factory/factory-folders.tf +++ b/modules/project-factory/factory-folders.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Folder hierarchy factory locals. locals { diff --git a/modules/project-factory/factory-projects.tf b/modules/project-factory/factory-projects.tf index dca889ca6..a6880c493 100644 --- a/modules/project-factory/factory-projects.tf +++ b/modules/project-factory/factory-projects.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Projects factory locals. locals { diff --git a/modules/project-factory/folders.tf b/modules/project-factory/folders.tf index a3e8b4aff..24a4809ee 100644 --- a/modules/project-factory/folders.tf +++ b/modules/project-factory/folders.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Folder hierarchy factory resources. locals { diff --git a/modules/project-factory/main.tf b/modules/project-factory/main.tf index 6787c0cf0..72b7b7224 100644 --- a/modules/project-factory/main.tf +++ b/modules/project-factory/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Projects and billing budgets factory resources. locals { diff --git a/modules/project-factory/outputs.tf b/modules/project-factory/outputs.tf index f33c0eac7..e0d8e6ee7 100644 --- a/modules/project-factory/outputs.tf +++ b/modules/project-factory/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "buckets" { description = "Bucket names." value = { diff --git a/modules/project-factory/variables.tf b/modules/project-factory/variables.tf index b5bb14812..8d9634cba 100644 --- a/modules/project-factory/variables.tf +++ b/modules/project-factory/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "data_defaults" { description = "Optional default values used when corresponding project data from files are missing." type = object({ diff --git a/modules/project/README.md b/modules/project/README.md index 0380ac2ea..43eed4486 100644 --- a/modules/project/README.md +++ b/modules/project/README.md @@ -1,3 +1,19 @@ + + # Project Module This module implements the creation and management of one GCP project including IAM, organization policies, Shared VPC host or service attachment, service API activation, and tag attachment. It also offers a convenient way to refer to managed service identities (aka robot service accounts) for APIs. diff --git a/modules/project/alerts.tf b/modules/project/alerts.tf index 625cb189e..50454586a 100644 --- a/modules/project/alerts.tf +++ b/modules/project/alerts.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _alerts_factory_data_raw = merge([ for k in local.observability_factory_data_raw : diff --git a/modules/project/cmek.tf b/modules/project/cmek.tf index 8bd44a56f..7b2c103c7 100644 --- a/modules/project/cmek.tf +++ b/modules/project/cmek.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Service Agent IAM Bindings for CMEK locals { diff --git a/modules/project/iam.tf b/modules/project/iam.tf index 481edf023..01b157a9a 100644 --- a/modules/project/iam.tf +++ b/modules/project/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. # IAM notes: diff --git a/modules/project/logging-metrics.tf b/modules/project/logging-metrics.tf index f46558690..777df958b 100644 --- a/modules/project/logging-metrics.tf +++ b/modules/project/logging-metrics.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _logging_metrics_factory_data_raw = merge([ for k in local.observability_factory_data_raw : diff --git a/modules/project/logging.tf b/modules/project/logging.tf index 6e4303ac9..50905013b 100644 --- a/modules/project/logging.tf +++ b/modules/project/logging.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Log sinks and supporting resources. locals { diff --git a/modules/project/main.tf b/modules/project/main.tf index 9b40ec3d3..5229d9072 100644 --- a/modules/project/main.tf +++ b/modules/project/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # descriptive_name cannot contain colons, so we omit the universe from the default descriptive_name = ( diff --git a/modules/project/notification-channels.tf b/modules/project/notification-channels.tf index 45d1678c6..e0fc199f3 100644 --- a/modules/project/notification-channels.tf +++ b/modules/project/notification-channels.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _channels_factory_data_raw = merge([ for k in local.observability_factory_data_raw : diff --git a/modules/project/organization-policies.tf b/modules/project/organization-policies.tf index 5861d019c..508b01245 100644 --- a/modules/project/organization-policies.tf +++ b/modules/project/organization-policies.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Project-level organization policies. locals { diff --git a/modules/project/outputs.tf b/modules/project/outputs.tf index ab8cb7304..1144b5400 100644 --- a/modules/project/outputs.tf +++ b/modules/project/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "alert_ids" { description = "Monitoring alert IDs." value = { diff --git a/modules/project/quotas.tf b/modules/project/quotas.tf index 22d7e9d5b..77617d274 100644 --- a/modules/project/quotas.tf +++ b/modules/project/quotas.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _quota_factory_data_raw = merge([ for f in try(fileset(var.factories_config.quotas, "*.yaml"), []) : diff --git a/modules/project/service-agents.tf b/modules/project/service-agents.tf index a1371b955..4e9bf14cb 100644 --- a/modules/project/service-agents.tf +++ b/modules/project/service-agents.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Service agents supporting resources. locals { diff --git a/modules/project/service-agents.yaml b/modules/project/service-agents.yaml index f024a58f5..8f7efc699 100644 --- a/modules/project/service-agents.yaml +++ b/modules/project/service-agents.yaml @@ -1,10 +1,10 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + - name: aiplatform-cc display_name: AI Platform Custom Code Service Agent api: aiplatform.googleapis.com diff --git a/modules/project/shared-vpc.tf b/modules/project/shared-vpc.tf index 685f9db80..9a6b6205d 100644 --- a/modules/project/shared-vpc.tf +++ b/modules/project/shared-vpc.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Shared VPC project-level configuration. locals { diff --git a/modules/project/sharedvpc-agent-iam.yaml b/modules/project/sharedvpc-agent-iam.yaml index 096c6ff85..30969fa28 100644 --- a/modules/project/sharedvpc-agent-iam.yaml +++ b/modules/project/sharedvpc-agent-iam.yaml @@ -1,10 +1,10 @@ -# Copyright 2024 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Cloud Composer # https://cloud.google.com/composer/docs/how-to/managing/configuring-shared-vpc#edit_permissions_for_the_composer_agent_service_account - service: composer.googleapis.com diff --git a/modules/project/tags.tf b/modules/project/tags.tf index 1f9ff378b..b4f38de7f 100644 --- a/modules/project/tags.tf +++ b/modules/project/tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _tag_iam = flatten([ for k, v in local.tags : [ diff --git a/modules/project/variables-iam.tf b/modules/project/variables-iam.tf index 21e107624..57462dbf3 100644 --- a/modules/project/variables-iam.tf +++ b/modules/project/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "Authoritative IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/project/variables-observability.tf b/modules/project/variables-observability.tf index 5eebaf6f0..294e100b7 100644 --- a/modules/project/variables-observability.tf +++ b/modules/project/variables-observability.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "alerts" { description = "Monitoring alerts." type = map(object({ diff --git a/modules/project/variables-quotas.tf b/modules/project/variables-quotas.tf index d2a7b65ff..71a5aedeb 100644 --- a/modules/project/variables-quotas.tf +++ b/modules/project/variables-quotas.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "quotas" { description = "Service quota configuration." type = map(object({ diff --git a/modules/project/variables-tags.tf b/modules/project/variables-tags.tf index ac73f03fd..25cba7c29 100644 --- a/modules/project/variables-tags.tf +++ b/modules/project/variables-tags.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "network_tags" { description = "Network tags by key name. If `id` is provided, key creation is skipped. The `iam` attribute behaves like the similarly named one at module level." type = map(object({ diff --git a/modules/project/variables.tf b/modules/project/variables.tf index d2b1b0ddb..0ee499e15 100644 --- a/modules/project/variables.tf +++ b/modules/project/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "auto_create_network" { description = "Whether to create the default network for the project." type = bool diff --git a/modules/project/versions.tf b/modules/project/versions.tf index b85bbf300..09f6e87ed 100644 --- a/modules/project/versions.tf +++ b/modules/project/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/project/vpc-sc.tf b/modules/project/vpc-sc.tf index cef1d73bc..a2c4dfc25 100644 --- a/modules/project/vpc-sc.tf +++ b/modules/project/vpc-sc.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description VPC-SC project-level perimeter configuration. locals { diff --git a/modules/projects-data-source/README.md b/modules/projects-data-source/README.md index c5a19d76c..2de75a982 100644 --- a/modules/projects-data-source/README.md +++ b/modules/projects-data-source/README.md @@ -1,3 +1,19 @@ + + # Projects Data Source Module This module extends functionality of [google_projects](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/projects) data source by retrieving all the projects under a specific `parent` recursively with only one API call against [Cloud Asset Inventory](https://cloud.google.com/asset-inventory) service. diff --git a/modules/projects-data-source/main.tf b/modules/projects-data-source/main.tf index 6bd5631cc..c8ab64e96 100644 --- a/modules/projects-data-source/main.tf +++ b/modules/projects-data-source/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _ignore_folder_numbers = [for folder_id in var.ignore_folders : trimprefix(folder_id, "folders/")] _ignore_folders_query = join(" AND NOT folders:", concat([""], local._ignore_folder_numbers)) diff --git a/modules/projects-data-source/outputs.tf b/modules/projects-data-source/outputs.tf index b1710fa20..54994d5ec 100644 --- a/modules/projects-data-source/outputs.tf +++ b/modules/projects-data-source/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "project_numbers" { description = "List of project numbers." value = [for item in local.projects_after_ignore : trimprefix(item.project, "projects/")] diff --git a/modules/projects-data-source/variables.tf b/modules/projects-data-source/variables.tf index 888cab21a..3f10d5c9a 100644 --- a/modules/projects-data-source/variables.tf +++ b/modules/projects-data-source/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "ignore_folders" { description = "A list of folder IDs or numbers to be excluded from the output, all the subfolders and projects are excluded from the output regardless of the include_projects variable." type = list(string) diff --git a/modules/projects-data-source/versions.tf b/modules/projects-data-source/versions.tf index 3e3b39094..dbfd5ff6c 100644 --- a/modules/projects-data-source/versions.tf +++ b/modules/projects-data-source/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/pubsub/README.md b/modules/pubsub/README.md index 958044906..3ca1e829a 100644 --- a/modules/pubsub/README.md +++ b/modules/pubsub/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Pub/Sub Module This module allows managing a single Pub/Sub topic, including multiple subscriptions and IAM bindings at the topic and subscriptions levels, as well as schemas. diff --git a/modules/pubsub/iam.tf b/modules/pubsub/iam.tf index 4e39b43a1..9edb240b4 100644 --- a/modules/pubsub/iam.tf +++ b/modules/pubsub/iam.tf @@ -1,8 +1,8 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the authoritative. + * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { subscription_iam = flatten([ for k, v in var.subscriptions : [ diff --git a/modules/pubsub/main.tf b/modules/pubsub/main.tf index bf05e8140..b09bf7ea4 100644 --- a/modules/pubsub/main.tf +++ b/modules/pubsub/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { topic_id_static = "projects/${var.project_id}/topics/${var.name}" } diff --git a/modules/pubsub/outputs.tf b/modules/pubsub/outputs.tf index 06a907a79..804c3a727 100644 --- a/modules/pubsub/outputs.tf +++ b/modules/pubsub/outputs.tf @@ -1,11 +1,11 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "name" { description = "The name of the created Pub/Sub topic." value = google_pubsub_topic.default.name diff --git a/modules/pubsub/variables.tf b/modules/pubsub/variables.tf index f2a94fc12..de844fdbc 100644 --- a/modules/pubsub/variables.tf +++ b/modules/pubsub/variables.tf @@ -1,11 +1,11 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "Topic-level IAM bindings (non-authoritative) in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/pubsub/versions.tf b/modules/pubsub/versions.tf index b8fdf8114..134fbbb25 100644 --- a/modules/pubsub/versions.tf +++ b/modules/pubsub/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/secret-manager/README.md b/modules/secret-manager/README.md index 59806f3d4..91a6bcf32 100644 --- a/modules/secret-manager/README.md +++ b/modules/secret-manager/README.md @@ -1,3 +1,19 @@ + + # Google Secret Manager Module Simple Secret Manager module that allows managing one or more secrets, their versions, and IAM bindings. diff --git a/modules/secret-manager/main.tf b/modules/secret-manager/main.tf index cdf963595..f2db25bc9 100644 --- a/modules/secret-manager/main.tf +++ b/modules/secret-manager/main.tf @@ -1,11 +1,11 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { # distinct is needed to make the expanding function argument work iam = flatten([ diff --git a/modules/secret-manager/outputs.tf b/modules/secret-manager/outputs.tf index 89215567b..4e75f7d96 100644 --- a/modules/secret-manager/outputs.tf +++ b/modules/secret-manager/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "ids" { description = "Fully qualified secret ids." value = { diff --git a/modules/secret-manager/variables.tf b/modules/secret-manager/variables.tf index 7d118c1f0..854a6302a 100644 --- a/modules/secret-manager/variables.tf +++ b/modules/secret-manager/variables.tf @@ -1,11 +1,11 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings in {SECRET => {ROLE => [MEMBERS]}} format." type = map(map(list(string))) diff --git a/modules/secret-manager/versions.tf b/modules/secret-manager/versions.tf index fd8a048ed..40ff60f08 100644 --- a/modules/secret-manager/versions.tf +++ b/modules/secret-manager/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/secure-source-manager-instance/README.md b/modules/secure-source-manager-instance/README.md index 9e9985167..099153c7a 100644 --- a/modules/secure-source-manager-instance/README.md +++ b/modules/secure-source-manager-instance/README.md @@ -1,3 +1,19 @@ + + # Secure Source Manager This module allows to create a Secure Source Manager instance and repositories in it. Additionally it allows creating instance IAM bindings and repository IAM bindings. diff --git a/modules/secure-source-manager-instance/iam.tf b/modules/secure-source-manager-instance/iam.tf index 15144931c..08de7c977 100644 --- a/modules/secure-source-manager-instance/iam.tf +++ b/modules/secure-source-manager-instance/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { repository_iam = merge([for k1, v1 in var.repositories : { for k2, v2 in v1.iam : "${k1}.${k2}" => { diff --git a/modules/secure-source-manager-instance/main.tf b/modules/secure-source-manager-instance/main.tf index f22f6a4be..e0d40decf 100644 --- a/modules/secure-source-manager-instance/main.tf +++ b/modules/secure-source-manager-instance/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_secure_source_manager_instance" "instance" { count = var.instance_create ? 1 : 0 instance_id = var.instance_id diff --git a/modules/secure-source-manager-instance/outputs.tf b/modules/secure-source-manager-instance/outputs.tf index 9ea6f5acb..cce6d278c 100644 --- a/modules/secure-source-manager-instance/outputs.tf +++ b/modules/secure-source-manager-instance/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "instance" { description = "Instance." value = try(google_secure_source_manager_instance.instance[0], null) diff --git a/modules/secure-source-manager-instance/variables-iam.tf b/modules/secure-source-manager-instance/variables-iam.tf index 253c797fe..86d91a7d6 100644 --- a/modules/secure-source-manager-instance/variables-iam.tf +++ b/modules/secure-source-manager-instance/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings." type = map(list(string)) diff --git a/modules/secure-source-manager-instance/variables.tf b/modules/secure-source-manager-instance/variables.tf index 4f06dd965..15dc489a5 100644 --- a/modules/secure-source-manager-instance/variables.tf +++ b/modules/secure-source-manager-instance/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "ca_pool" { description = "CA pool." type = string diff --git a/modules/secure-source-manager-instance/versions.tf b/modules/secure-source-manager-instance/versions.tf index 8912f2dfc..bd581f939 100644 --- a/modules/secure-source-manager-instance/versions.tf +++ b/modules/secure-source-manager-instance/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/service-directory/README.md b/modules/service-directory/README.md index c89fe1435..2a50a673c 100644 --- a/modules/service-directory/README.md +++ b/modules/service-directory/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Service Directory Module This module allows managing a single [Service Directory](https://cloud.google.com/service-directory) namespace, including multiple services, endpoints and IAM bindings at the namespace and service levels. diff --git a/modules/service-directory/main.tf b/modules/service-directory/main.tf index 25017a286..09aa7eea6 100644 --- a/modules/service-directory/main.tf +++ b/modules/service-directory/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { endpoint_list = flatten([ for name, attrs in var.services : [ diff --git a/modules/service-directory/outputs.tf b/modules/service-directory/outputs.tf index 964a2136a..a564c8ef4 100644 --- a/modules/service-directory/outputs.tf +++ b/modules/service-directory/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "endpoints" { description = "Endpoint resources." value = google_service_directory_endpoint.default diff --git a/modules/service-directory/variables.tf b/modules/service-directory/variables.tf index 8212081e1..fd818c06d 100644 --- a/modules/service-directory/variables.tf +++ b/modules/service-directory/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # we need a separate variable as address will be dynamic in most cases variable "endpoint_config" { description = "Map of endpoint attributes, keys are in service/endpoint format." diff --git a/modules/service-directory/versions.tf b/modules/service-directory/versions.tf index 6cbbc0ff0..96c0a514d 100644 --- a/modules/service-directory/versions.tf +++ b/modules/service-directory/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/source-repository/README.md b/modules/source-repository/README.md index 31c384da2..ff23ddcbc 100644 --- a/modules/source-repository/README.md +++ b/modules/source-repository/README.md @@ -1,3 +1,19 @@ + + # Google Cloud Source Repository Module This module allows managing a single Cloud Source Repository, including IAM bindings and basic Cloud Build triggers. diff --git a/modules/source-repository/iam.tf b/modules/source-repository/iam.tf index 43de49231..7d1e3d524 100644 --- a/modules/source-repository/iam.tf +++ b/modules/source-repository/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings. locals { diff --git a/modules/source-repository/main.tf b/modules/source-repository/main.tf index d74b7e6c8..a7ae787bb 100644 --- a/modules/source-repository/main.tf +++ b/modules/source-repository/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - resource "google_sourcerepo_repository" "default" { project = var.project_id name = var.name diff --git a/modules/source-repository/outputs.tf b/modules/source-repository/outputs.tf index 3b06d30cd..cb1473181 100644 --- a/modules/source-repository/outputs.tf +++ b/modules/source-repository/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "id" { description = "Fully qualified repository id." value = google_sourcerepo_repository.default.id diff --git a/modules/source-repository/variables-iam.tf b/modules/source-repository/variables-iam.tf index 4299d4554..ab682e5d1 100644 --- a/modules/source-repository/variables-iam.tf +++ b/modules/source-repository/variables-iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "iam" { description = "IAM bindings in {ROLE => [MEMBERS]} format." type = map(list(string)) diff --git a/modules/source-repository/variables.tf b/modules/source-repository/variables.tf index a467f9fe0..165ca6e17 100644 --- a/modules/source-repository/variables.tf +++ b/modules/source-repository/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "name" { description = "Repository name." type = string diff --git a/modules/source-repository/versions.tf b/modules/source-repository/versions.tf index e891a77e1..3e4f95a09 100644 --- a/modules/source-repository/versions.tf +++ b/modules/source-repository/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/spanner-instance-se/README.md b/modules/spanner-instance-se/README.md index 64ab01d76..fe96c47e6 100644 --- a/modules/spanner-instance-se/README.md +++ b/modules/spanner-instance-se/README.md @@ -1,3 +1,19 @@ + + # Spanner instance This module allows to create a spanner instance with associated spanner instance config and databases in the instance. Additionally it allows creating instance IAM bindings and database IAM bindings. diff --git a/modules/spanner-instance-se/iam.tf b/modules/spanner-instance-se/iam.tf index 582d2bb14..38c048707 100644 --- a/modules/spanner-instance-se/iam.tf +++ b/modules/spanner-instance-se/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { spanner_database_iam = merge([for k1, v1 in var.databases : { for k2, v2 in v1.iam : "${k1}.${k2}" => { diff --git a/modules/spanner-instance-se/main.tf b/modules/spanner-instance-se/main.tf index 0f74b8b8e..48c7c3444 100644 --- a/modules/spanner-instance-se/main.tf +++ b/modules/spanner-instance-se/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { spanner_instance = ( var.instance_create diff --git a/modules/spanner-instance-se/outputs.tf b/modules/spanner-instance-se/outputs.tf index 7de01704f..dcf52a693 100644 --- a/modules/spanner-instance-se/outputs.tf +++ b/modules/spanner-instance-se/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "spanner_database_ids" { description = "Spanner database ids." value = { for k, v in google_spanner_database.spanner_databases : k => v.id } diff --git a/modules/spanner-instance-se/variables.tf b/modules/spanner-instance-se/variables.tf index d2a80a784..15c3a8110 100644 --- a/modules/spanner-instance-se/variables.tf +++ b/modules/spanner-instance-se/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "databases" { description = "Databases." type = map(object({ diff --git a/modules/spanner-instance-se/versions.tf b/modules/spanner-instance-se/versions.tf index f569ce5af..c019728ee 100644 --- a/modules/spanner-instance-se/versions.tf +++ b/modules/spanner-instance-se/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2024 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v35.0.0 diff --git a/modules/spanner-instance/README.md b/modules/spanner-instance/README.md index ea0f0a147..58b976985 100644 --- a/modules/spanner-instance/README.md +++ b/modules/spanner-instance/README.md @@ -1,3 +1,19 @@ + + # Spanner instance This module allows to create a spanner instance with associated spanner instance config and databases in the instance. Additionally it allows creating instance IAM bindings and database IAM bindings. diff --git a/modules/spanner-instance/iam.tf b/modules/spanner-instance/iam.tf index 582d2bb14..38c048707 100644 --- a/modules/spanner-instance/iam.tf +++ b/modules/spanner-instance/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { spanner_database_iam = merge([for k1, v1 in var.databases : { for k2, v2 in v1.iam : "${k1}.${k2}" => { diff --git a/modules/spanner-instance/main.tf b/modules/spanner-instance/main.tf index ca9189b0b..1a24e215d 100644 --- a/modules/spanner-instance/main.tf +++ b/modules/spanner-instance/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { spanner_instance = ( var.instance_create diff --git a/modules/spanner-instance/outputs.tf b/modules/spanner-instance/outputs.tf index 7de01704f..dcf52a693 100644 --- a/modules/spanner-instance/outputs.tf +++ b/modules/spanner-instance/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "spanner_database_ids" { description = "Spanner database ids." value = { for k, v in google_spanner_database.spanner_databases : k => v.id } diff --git a/modules/spanner-instance/variables.tf b/modules/spanner-instance/variables.tf index 5fa865e38..af038a1f7 100644 --- a/modules/spanner-instance/variables.tf +++ b/modules/spanner-instance/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "databases" { description = "Databases." type = map(object({ diff --git a/modules/spanner-instance/versions.tf b/modules/spanner-instance/versions.tf index a1030e147..86d52662b 100644 --- a/modules/spanner-instance/versions.tf +++ b/modules/spanner-instance/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/vpc-sc/README.md b/modules/vpc-sc/README.md index 0d0edf39f..16355bac8 100644 --- a/modules/vpc-sc/README.md +++ b/modules/vpc-sc/README.md @@ -1,3 +1,19 @@ + + # VPC Service Controls This module offers a unified interface to manage VPC Service Controls [Access Policy](https://cloud.google.com/access-context-manager/docs/create-access-policy), [Access Levels](https://cloud.google.com/access-context-manager/docs/manage-access-levels), and [Service Perimeters](https://cloud.google.com/vpc-service-controls/docs/service-perimeters). diff --git a/modules/vpc-sc/access-levels.tf b/modules/vpc-sc/access-levels.tf index b173f0f60..58e507125 100644 --- a/modules/vpc-sc/access-levels.tf +++ b/modules/vpc-sc/access-levels.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Access level resources. # this code implements "additive" access levels, if "authoritative" diff --git a/modules/vpc-sc/factory.tf b/modules/vpc-sc/factory.tf index 128a17a40..59dc88f30 100644 --- a/modules/vpc-sc/factory.tf +++ b/modules/vpc-sc/factory.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { _data = { for k, v in local._data_paths : k => { diff --git a/modules/vpc-sc/iam.tf b/modules/vpc-sc/iam.tf index 9b475b68f..73d1fdf7a 100644 --- a/modules/vpc-sc/iam.tf +++ b/modules/vpc-sc/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings resource "google_access_context_manager_access_policy_iam_binding" "authoritative" { diff --git a/modules/vpc-sc/main.tf b/modules/vpc-sc/main.tf index 89434d05c..7be9265b9 100644 --- a/modules/vpc-sc/main.tf +++ b/modules/vpc-sc/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2024 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { access_policy = try( google_access_context_manager_access_policy.default[0].name, diff --git a/modules/vpc-sc/outputs.tf b/modules/vpc-sc/outputs.tf index 280ba4410..eff853e0c 100644 --- a/modules/vpc-sc/outputs.tf +++ b/modules/vpc-sc/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2022 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "access_level_names" { description = "Access level resources." value = { diff --git a/modules/vpc-sc/service-perimeters-bridge.tf b/modules/vpc-sc/service-perimeters-bridge.tf index c3ca5cae6..8c18f79b1 100644 --- a/modules/vpc-sc/service-perimeters-bridge.tf +++ b/modules/vpc-sc/service-perimeters-bridge.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Bridge service perimeter resources. # this code implements "additive" service perimeters, if "authoritative" diff --git a/modules/vpc-sc/service-perimeters-regular.tf b/modules/vpc-sc/service-perimeters-regular.tf index d5801042c..97723dd7f 100644 --- a/modules/vpc-sc/service-perimeters-regular.tf +++ b/modules/vpc-sc/service-perimeters-regular.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description Regular service perimeter resources. # this code implements "additive" service perimeters, if "authoritative" diff --git a/modules/vpc-sc/variables.tf b/modules/vpc-sc/variables.tf index c933a7759..a115c03cf 100644 --- a/modules/vpc-sc/variables.tf +++ b/modules/vpc-sc/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2025 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "access_levels" { description = "Access level definitions." type = map(object({ diff --git a/modules/vpc-sc/versions.tf b/modules/vpc-sc/versions.tf index 17920aff8..e0d2c3fd1 100644 --- a/modules/vpc-sc/versions.tf +++ b/modules/vpc-sc/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/modules/workflows/README.md b/modules/workflows/README.md index 18dda612f..2237892f0 100644 --- a/modules/workflows/README.md +++ b/modules/workflows/README.md @@ -1,3 +1,19 @@ + + # Workflows Module Simple module for creating a workflow encryped by a CMEK. diff --git a/modules/workflows/iam.tf b/modules/workflows/iam.tf index fd891e0cc..46e002edf 100644 --- a/modules/workflows/iam.tf +++ b/modules/workflows/iam.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_project_iam_binding" "bindings" { for_each = var.iam diff --git a/modules/workflows/main.tf b/modules/workflows/main.tf index eb48a37b2..4752dbb03 100644 --- a/modules/workflows/main.tf +++ b/modules/workflows/main.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ resource "google_workflows_workflow" "workflow" { depends_on = [ diff --git a/modules/workflows/outputs.tf b/modules/workflows/outputs.tf index 81c096917..cf9a63577 100644 --- a/modules/workflows/outputs.tf +++ b/modules/workflows/outputs.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ output "service_account" { description = "The workflow service account." diff --git a/modules/workflows/variables.tf b/modules/workflows/variables.tf index 34a9dc1d1..77505bddf 100644 --- a/modules/workflows/variables.tf +++ b/modules/workflows/variables.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ variable "deletion_protection" { description = "Deletion proteciton." diff --git a/modules/workstation-cluster/README.md b/modules/workstation-cluster/README.md index e6f690905..7f32dd1e8 100644 --- a/modules/workstation-cluster/README.md +++ b/modules/workstation-cluster/README.md @@ -1,3 +1,19 @@ + + # Workstation cluster This module allows to create a workstation cluster with associated workstation configs and workstations. In addition to this it allows to set up IAM bindings for the workstation configs and the workstations. diff --git a/modules/workstation-cluster/iam.tf b/modules/workstation-cluster/iam.tf index 491c5f212..937aab186 100644 --- a/modules/workstation-cluster/iam.tf +++ b/modules/workstation-cluster/iam.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - # tfdoc:file:description IAM bindings locals { diff --git a/modules/workstation-cluster/main.tf b/modules/workstation-cluster/main.tf index 39da0d1e1..6e26ebacf 100644 --- a/modules/workstation-cluster/main.tf +++ b/modules/workstation-cluster/main.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - locals { workstations = merge(flatten([for k1, v1 in var.workstation_configs : { for k2, v2 in v1.workstations : diff --git a/modules/workstation-cluster/outputs.tf b/modules/workstation-cluster/outputs.tf index 788d11466..781dfdb92 100644 --- a/modules/workstation-cluster/outputs.tf +++ b/modules/workstation-cluster/outputs.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - output "cluster_hostname" { description = "Cluster hostname." value = var.private_cluster_config != null ? google_workstations_workstation_cluster.cluster.private_cluster_config[0].cluster_hostname : null diff --git a/modules/workstation-cluster/variables.tf b/modules/workstation-cluster/variables.tf index 71e0bc303..c277ea654 100644 --- a/modules/workstation-cluster/variables.tf +++ b/modules/workstation-cluster/variables.tf @@ -1,5 +1,5 @@ /** - * Copyright 2023 Google LLC + * Copyright 2026 Google LLC * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - variable "annotations" { description = "Workstation cluster annotations." type = map(string) diff --git a/modules/workstation-cluster/versions.tf b/modules/workstation-cluster/versions.tf index 69d8b9b2f..e942341f3 100644 --- a/modules/workstation-cluster/versions.tf +++ b/modules/workstation-cluster/versions.tf @@ -1,16 +1,18 @@ -# Copyright 2025 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # Fabric release: v38.0.0 diff --git a/project-config.yml b/project-config.yml new file mode 100644 index 000000000..98fbec3fb --- /dev/null +++ b/project-config.yml @@ -0,0 +1,42 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +projects: + # Stage 0 + - name: centralized-logging-project + project_name: "lz-audit-" + # Stage 1 + - name: automation-project + project_name: "--iac" + - name: billing-export-project + project_name: "--billing" + - name: log-export-project + project_name: "--logging" + # Stage 3 + - name: dev-net-host + project_name: "--dev-net" + - name: test-net-host + project_name: "--test-net" + - name: prod-net-host + project_name: "--prod-net" + - name: vdss-host-project + project_name: "--vdss-host" + # Stage 4 + - name: dev-sec-project + project_name: "--d-sec" + - name: prod-sec-project + project_name: "--p-sec" + # Stage 5 + - name: tenant-projects + project_name: "-" diff --git a/releases.md b/releases.md index 71e2eec8f..7dacce70d 100644 --- a/releases.md +++ b/releases.md @@ -1,3 +1,19 @@ + + # Release Strategy and Documentation This document outlines the versioning scheme, release classification, and release automation process for the `stellar-engine` repository. diff --git a/scripts/README.md b/scripts/README.md index 60566be17..d24f669ea 100644 --- a/scripts/README.md +++ b/scripts/README.md @@ -1,3 +1,19 @@ + + # Stellar Engine Experimental Tools This directory contains a suite of powerful automation scripts designed to streamline the deployment, management, and destruction of Stellar Engine environments. These tools are built to be robust, resumable, and transparent. diff --git a/scripts/allow_bq.sh b/scripts/allow_bq.sh index fc7a39fd8..1e6bfea0f 100755 --- a/scripts/allow_bq.sh +++ b/scripts/allow_bq.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + #### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) diff --git a/scripts/clean.sh b/scripts/clean.sh index 099c0316f..8e92acb3e 100755 --- a/scripts/clean.sh +++ b/scripts/clean.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + #### This script is an experamental state, and is designed to help clean environemnts #### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. diff --git a/scripts/common-functions.sh b/scripts/common-functions.sh index 9121caf43..7c6bfba98 100644 --- a/scripts/common-functions.sh +++ b/scripts/common-functions.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Common functions for Stellar Engine deployment scripts # Source this file in other scripts to use these functions diff --git a/scripts/config.env.sample b/scripts/config.env.sample index ffe218e2d..b839963e1 100644 --- a/scripts/config.env.sample +++ b/scripts/config.env.sample @@ -1,3 +1,17 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + BILLING_ACCOUNT=012345-67890-12345 BOOTSTRAP_PROJECT_ID=bootstrap-project COMPLIANCE_REGIME=FEDRAMP_HIGH diff --git a/scripts/deploy.sh b/scripts/deploy.sh index 058c04172..aa08ff4f0 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -1,4 +1,17 @@ #!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. #### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. diff --git a/scripts/destroy.sh b/scripts/destroy.sh index 4c6cf6ecf..8a6658731 100755 --- a/scripts/destroy.sh +++ b/scripts/destroy.sh @@ -1,4 +1,17 @@ #!/bin/bash +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. #### Use this script at your own risk. The author assumes no responsibility for any damages or losses incurred through its use. diff --git a/scripts/restore.sh b/scripts/restore.sh index b5a9bfb7f..3752c9fb7 100644 --- a/scripts/restore.sh +++ b/scripts/restore.sh @@ -1,5 +1,5 @@ #!/bin/bash -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,6 +14,7 @@ # limitations under the License. + #### This script is an experemental state, and is designed to help restore environment where the prefix has not been changed #### It is currently best used via copy-and-paste of commands as needed (after sourcing config.env) #### You may still need to change the name of custom org policies in the yaml files for a succesful deployment diff --git a/tenants/sample-tenant.yml b/tenants/sample-tenant.yml new file mode 100644 index 000000000..69dc36240 --- /dev/null +++ b/tenants/sample-tenant.yml @@ -0,0 +1,27 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +name: "sample-tenant" +environment: "dev" +admin_principal: "group:gcp-devops@example.com" +locations: + gcs: "us-east4" + kms: "us-east4" +size: "M" +tenant_specific_envs: "dev" +spoke_subnets: + dev: "10.88.12.0/22" + test: "10.92.12.0/22" + prod: "10.96.12.0/22" +deploy_network_project: true diff --git a/tools/__init__.py b/tools/__init__.py index 5678014ca..9f71a2dc3 100644 --- a/tools/__init__.py +++ b/tools/__init__.py @@ -1,13 +1,14 @@ -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + diff --git a/tools/changelog.py b/tools/changelog.py index cbf1f2abf..503210abb 100755 --- a/tools/changelog.py +++ b/tools/changelog.py @@ -1,11 +1,11 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + import click import collections diff --git a/tools/check_boilerplate.py b/tools/check_boilerplate.py index a0f3ad873..30abf205f 100755 --- a/tools/check_boilerplate.py +++ b/tools/check_boilerplate.py @@ -1,18 +1,19 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + '''Check that boilerplate is present in relevant files. This tools offers a simple way of ensuring that the required boilerplate header diff --git a/tools/check_documentation.py b/tools/check_documentation.py index fab527da3..c38f01348 100755 --- a/tools/check_documentation.py +++ b/tools/check_documentation.py @@ -1,18 +1,19 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + '''Recursively check freshness of tfdoc's generated tables in README files. This tool recursively checks that the embedded variables and outputs tables in diff --git a/tools/check_links.py b/tools/check_links.py index 202bc6401..e00ee2699 100755 --- a/tools/check_links.py +++ b/tools/check_links.py @@ -1,18 +1,19 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + '''Recursively check link destination validity in Markdown files. This tool recursively checks that local links in Markdown files point to valid diff --git a/tools/check_names.py b/tools/check_names.py index eb9b395df..ad858dbcc 100755 --- a/tools/check_names.py +++ b/tools/check_names.py @@ -1,17 +1,18 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + 'Parse names from specific Terraform resources and optionally check length.' import collections diff --git a/tools/create_e2e_sandbox.sh b/tools/create_e2e_sandbox.sh index 206a274a7..0403ea314 100755 --- a/tools/create_e2e_sandbox.sh +++ b/tools/create_e2e_sandbox.sh @@ -1,11 +1,11 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -13,6 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # # create_e2e_sandbox.sh # diff --git a/tools/latency/baseline.py b/tools/latency/baseline.py new file mode 100644 index 000000000..1567ea19e --- /dev/null +++ b/tools/latency/baseline.py @@ -0,0 +1,72 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import time +import os +from Crypto.Cipher import AES + + +# --- Configuration --- +PAYLOAD = b"A" * 32 +ITERATIONS = 1000 +WARM_UP_RUNS = 50 +LOCAL_KEY = os.urandom(32) +IV = os.urandom(16) + + +# --- Execution --- +latencies = [] + + +print(f"Starting {ITERATIONS} LOCAL AES-256 Encrypt calls...") + + +for i in range(ITERATIONS): + start_time = time.perf_counter() + + + cipher = AES.new(LOCAL_KEY, AES.MODE_CFB, IV) + cipher.encrypt(PAYLOAD) + + + end_time = time.perf_counter() + latency_ms = (end_time - start_time) * 1000 + if i >= WARM_UP_RUNS: + latencies.append(latency_ms) + + +# --- Analysis --- +if latencies: + latencies.sort() + + + valid_count = len(latencies) + avg_latency = sum(latencies) / valid_count + + + p95_index = int(len(latencies) * 0.95) - 1 + p99_index = int(len(latencies) * 0.99) - 1 + + + p95_latency = latencies[p95_index] + p99_latency = latencies[p99_index] + + + print("\n--- BASELINE Latency Results (Local Crypto) ---") + print(f"Tests Completed: {valid_count} (excluding warm-up)") + print(f"Average Latency: {avg_latency:.6f} ms") + print(f"P95 Latency: {p95_latency:.6f} ms (95% of requests are faster than this)") + print(f"P99 Latency: {p99_latency:.6f} ms (99% of requests are faster than this)") +else: + print("No valid latency data collected.") diff --git a/tools/latency/hybrid.py b/tools/latency/hybrid.py new file mode 100644 index 000000000..68874d2e5 --- /dev/null +++ b/tools/latency/hybrid.py @@ -0,0 +1,71 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import time +import base64 +from google.cloud import kms_v1 + + +# --- Configuration --- +PAYLOAD = b"A" * 32 +ITERATIONS = 1000 +WARM_UP_RUNS = 50 +KEY_RESOURCE_NAME = "projects/${var.kms_project_id}/locations/${var.kms_location}/keyRings/${var.kms_key_ring}/cryptoKeys/${var.kms_key_name}" + + +# --- Execution --- +client = kms_v1.KeyManagementServiceClient() +latencies = [] + + +print(f"Starting {ITERATIONS} KMS Encrypt calls for key: {KEY_RESOURCE_NAME}...") + + +for i in range(ITERATIONS): + start_time = time.perf_counter() # begins measurements + + try: + response = client.encrypt(name=KEY_RESOURCE_NAME, plaintext=PAYLOAD) + + except Exception as e: + print(f"Error during KMS call at iteration {i}: {e}") + continue + + end_time = time.perf_counter() + latency_ms = (end_time - start_time) * 1000 + if i >= WARM_UP_RUNS: + latencies.append(latency_ms) + + +# --- Analysis --- +if latencies: + latencies.sort() + + valid_count = len(latencies) + avg_latency = sum(latencies) / valid_count + + p95_index = int(len(latencies) * 0.95) - 1 + p99_index = int(len(latencies) * 0.99) - 1 + + p95_latency = latencies[p95_index] + p99_latency = latencies[p99_index] + + + print("\n--- KMS Latency Results ---") + print(f"Tests Completed: {valid_count} (excluding warm-up)") + print(f"Average Latency: {avg_latency:.6f} ms") + print(f"P95 Latency: {p95_latency:.6f} ms (95% of requests are faster than this)") + print(f"P99 Latency: {p99_latency:.6f} ms (99% of requests are faster than this)") +else: + print("No valid latency data collected.") \ No newline at end of file diff --git a/tools/latency/hybridenvelope.py b/tools/latency/hybridenvelope.py new file mode 100644 index 000000000..0d154e5d8 --- /dev/null +++ b/tools/latency/hybridenvelope.py @@ -0,0 +1,120 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import time +import os +from Crypto.Cipher import AES +from google.cloud import kms_v1 + + +# --- Global Configuration --- +FULL_TEST_ITERATIONS = 1000 +WARM_UP_RUNS = 50 + + +# KMS Key Configuration (The Master Key) +KEY_RESOURCE_NAME = "projects/${var.kms_project_id}/locations/${var.kms_location}/keyRings/${var.kms_key_ring}/cryptoKeys/${var.kms_key_name}" +CLIENT = kms_v1.KeyManagementServiceClient() + + +BULK_PAYLOAD_SIZE = (1024 * 1024) # 1 MB +IV_LENGTH = 16 + + +# --- Execution & Data Collection --- +kms_latencies = [] +local_bulk_latencies = [] +full_envelope_latencies = [] + + +print(f"Starting {FULL_TEST_ITERATIONS} Envelope Encryption Cycles...") + + +for i in range(FULL_TEST_ITERATIONS): + BULK_PAYLOAD = os.urandom(BULK_PAYLOAD_SIZE) + + DEK_LOCAL = os.urandom(32) + + # --- Measure Sub-Process A: Remote Encryption (KMS API Call) --- + start_time_kms = time.perf_counter() + start_time_full = time.perf_counter() # Start timer for the whole process + + + try: + kms_response = CLIENT.encrypt(name=KEY_RESOURCE_NAME, plaintext=DEK_LOCAL) + ENCRYPTED_DEK = kms_response.ciphertext + + except Exception as e: + print(f"FATAL ERROR at iteration {i}: KMS encryption failed: {e}") + break # Exit the loop immediately on fatal error + + + end_time_kms = time.perf_counter() + kms_latency = (end_time_kms - start_time_kms) * 1000 + + # --- Measure Sub-Process B: Local Encryption (Bulk Data) --- + start_time_local = time.perf_counter() + + + try: + cipher_local = AES.new(DEK_LOCAL, AES.MODE_CFB, IV=os.urandom(IV_LENGTH)) + ENCRYPTED_DATA = cipher_local.encrypt(BULK_PAYLOAD) + except Exception as e: + print(f"FATAL ERROR at iteration {i}: Local encryption failed: {e}") + break + + + end_time_local = time.perf_counter() + end_time_full = time.perf_counter() + local_latency = (end_time_local - start_time_local) * 1000 + full_latency = (end_time_full - start_time_full) * 1000 + + + if i >= WARM_UP_RUNS: + kms_latencies.append(kms_latency) + local_bulk_latencies.append(local_latency) + full_envelope_latencies.append(full_latency) + + + + +# --- Analysis --- +def analyze_latency(latencies, name): + if not latencies: + print(f"\n--- {name} Results ---") + print("No valid data collected.") + return + + + latencies.sort() + valid_count = len(latencies) + avg_latency = sum(latencies) / valid_count + + p95_index = int(valid_count * 0.95) - 1 + p99_index = int(valid_count * 0.99) - 1 + + p95_latency = latencies[p95_index] + p99_latency = latencies[p99_index] + + + print(f"\n--- {name} Results ---") + print(f"Tests Completed: {valid_count} (excluding warm-up)") + print(f"Average Latency: {avg_latency:.3f} ms") + print(f"P95 Latency: {p95_latency:.3f} ms") + print(f"P99 Latency: {p99_latency:.3f} ms") + + +analyze_latency(full_envelope_latencies, "FULL ENVELOPE ENCRYPTION") +analyze_latency(kms_latencies, "KMS DEK ENCRYPTION ONLY") +analyze_latency(local_bulk_latencies, "LOCAL BULK ENCRYPTION ONLY") diff --git a/tools/lint.sh b/tools/lint.sh index 2b1438341..3f664bb55 100755 --- a/tools/lint.sh +++ b/tools/lint.sh @@ -1,12 +1,12 @@ #!/bin/bash -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Currently unused # DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) diff --git a/tools/lockfile/default-versions_override.tf b/tools/lockfile/default-versions_override.tf index 0cf335251..e9f73730c 100644 --- a/tools/lockfile/default-versions_override.tf +++ b/tools/lockfile/default-versions_override.tf @@ -1,16 +1,18 @@ -# Copyright 2023 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ # This file specifies the required version of the github provider used # during testing. This has to be in an override file, otherwise the diff --git a/tools/lockfile/main.tf b/tools/lockfile/main.tf index 7614f5bcd..e723acbc3 100644 --- a/tools/lockfile/main.tf +++ b/tools/lockfile/main.tf @@ -1,16 +1,18 @@ -# Copyright 2023 Google LLC -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# https://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +/** + * Copyright 2026 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ data "archive_file" "bundle" {} resource "azuread_user" "default" {} diff --git a/tools/plan_summary.py b/tools/plan_summary.py index 441c638c6..257977196 100755 --- a/tools/plan_summary.py +++ b/tools/plan_summary.py @@ -1,12 +1,12 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, @@ -14,6 +14,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + import click import sys import tempfile diff --git a/tools/sort_tf_file.awk b/tools/sort_tf_file.awk new file mode 100644 index 000000000..9fb7edb7f --- /dev/null +++ b/tools/sort_tf_file.awk @@ -0,0 +1,95 @@ +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Modified from https://gist.github.com/yermulnik/7e0cf991962680d406692e1db1b551e6 for use on MacOS to sort variables + +# https://gist.github.com/yermulnik/7e0cf991962680d406692e1db1b551e6 +# Tested with GNU Awk 5.1.0, API: 3.0 (GNU MPFR 4.1.0, GNU MP 6.2.1) +# No licensing; yermulnik@gmail.com, 2021-2024 + +# Usage: This script can be used to sort terraform blocks within various .tf files (outputs.tf, variables.tf, etc) +# Note: Run "chmod +x /sort_tf_file.awk" before using this script. +# Syntax: cat | gawk -f /sort_tf_file.awk | tee new.tf; mv new.tf + +# Examples from Working Blueprint Directory +# Sort Outputs: cat outputs.tf | gawk -f ../../../tools/sort_tf_file.awk | tee new.tf; mv new.tf outputs.tf +# Sort Variables: cat variables.tf | gawk -f ../../../tools/sort_tf_file.awk | tee new.tf; mv new.tf variables.tf + +{ + # skip blank lines at the beginning of file + if (!resource_type && length($0) == 0) next + + # pick only known Terraform resource definition block types of the 1st level + # https://github.com/hashicorp/terraform/blob/main/internal/configs/parser_config.go#L92-L230 + switch ($0) { + # ex: block_type { + case /^[[:space:]]*(import|locals|moved|removed|terraform)[[:space:]]+{/: + resource_type = $1 + resource_ident = resource_type "|" block_counter++ + break + # ex: block_type type_label name_label { + case /^[[:space:]]*(data|resource)[[:space:]]+("?[[:alnum:]_-]+"?[[:space:]]+){2}{/: + resource_type = $1 + resource_subtype = $2 + resource_name = $3 + resource_ident = resource_type "|" resource_subtype "|" resource_name + break + # ex: block_type name_label { + case /^[[:space:]]*(check|module|output|provider|variable)[[:space:]]+"?[[:alnum:]_-]+"?[[:space:]]+{/: + resource_type = $1 + resource_name = $2 + resource_ident = resource_type "|" resource_name + break + } + arr[resource_ident] = arr[resource_ident] ? arr[resource_ident] RS $0 : $0 +} END { + # exit if there was solely empty input + # (input consisting of multiple empty lines only, counts in as empty input too) + if (length(arr) == 0) exit + # declare empty array (the one to hold final result) + split("", res) + # case-insensitive string operations in this block + # (primarily for the `asort()` call below) + IGNORECASE = 1 + # sort by `resource_ident` which is a key in our case + asort(arr) + + # blank-lines-fix each block + for (item in arr) { + split(arr[item],new_arr,RS) + + # remove multiple blank lines at the end of resource definition block + while (length(new_arr[length(new_arr)]) == 0) delete new_arr[length(new_arr)] + + # add one single blank line at the end of the resource definition block + # so that blocks are delimited with a blank like to align with TF code style + new_arr[length(new_arr)+1] = RS + + # fill resulting array with data from each resource definition block + for (line in new_arr) { + # trim whitespaces at the end of each line in resource definition block + gsub(/[[:space:]]+$/, "", new_arr[line]) + res[length(res)+1] = new_arr[line] + } + } + + # ensure there are no extra blank lines at the beginning and end of data + while (length(res[1]) == 0) delete res[1] + while (length(res[length(res)]) == 0) delete res[length(res)] + + # print resulting data to stdout + for (line in res) { + print res[line] + } +} \ No newline at end of file diff --git a/tools/state_iam.py b/tools/state_iam.py index 5d07b1bac..9132f0dd5 100755 --- a/tools/state_iam.py +++ b/tools/state_iam.py @@ -1,17 +1,18 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + 'Parse and output IAM bindings from Terraform state file.' import collections diff --git a/tools/tfdoc.py b/tools/tfdoc.py index c3928a236..87dd27dd4 100755 --- a/tools/tfdoc.py +++ b/tools/tfdoc.py @@ -1,18 +1,19 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + '''Generate tables for Terraform root module files, outputs and variables. This tool generates nicely formatted Markdown tables from Terraform source diff --git a/tools/validate_metadata.py b/tools/validate_metadata.py index 2e5f55cc3..a38bc61fb 100755 --- a/tools/validate_metadata.py +++ b/tools/validate_metadata.py @@ -1,18 +1,19 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + '''Validate a YAML file against the standard blueprint metadata schema[1] [1] https://github.com/GoogleCloudPlatform/cloud-foundation-toolkit/blob/master/cli/bpmetadata/schema/bpmetadataschema.json diff --git a/tools/validate_schema.py b/tools/validate_schema.py index 461b448db..2afc5268b 100755 --- a/tools/validate_schema.py +++ b/tools/validate_schema.py @@ -1,18 +1,19 @@ #!/usr/bin/env python3 -# Copyright 2023 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # -# https://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + '''Validate YaML document against yamale schemas. Fast includes YaML driven resource factories, along with their schemas which are available at `fast/assets/schemas`. diff --git a/tools/vars_sort.awk b/tools/vars_sort.awk index fd106d6e6..36bbb4947 100755 --- a/tools/vars_sort.awk +++ b/tools/vars_sort.awk @@ -1,4 +1,4 @@ -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,6 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. + # Modified from https://gist.github.com/yermulnik/7e0cf991962680d406692e1db1b551e6 for use on MacOS to sort variables # https://gist.github.com/yermulnik/7e0cf991962680d406692e1db1b551e6