From f5118b29d2f37b2dfaed4b8abaf88b67777838ff Mon Sep 17 00:00:00 2001 From: Arnaud Lheureux Date: Wed, 4 Nov 2020 10:54:27 +0000 Subject: [PATCH] Initial commit --- .devcontainer/devcontainer.json | 43 +++ .devcontainer/docker-compose.yml | 29 ++ .gitattributes | 1 + .gitignore | 12 + .pre-commit-config.yaml | 21 ++ CHANGELOG.md | 3 + CODE_OF_CONDUCT.md | 9 + LICENSE | 21 ++ README.md | 65 ++++ configuration/README.md | 74 ++++ configuration/demo/README.md | 94 +++++ configuration/demo/level0/README.md | 44 +++ .../demo/level0/configuration.tfvars | 59 +++ .../demo/level0/dynamic_secrets.tfvars | 114 ++++++ .../demo/level0/iam_role_mapping.tfvars | 47 +++ configuration/demo/level0/keyvaults.tfvars | 99 +++++ .../demo/level0/storage_accounts.tfvars | 102 ++++++ configuration/demo/level1/README.md | 3 + configuration/demo/level2/README.md | 3 + .../networking/hub/configuration.tfvars | 27 ++ .../network_security_group_definition.tfvars | 344 ++++++++++++++++++ .../demo/level2/networking/hub/peering.tfvars | 31 ++ .../demo/level2/networking/hub/readme.md | 49 +++ .../networking/hub/virtual_networks.tfvars | 78 ++++ .../shared_services/configuration.tfvars | 77 ++++ configuration/demo/level3/README.md | 3 + .../demo/level3/aks/IAM_role_mapping.tfvars | 15 + configuration/demo/level3/aks/README.md | 73 ++++ configuration/demo/level3/aks/acr.tfvars | 17 + configuration/demo/level3/aks/aks.tfvars | 62 ++++ .../demo/level3/aks/configuration.tfvars | 22 ++ .../demo/level3/networking/spoke/README.md | 3 + .../networking/spoke/configuration.tfvars | 27 ++ .../demo/level3/networking/spoke/nsgs.tfvars | 77 ++++ .../level3/networking/spoke/peerings.tfvars | 34 ++ .../networking/spoke/vitual_networks.tfvars | 44 +++ configuration/demo/level4/README.md | 3 + configuration/non-prod/README.md | 3 + configuration/non-prod/level0/README.md | 3 + configuration/non-prod/level1/README.md | 3 + configuration/non-prod/level2/README.md | 3 + configuration/non-prod/level3/README.md | 3 + configuration/non-prod/level4/README.md | 3 + configuration/non-prod/pipelines/README.md | 3 + configuration/prod/README.md | 3 + configuration/prod/level0/README.md | 3 + configuration/prod/level1/README.md | 3 + configuration/prod/level2/README.md | 3 + configuration/prod/level3/README.md | 3 + configuration/prod/level4/README.md | 3 + configuration/prod/pipelines/README.md | 3 + configuration/sandpit/README.md | 3 + configuration/sandpit/level0/README.md | 3 + configuration/sandpit/level0/compute.tfvars | 102 ++++++ .../sandpit/level0/configuration.tfvars | 82 +++++ .../level0/diagnostics_definition.tfvars | 249 +++++++++++++ .../level0/diagnotics_log_analytics.tfvars | 133 +++++++ .../sandpit/level0/dynamic_secrets.tfvars | 152 ++++++++ .../sandpit/level0/iam_azuread.tfvars | 182 +++++++++ .../level0/iam_azuread_api_permissions.tfvars | 43 +++ .../sandpit/level0/iam_custom_roles.tfvars | 76 ++++ .../level0/iam_keyvault_policies.tfvars | 114 ++++++ .../level0/iam_managed_identities.tfvars | 32 ++ .../sandpit/level0/iam_role_mapping.tfvars | 154 ++++++++ configuration/sandpit/level0/keyvaults.tfvars | 204 +++++++++++ .../sandpit/level0/networking.tfvars | 110 ++++++ .../level0/networking_nsg_definition.tfvars | 141 +++++++ .../sandpit/level0/storage_accounts.tfvars | 101 +++++ .../sandpit/level0/subscriptions.tfvars | 20 + configuration/sandpit/level1/README.md | 3 + configuration/sandpit/level2/README.md | 3 + configuration/sandpit/level3/README.md | 3 + configuration/sandpit/level4/README.md | 3 + configuration/sandpit/pipelines/README.md | 3 + documentation/README.md | 3 + documentation/architecture_diagrams/README.md | 3 + documentation/img/101-multi-region-hub.png | Bin 0 -> 42683 bytes documentation/img/101-single-cluster.PNG | Bin 0 -> 87886 bytes documentation/img/launchpad-100.PNG | Bin 0 -> 143702 bytes 79 files changed, 3793 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 .devcontainer/docker-compose.yml create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 CHANGELOG.md create mode 100644 CODE_OF_CONDUCT.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 configuration/README.md create mode 100644 configuration/demo/README.md create mode 100644 configuration/demo/level0/README.md create mode 100644 configuration/demo/level0/configuration.tfvars create mode 100644 configuration/demo/level0/dynamic_secrets.tfvars create mode 100644 configuration/demo/level0/iam_role_mapping.tfvars create mode 100644 configuration/demo/level0/keyvaults.tfvars create mode 100644 configuration/demo/level0/storage_accounts.tfvars create mode 100644 configuration/demo/level1/README.md create mode 100644 configuration/demo/level2/README.md create mode 100644 configuration/demo/level2/networking/hub/configuration.tfvars create mode 100644 configuration/demo/level2/networking/hub/network_security_group_definition.tfvars create mode 100644 configuration/demo/level2/networking/hub/peering.tfvars create mode 100644 configuration/demo/level2/networking/hub/readme.md create mode 100644 configuration/demo/level2/networking/hub/virtual_networks.tfvars create mode 100644 configuration/demo/level2/shared_services/configuration.tfvars create mode 100644 configuration/demo/level3/README.md create mode 100644 configuration/demo/level3/aks/IAM_role_mapping.tfvars create mode 100644 configuration/demo/level3/aks/README.md create mode 100644 configuration/demo/level3/aks/acr.tfvars create mode 100644 configuration/demo/level3/aks/aks.tfvars create mode 100644 configuration/demo/level3/aks/configuration.tfvars create mode 100644 configuration/demo/level3/networking/spoke/README.md create mode 100644 configuration/demo/level3/networking/spoke/configuration.tfvars create mode 100644 configuration/demo/level3/networking/spoke/nsgs.tfvars create mode 100644 configuration/demo/level3/networking/spoke/peerings.tfvars create mode 100644 configuration/demo/level3/networking/spoke/vitual_networks.tfvars create mode 100644 configuration/demo/level4/README.md create mode 100644 configuration/non-prod/README.md create mode 100644 configuration/non-prod/level0/README.md create mode 100644 configuration/non-prod/level1/README.md create mode 100644 configuration/non-prod/level2/README.md create mode 100644 configuration/non-prod/level3/README.md create mode 100644 configuration/non-prod/level4/README.md create mode 100644 configuration/non-prod/pipelines/README.md create mode 100644 configuration/prod/README.md create mode 100644 configuration/prod/level0/README.md create mode 100644 configuration/prod/level1/README.md create mode 100644 configuration/prod/level2/README.md create mode 100644 configuration/prod/level3/README.md create mode 100644 configuration/prod/level4/README.md create mode 100644 configuration/prod/pipelines/README.md create mode 100644 configuration/sandpit/README.md create mode 100644 configuration/sandpit/level0/README.md create mode 100644 configuration/sandpit/level0/compute.tfvars create mode 100644 configuration/sandpit/level0/configuration.tfvars create mode 100644 configuration/sandpit/level0/diagnostics_definition.tfvars create mode 100644 configuration/sandpit/level0/diagnotics_log_analytics.tfvars create mode 100644 configuration/sandpit/level0/dynamic_secrets.tfvars create mode 100644 configuration/sandpit/level0/iam_azuread.tfvars create mode 100644 configuration/sandpit/level0/iam_azuread_api_permissions.tfvars create mode 100644 configuration/sandpit/level0/iam_custom_roles.tfvars create mode 100644 configuration/sandpit/level0/iam_keyvault_policies.tfvars create mode 100644 configuration/sandpit/level0/iam_managed_identities.tfvars create mode 100644 configuration/sandpit/level0/iam_role_mapping.tfvars create mode 100644 configuration/sandpit/level0/keyvaults.tfvars create mode 100644 configuration/sandpit/level0/networking.tfvars create mode 100644 configuration/sandpit/level0/networking_nsg_definition.tfvars create mode 100644 configuration/sandpit/level0/storage_accounts.tfvars create mode 100644 configuration/sandpit/level0/subscriptions.tfvars create mode 100644 configuration/sandpit/level1/README.md create mode 100644 configuration/sandpit/level2/README.md create mode 100644 configuration/sandpit/level3/README.md create mode 100644 configuration/sandpit/level4/README.md create mode 100644 configuration/sandpit/pipelines/README.md create mode 100644 documentation/README.md create mode 100644 documentation/architecture_diagrams/README.md create mode 100644 documentation/img/101-multi-region-hub.png create mode 100644 documentation/img/101-single-cluster.PNG create mode 100644 documentation/img/launchpad-100.PNG diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..94f1c494 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,43 @@ +{ + "name": "CAF Starter Terraform landing zones", + + // Update the 'dockerComposeFile' list if you have more compose files or use different names. + "dockerComposeFile": "docker-compose.yml", + + // Container user to use in VSCode Online and GitHub Codespaces + "containerUser" : "vscode", + + // The 'service' property is the name of the service for the container that VS Code should + // use. Update this value and .devcontainer/docker-compose.yml to the real service name. + "service": "rover", + + // The optional 'workspaceFolder' property is the path VS Code should open by default when + // connected. This is typically a volume mount in .devcontainer/docker-compose.yml + "workspaceFolder": "/tf/caf", + + // Use 'settings' to set *default* container specific settings.json values on container create. + // You can edit these settings after create using File > Preferences > Settings > Remote. + "settings": { + "files.eol": "\n", + "terminal.integrated.shell.linux": "/bin/bash", + "editor.tabSize": 2, + "terminal.integrated.scrollback": 8000, + }, + + // Uncomment the next line if you want start specific services in your Docker Compose config. + // "runServices": [], + + // Uncomment this like if you want to keep your containers running after VS Code shuts down. + // "shutdownAction": "none", + + // Uncomment the next line to run commands after the container is created. + "postCreateCommand": "cp -R /tmp/.ssh-localhost/* ~/.ssh && sudo chmod 600 ~/.ssh/* && sudo chown -R $(whoami) /tf/caf && git config --global core.editor vi && pre-commit install && pre-commit update", + + // Add the IDs of extensions you want installed when the container is created in the array below. + "extensions": [ + "4ops.terraform", + "mutantdino.resourcemonitor", + "ms-azure-devops.azure-pipelines", + "omartawfik.github-actions-vscode" + ] +} \ No newline at end of file diff --git a/.devcontainer/docker-compose.yml b/.devcontainer/docker-compose.yml new file mode 100644 index 00000000..f56d9089 --- /dev/null +++ b/.devcontainer/docker-compose.yml @@ -0,0 +1,29 @@ +#------------------------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. +#------------------------------------------------------------------------------------------------------------- + + version: '3.7' + services: + rover: + image: aztfmod/rover:2010.2808 + user: vscode + + labels: + - "caf=Azure CAF" + + volumes: + # This is where VS Code should expect to find your project's source code + # and the value of "workspaceFolder" in .devcontainer/devcontainer.json + - ..:/tf/caf + - volume-caf-vscode:/home/vscode + - ~/.ssh:/tmp/.ssh-localhost:ro + - /var/run/docker.sock:/var/run/docker.sock + + # Overrides default command so things don't shut down after the process ends. + command: /bin/sh -c "while sleep 1000; do :; done" + + volumes: + volume-caf-vscode: + labels: + - "caf=Azure CAF" diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..6313b56c --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..a3065f4d --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +**/.terraform +**/*.tfstate +**/*.tfplan +.DS_Store +**/terraform.tfstate.d +**/terraform.tfstate.backup +**/.terraform.tfstate.lock.info +**/~*.* +**/*.log +**/backend.azurerm.tf +public +aztfmod \ No newline at end of file diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..373f5f5c --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,21 @@ +# See http://pre-commit.com for more information +# See http://pre-commit.com/hooks.html for more hooks +repos: + - repo: git://github.com/antonbabenko/pre-commit-terraform + rev: v1.43.0 + hooks: + - id: terraform_fmt + # - id: terraform_docs + # - id: terraform_tflint + # - id: terraform_tfsec + - repo: git://github.com/pre-commit/pre-commit-hooks + rev: v3.3.0 + hooks: + - id: check-merge-conflict + - id: trailing-whitespace + - id: check-yaml + - id: check-added-large-files + # - repo: git://github.com/markdownlint/markdownlint + # rev: v0.11.0 + # hooks: + # - id: markdownlint \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..61cbc3cc --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ +## 2010.0.0 + +Initial release of the landing zone starter \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..f9ba8cf6 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,9 @@ +# Microsoft Open Source Code of Conduct + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). + +Resources: + +- [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/) +- [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) +- Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..9bcfb3ec --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Microsoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..f42f21ad --- /dev/null +++ b/README.md @@ -0,0 +1,65 @@ +[![Gitter](https://badges.gitter.im/aztfmod/community.svg)](https://gitter.im/aztfmod/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Microsoft [Cloud Adoption Framework for Azure](https://aka.ms/caf) provides you with guidance and best practices to adopt Azure. + +A landing zone is a segment of a cloud environment, that has been preprovisioned through code, and is dedicated to the support of one or more workloads. Landing zones provide access to foundational tools and controls to establish a compliant place to innovate and build new workloads in the cloud, or to migrate existing workloads to the cloud. Landing zones use defined sets of cloud services and best practices to set you up for success. + +## Starter template + +The purpose of this repository is to provide you with a starting point when composing your Cloud Adoption Framework for Azure landing zones on Terraform. It provides with sample files, folder structure and advices on how to get started creating and Infrastructure as Code and DevOps environment. + +In CAF landing zones for Terraform, our approach is to separate the configuration repository and the logic repository: + +* **Configuration repository**: this template is an example of configuration repository for CAF landing zones, containing definition of the configuration for your different environments. +* **Logic repository**: the Azure CAF landing [zone repository](https://github.com/azure/caf-terraform-landingzones) + +This approach allows you to easily: +* check-in your configuration in your specific Git repository. +* resync the code with the public codebase for updates. +* customize the code if needed and contribute back to the community. + +## Getting started + +To get started with creating your environment, you can fork this repository on your Git environment (inside your personal or organization GitHub, inside an Azure DevOps project or any other Version Control System that your company uses.) + +You can then customize your environment by following the steps inside the [configuration folder](./configuration) + + +## Related repositories + +Landing zones for Terraform are composed of multiple open-source components and projects: + +| Repo | Description | +|---------------------------------------------------------------------------------------------------|------------------------------------------------------------| +| [caf-terraform-landingzones](https://github.com/azure/caf-terraform-landingzones) (You are here!) | landing zones repo with sample and core documentations | +| [rover](https://github.com/aztfmod/rover) | devops toolset for operating landing zones | +| [azure_caf_provider](https://github.com/aztfmod/terraform-provider-azurecaf) | custom provider for naming conventions | +| [modules](https://registry.terraform.io/modules/aztfmod) | CAF Terraform module | +| [Azure Kubernetes Services](https://github.com/aztfmod/landingzone_aks) | Azure Kubernetes Services landing zone | +| [Data and Analytics](https://github.com/aztfmod/landingzone_data_analytics) | Azure data and analytics services landing zone | + +## Community + +Feel free to open an issue for feature or bug, or to submit a pull request. + +In case you have any question, you can reach out to tf-landingzones at microsoft dot com. + +You can also reach us on [Gitter](https://gitter.im/aztfmod/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + +## Contributing + +This project welcomes contributions and suggestions. Most contributions require you to agree to a +Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us +the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. + +When you submit a pull request, a CLA bot will automatically determine whether you need to provide +a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions +provided by the bot. You will only need to do this once across all repos using our CLA. + +## Code of conduct + +This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). +For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or +contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/configuration/README.md b/configuration/README.md new file mode 100644 index 00000000..eb258992 --- /dev/null +++ b/configuration/README.md @@ -0,0 +1,74 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +## Creating your environment + +When creating a new environment with landing zone, you will customize and deploy the levels from the level 0 up to level 4. It is important to respect that order to deploy the enterprise configuration and hierarchy as per the [following guidance](https://github.com/Azure/caf-terraform-landingzones/blob/master/documentation/code_architecture/hierarchy.md). + +This means configuring the different variables for: + +- Launchpad (remote state management, security, bastion host, Azure DevOps environment, and DevOps agents, GitHub or Terraform Cloud) +- Foundations +- Networking (hub network, Virtual WAN, Application Gateway, etc.) +- Any application landing zone (data and analytics, Azure Kubernetes Services, etc.) + +In order to create those customized configuration environment, you can leverage: +* the examples present in this repository, +* the on the CAF landing zone [main repo](https://github.com/Azure/caf-terraform-landingzones) +* discuss with peers on [Gitter](https://gitter.im/aztfmod/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) + + +## General getting started + +### 1. Clone the public landing zones + +First step is to get the landing zones logic in the same work space, so let's clone the environment locally: + +```bash +git clone --branch 2010.0.preview2 https://github.com/Azure/caf-terraform-landingzones.git /tf/caf/public + +# Or refresh an existing clone +cd /tf/caf/public +git checkout 2010.0.preview2 +git pull +``` + +Note that if you want to be able to edit the code and submit back a pull request to the community, you can also fork it in your own GitHub environment and clone it from there. + +### 2. Login the rover to Azure + +Authenticate to your Azure environment using the following command: + +```bash +rover login -t -s +``` + +Rover will echo back the subscription selected by default for your environment. If this is not the right subscription, modify it using the following command: + +```bash +az account set -s +``` + + +## Multiple engineers in the same subscription + +If you want to have multiple users in the same subscription. In order to manage different working environment, we use the ```-env ``` to create multiple environments in the same subscription. + +It will allow you to: + +- store the Terraform state into dedicated containers. +- allow only the user that created the environment to access the state. +- tag the deployment with the environment name. + +At anytime on a given subscription you can use the following command to see the different environments deployed: + +```bash +rover landingzone list -level level0 +``` + +## Community + +Feel free to open an issue for feature or bug, or to submit a PR. + +In case you have any question, you can reach out to tf-landingzones at microsoft dot com. + +You can also reach us on [Gitter](https://gitter.im/aztfmod/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) diff --git a/configuration/demo/README.md b/configuration/demo/README.md new file mode 100644 index 00000000..6f083a70 --- /dev/null +++ b/configuration/demo/README.md @@ -0,0 +1,94 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +## DEMO ENVIRONMENT + +Assumptions: + +- Demo environment does not have pipelines and is meant to be run locally. +- Demo environment does not have diagnostics enabled. +- Demo environment does not have RBAC model + +## Deploying demo environment + +After completing the steps from the general [configuration readme](../README.md), you can start using the demo deployment: + +You can then specify the environment you are running: +```bash +export environment=demo +``` + +### 1. Launchpad-level0 landing zones + +#### Deploy the launchpad + +```bash +rover -lz /tf/caf/public/landingzones/caf_launchpad \ + -var-folder /tf/caf/configuration/${environment}/level0 \ + -parallelism 30 \ + -level level0 \ + -env ${environment} \ + -launchpad \ + -a [plan|apply|destroy] +``` + +### 2. Level 1 landing zones + +#### Deploy foundations + +```bash +rover -lz /tf/caf/public/landingzones/caf_foundations/ \ + -var-folder /tf/caf/configuration/${environment}/level1 \ + -parallelism 30 \ + -level level1 \ + -env ${environment} \ + -a [plan|apply|destroy] +``` + +### 3. Level 2 landing zones + +#### Deploy the shared services + +```bash +rover -lz /tf/caf/public/landingzones/caf_shared_services/ \ + -tfstate caf_shared_services.tfstate \ + -var-folder /tf/caf/configuration/${environment}/level2/shared_services \ + -parallelism 30 \ + -level level2 \ + -env ${environment} \ + -a [plan|apply|destroy] +``` + +#### Deploy the networking hub (required to add parallel spoke projects) + +```bash +rover -lz /tf/caf/public/landingzones/caf_networking/ \ + -tfstate networking_hub.tfstate \ + -var-folder /tf/caf/configuration/${environment}/level2/networking/hub \ + -parallelism 30 \ + -level level2 \ + -env ${environment} \ + -a [plan|apply|destroy] +``` + +### 4. Level 3 landing zones - Shared infrastructure platforms + +#### Deploy the networking spoke + +```bash +rover -lz /tf/caf/public/landingzones/caf_networking/ \ + -tfstate networking_spoke_ase.tfstate \ + -var-folder /tf/caf/configuration/${environment}/level3/networking/spoke \ + -parallelism 30 \ + -level level3 \ + -env ${environment} \ + -a [plan|apply|destroy] +``` + +#### Deploy the application platform landing zone + +This is the deployment of application platform landing zone like AKS platform, the configuration files in the repo will show you an example of AKS cluster deployment on top the levels deployed previously. + +### 7. Level 4 - Application infrastructure components + +You can use level 4 landing zones to describe and deploy an application on top of an environment described in level 3 landing zones (App Service Environment, AKS, etc.). +Keep on monitoring this repository as we will add examples related to this level. diff --git a/configuration/demo/level0/README.md b/configuration/demo/level0/README.md new file mode 100644 index 00000000..2bd4950a --- /dev/null +++ b/configuration/demo/level0/README.md @@ -0,0 +1,44 @@ +# Launchpad - scenario 100 + +The 100 scenario is designed to demonstrate a basic functional foundations to store Terraform state on Azure storage and use it centrally. +The focus of this scenario is to be able to deploy a basic launchpad from a remote machine and use the portal to review the settings in a non-constrained environment. +For example in this scenario you can go to the Key Vaults and view the secrets from the portal, a feature that is disabled in the 300+ scenarios. +We recommend using the 100 scenario for demonstration purposes. + +An estimated time of 5 minutes is required to deploy this scenario. + +## Pre-requisites + +This scenario require the following privileges: + +| Component | Privileges | +|--------------------|--------------------| +| Active Directory | None | +| Azure subscription | Subscription owner | + +## Deployment + +```bash +rover -lz /tf/caf/landingzones/caf_launchpad \ + -launchpad -var-folder \ + /tf/caf/landingzones/caf_launchpad/scenario/100 \ + -a apply + +rover -lz /tf/caf/landingzones/caf_launchpad \ + -launchpad \ + -var-folder /tf/caf/landingzones/caf_launchpad/scenario/100 \ + -a destroy +``` + +## Architecture diagram +![Launchpad 100](../../../documentation/img/launchpad-100.PNG) + +## Services deployed in this scenario + +| Component | Purpose | +|-----------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Resource group | Multiple resource groups are created to isolate the services. | +| Storage account | A storage account for remote tfstate management is provided for each level of the framework. Additional storage accounts are created for diagnostic logs. | +| Key Vault | The launchpad Key Vault hosts all secrets required by the rover to access the remote states, the Key Vault policies are created allowing the logged-in user to see secrets created and stored. | +| Virtual network | To secure the communication between the services a dedicated virtual network is deployed with a gateway subnet, bastion service, jumpbox and azure devops release agents. Service endpoints is enabled but not configured. | +| Azure AD Applications | An Azure AD application is created. This account is mainly use to bootstrap the services during the initialization. It is also considered as a breakglass account for the launchpad landing zones | diff --git a/configuration/demo/level0/configuration.tfvars b/configuration/demo/level0/configuration.tfvars new file mode 100644 index 00000000..c9265380 --- /dev/null +++ b/configuration/demo/level0/configuration.tfvars @@ -0,0 +1,59 @@ +landingzone = { + backend_type = "azurerm" + level = "level0" + key = "launchpad" +} + + +# Default region. When not set to a resource it will use that value +default_region = "region1" + +# Inherit_tags defines if a resource will inherit it's resource group tags +inherit_tags = true + +regions = { + region1 = "southeastasia" + region2 = "eastasia" +} + +launchpad_key_names = { + azuread_app = "caf_launchpad_level0" + keyvault_client_secret = "aadapp-caf-launchpad-level0" + tfstates = [ + "level0", + ] +} + +resource_groups = { + level0 = { + name = "launchpad-level0" + tags = { + level = "level0" + } + } + level1 = { + name = "launchpad-level1" + tags = { + level = "level1" + } + } + level2 = { + name = "launchpad-level2" + tags = { + level = "level2" + } + } + level3 = { + name = "launchpad-level3" + tags = { + level = "level3" + } + } + level4 = { + name = "launchpad-level4" + tags = { + level = "level4" + } + } +} + diff --git a/configuration/demo/level0/dynamic_secrets.tfvars b/configuration/demo/level0/dynamic_secrets.tfvars new file mode 100644 index 00000000..23a0258d --- /dev/null +++ b/configuration/demo/level0/dynamic_secrets.tfvars @@ -0,0 +1,114 @@ + +# Store output attributes into keyvault secret +# Those values are used by the rover to connect the current remote state and +# identity the lower level +dynamic_keyvault_secrets = { + level0 = { + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level1 = { + lower_stg = { + output_key = "storage_accounts" + resource_key = "level0" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level0" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level2 = { + lower_stg = { + output_key = "storage_accounts" + resource_key = "level1" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level1" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level3 = { + lower_stg = { + output_key = "storage_accounts" + resource_key = "level2" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level2" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level4 = { + lower_stg = { + output_key = "storage_accounts" + resource_key = "level3" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level3" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } +} \ No newline at end of file diff --git a/configuration/demo/level0/iam_role_mapping.tfvars b/configuration/demo/level0/iam_role_mapping.tfvars new file mode 100644 index 00000000..87a218b8 --- /dev/null +++ b/configuration/demo/level0/iam_role_mapping.tfvars @@ -0,0 +1,47 @@ + +# +# Services supported: subscriptions, storage accounts and resource groups +# Can assign roles to: AD groups, AD object ID, AD applications, Managed identities +# +role_mapping = { + built_in_role_mapping = { + storage_accounts = { + level0 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + } + } + level1 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + } + } + level2 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + } + } + level3 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + } + } + level4 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + } + } + } + } + +} diff --git a/configuration/demo/level0/keyvaults.tfvars b/configuration/demo/level0/keyvaults.tfvars new file mode 100644 index 00000000..00de22b4 --- /dev/null +++ b/configuration/demo/level0/keyvaults.tfvars @@ -0,0 +1,99 @@ + +keyvaults = { + level0 = { + name = "level0" + resource_group_key = "level0" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level0" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + } + + level1 = { + name = "level1" + resource_group_key = "level1" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level1" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + } + + level2 = { + name = "level2" + resource_group_key = "level2" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level2" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + } + + level3 = { + name = "level3" + resource_group_key = "level3" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level3" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + } + + level4 = { + name = "level4" + resource_group_key = "level4" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level4" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + } +} diff --git a/configuration/demo/level0/storage_accounts.tfvars b/configuration/demo/level0/storage_accounts.tfvars new file mode 100644 index 00000000..bb2834b9 --- /dev/null +++ b/configuration/demo/level0/storage_accounts.tfvars @@ -0,0 +1,102 @@ + +storage_accounts = { + level0 = { + name = "level0" + resource_group_key = "level0" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + ## Those tags must never be changed after being set as they are used by the rover to locate the launchpad and the tfstates. + # Only adjust the environment value at creation time + tfstate = "level0" + environment = "sandpit" + launchpad = "launchpad" + ## + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + + level1 = { + name = "level1" + resource_group_key = "level1" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level1" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level2 = { + name = "level2" + resource_group_key = "level2" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level2" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level3 = { + name = "level3" + resource_group_key = "level3" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level3" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level4 = { + name = "level4" + resource_group_key = "level4" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level4" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + + } + +} \ No newline at end of file diff --git a/configuration/demo/level1/README.md b/configuration/demo/level1/README.md new file mode 100644 index 00000000..f90488a0 --- /dev/null +++ b/configuration/demo/level1/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your demo environment configuration files. diff --git a/configuration/demo/level2/README.md b/configuration/demo/level2/README.md new file mode 100644 index 00000000..36f7f354 --- /dev/null +++ b/configuration/demo/level2/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your demo environment configuration files. \ No newline at end of file diff --git a/configuration/demo/level2/networking/hub/configuration.tfvars b/configuration/demo/level2/networking/hub/configuration.tfvars new file mode 100644 index 00000000..26f86034 --- /dev/null +++ b/configuration/demo/level2/networking/hub/configuration.tfvars @@ -0,0 +1,27 @@ +landingzone = { + backend_type = "azurerm" + global_settings_key = "foundations" + level = "level2" + key = "networking_hub" + tfstates = { + foundations = { + level = "lower" + tfstate = "caf_foundations.tfstate" + } + launchpad = { + level = "lower" + tfstate = "caf_foundations.tfstate" + } + } +} + +resource_groups = { + vnet_hub_re1 = { + name = "vnet-hub-re1" + region = "region1" + } + vnet_hub_re2 = { + name = "vnet-hub-re2" + region = "region2" + } +} diff --git a/configuration/demo/level2/networking/hub/network_security_group_definition.tfvars b/configuration/demo/level2/networking/hub/network_security_group_definition.tfvars new file mode 100644 index 00000000..6352fec3 --- /dev/null +++ b/configuration/demo/level2/networking/hub/network_security_group_definition.tfvars @@ -0,0 +1,344 @@ +# +# Definition of the networking security groups +# +network_security_group_definition = { + # This entry is applied to all subnets with no NSG defined + empty_nsg = { + } + + azure_bastion_nsg = { + + nsg = [ + { + name = "bastion-in-allow", + priority = "100" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "*" + }, + { + name = "bastion-control-in-allow-443", + priority = "120" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "135" + source_address_prefix = "GatewayManager" + destination_address_prefix = "*" + }, + { + name = "Kerberos-password-change", + priority = "121" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "4443" + source_address_prefix = "GatewayManager" + destination_address_prefix = "*" + }, + { + name = "bastion-vnet-out-allow-22", + priority = "103" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "bastion-vnet-out-allow-3389", + priority = "101" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "3389" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "bastion-azure-out-allow", + priority = "120" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "AzureCloud" + } + ] + } + + application_gateway = { + + nsg = [ + { + name = "Inbound-HTTP", + priority = "120" + direction = "Inbound" + access = "Allow" + protocol = "*" + source_port_range = "*" + destination_port_range = "80-82" + source_address_prefix = "*" + destination_address_prefix = "*" + }, + { + name = "Inbound-HTTPs", + priority = "130" + direction = "Inbound" + access = "Allow" + protocol = "*" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "*" + }, + { + name = "Inbound-AGW", + priority = "140" + direction = "Inbound" + access = "Allow" + protocol = "*" + source_port_range = "*" + destination_port_range = "65200-65535" + source_address_prefix = "*" + destination_address_prefix = "*" + }, + ] + } + + api_management = { + + nsg = [ + { + name = "Inbound-APIM", + priority = "100" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "3443" + source_address_prefix = "ApiManagement" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "Inbound-Redis", + priority = "110" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "6381-6383" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "Inbound-LoadBalancer", + priority = "120" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "*" + source_address_prefix = "AzureLoadBalancer" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "Outbound-StorageHttp", + priority = "100" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "80" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "Storage" + }, + { + name = "Outbound-StorageHttps", + priority = "110" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "Storage" + }, + { + name = "Outbound-AADHttp", + priority = "120" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "80" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "AzureActiveDirectory" + }, + { + name = "Outbound-AADHttps", + priority = "130" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "AzureActiveDirectory" + }, + { + name = "Outbound-SQL", + priority = "140" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "1433" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "SQL" + }, + { + name = "Outbound-EventHub", + priority = "150" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "5671-5672" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "EventHub" + }, + { + name = "Outbound-EventHubHttps", + priority = "160" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "EventHub" + }, + { + name = "Outbound-FileShareGit", + priority = "170" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "445" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "Storage" + }, + { + name = "Outbound-Health", + priority = "180" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "1886" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "INTERNET" + }, + { + name = "Outbound-Monitor", + priority = "190" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "AzureMonitor" + }, + { + name = "Outbound-MoSMTP1itor", + priority = "200" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "25" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "INTERNET" + }, + { + name = "Outbound-SMTP2", + priority = "210" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "587" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "INTERNET" + }, + { + name = "Outbound-SMTP3", + priority = "220" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "25028" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "INTERNET" + }, + { + name = "Outbound-Redis", + priority = "230" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "6381-6383" + source_address_prefix = "VirtualNetwork" + destination_address_prefix = "VirtualNetwork" + }, + ] + } + + jumpbox = { + + diagnostic_profiles = { + nsg = { + definition_key = "network_security_group" + destination_type = "storage" + destination_key = "all_regions" + } + operations = { + name = "operations" + definition_key = "network_security_group" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + nsg = [ + { + name = "ssh-inbound-22", + priority = "200" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + ] + } + +} diff --git a/configuration/demo/level2/networking/hub/peering.tfvars b/configuration/demo/level2/networking/hub/peering.tfvars new file mode 100644 index 00000000..40a1eb49 --- /dev/null +++ b/configuration/demo/level2/networking/hub/peering.tfvars @@ -0,0 +1,31 @@ + +vnet_peerings = { + hub_re1_TO_hub_re2 = { + name = "hub_re1_TO_hub_re2" + from = { + vnet_key = "hub_re1" + } + to = { + vnet_key = "hub_re2" + } + allow_virtual_network_access = true + allow_forwarded_traffic = false + allow_gateway_transit = false + use_remote_gateways = false + } + + hub_re2_TO_hub_re1 = { + name = "hub_re2_TO_hub_re1" + from = { + vnet_key = "hub_re2" + } + to = { + vnet_key = "hub_re1" + } + allow_virtual_network_access = true + allow_forwarded_traffic = false + allow_gateway_transit = false + use_remote_gateways = false + } + +} diff --git a/configuration/demo/level2/networking/hub/readme.md b/configuration/demo/level2/networking/hub/readme.md new file mode 100644 index 00000000..2bd59f76 --- /dev/null +++ b/configuration/demo/level2/networking/hub/readme.md @@ -0,0 +1,49 @@ +# CAF landing zones for Terraform - Multi-region hub with global peering + +This scenario deploys the networking hub across multiple regions + +The networking landing zone allows you to deploy most networking topologies on Microsoft Azure. The same landing zone used with different parameters should allow you to deploy most network configurations. + +* Hub and spoke +* Virtual WAN +* Application DMZ scenario +* Any custom network topology based on virtual networks or virtual WAN +* Library of network security groups definition + +Networking landing zone operates at **level 2**. + +For a review of the hierarchy approach of Cloud Adoption Framework for Azure landing zones on Terraform, you can refer to [the following documentation](../../../../documentation/code_architecture/hierarchy.md). + +## Architecture diagram + +This example allows you to deploy the following topology: + +![101-example](../../../../../documentation/img/101-multi-region-hub.png) + +## Components deployed by this example + +| Component | Type of resource | Purpose | +|----------------------------------------------------------------------------------|-------------------------|--------------------------------------------------------------------------------------------| +| vnet-hub-re1, vnet-hub-re2 | Resource group | resource group to host the virtual network | +| vnet_hub_re1, vnet-hub-re2 | Virtual network | virtual network used as a hub | +| GatewaySubnet,AzureFirewallSubnet,AzureBastionSubnet, jumpbox, private_endpoints | Virtual Subnets | virtual subnets | +| azure_bastion_nsg, empty_nsg, application_gateway, api_management, jumpbox | Network security groups | network security groups that can be attached to virtual subnets. | +| hub_re1_TO_hub_re2, and hub_re2_TO_hub_re1 | Virtual network peering | Peering between vnet_hub_re1 and vnet-hub-re2 | +| bastion-re1-pip1, bastion-re2-pip1 | Public IP address | Public IP address to be used in vnet_hub_re1 and vnet-hub-re2, to be used by Azure Bastion | +| bastion-re1, bastion-re2 | Azure Bastion | Azure Bastion host in order to access the virtual network. | + + +## Customizing this example + +Please review the configuration files and make sure you are deploying in the expected region and with the expected settings. + +## Deploying this example + +Once you have picked a scenario for test, you can deploy it using: + +```bash +rover -lz /tf/caf/landingzones/caf_networking \ +-level level2 \ +-var-folder /tf/caf/landingzones/caf_networking/scenario/101-multi-region-hub \ +-a apply +``` diff --git a/configuration/demo/level2/networking/hub/virtual_networks.tfvars b/configuration/demo/level2/networking/hub/virtual_networks.tfvars new file mode 100644 index 00000000..67af8983 --- /dev/null +++ b/configuration/demo/level2/networking/hub/virtual_networks.tfvars @@ -0,0 +1,78 @@ + +vnets = { + hub_re1 = { + resource_group_key = "vnet_hub_re1" + region = "region1" + vnet = { + name = "hub-re1" + address_space = ["100.64.100.0/22"] + } + specialsubnets = { + GatewaySubnet = { + name = "GatewaySubnet" #Must be called GateWaySubnet in order to host a Virtual Network Gateway + cidr = ["100.64.100.0/27"] + } + AzureFirewallSubnet = { + name = "AzureFirewallSubnet" #Must be called AzureFirewallSubnet + cidr = ["100.64.101.0/26"] + } + } + subnets = { + AzureBastionSubnet = { + name = "AzureBastionSubnet" #Must be called AzureBastionSubnet + cidr = ["100.64.101.64/26"] + nsg_key = "azure_bastion_nsg" + } + jumpbox = { + name = "jumpbox" + cidr = ["100.64.102.0/27"] + nsg_key = "jumpbox" + } + private_endpoints = { + name = "private_endpoints" + cidr = ["100.64.103.128/25"] + enforce_private_link_endpoint_network_policies = true + } + } + + } + + hub_re2 = { + resource_group_key = "vnet_hub_re2" + region = "region2" + vnet = { + name = "hub-re2" + address_space = ["100.65.100.0/22"] + } + specialsubnets = { + GatewaySubnet = { + name = "GatewaySubnet" #Must be called GateWaySubnet in order to host a Virtual Network Gateway + cidr = ["100.65.100.0/27"] + } + AzureFirewallSubnet = { + name = "AzureFirewallSubnet" #Must be called AzureFirewallSubnet + cidr = ["100.65.101.0/26"] + } + } + subnets = { + AzureBastionSubnet = { + name = "AzureBastionSubnet" #Must be called AzureBastionSubnet + cidr = ["100.65.101.64/26"] + nsg_key = "azure_bastion_nsg" + } + jumpbox = { + name = "jumpbox" + cidr = ["100.65.102.0/27"] + nsg_key = "jumpbox" + } + private_endpoints = { + name = "private_endpoints" + cidr = ["100.65.103.128/25"] + enforce_private_link_endpoint_network_policies = true + } + } + + } + + +} diff --git a/configuration/demo/level2/shared_services/configuration.tfvars b/configuration/demo/level2/shared_services/configuration.tfvars new file mode 100644 index 00000000..ab54f946 --- /dev/null +++ b/configuration/demo/level2/shared_services/configuration.tfvars @@ -0,0 +1,77 @@ +landingzone = { + backend_type = "azurerm" + global_settings_key = "foundations" + level = "level2" + key = "shared_services" + tfstates = { + foundations = { + level = "lower" + tfstate = "caf_foundations.tfstate" + } + launchpad = { + level = "lower" + tfstate = "caf_foundations.tfstate" + } + } +} + +resource_groups = { + primary = { + name = "sharedsvc_re1" + } +} + +recovery_vaults = { + asr1 = { + name = "vault_re1" + resource_group_key = "primary" + + region = "region1" + + backup_policies = { + vms = { + policy1 = { + name = "VMBackupPolicy1" + vault_key = "asr1" + rg_key = "primary" + timezone = "UTC" + backup = { + frequency = "Daily" + time = "23:00" + #if not desired daily, can pick weekdays as below: + #weekdays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"] + } + retention_daily = { + count = 10 + } + retention_weekly = { + count = 42 + weekdays = ["Sunday", "Wednesday", "Friday", "Saturday"] + } + retention_monthly = { + count = 7 + weekdays = ["Sunday", "Wednesday"] + weeks = ["First", "Last"] + } + retention_yearly = { + count = 77 + weekdays = ["Sunday"] + weeks = ["Last"] + months = ["January"] + } + } + } + } + } + +} + +automations = { + auto1 = { + name = "autore1" + resource_group_key = "primary" + + region = "region1" + } + +} \ No newline at end of file diff --git a/configuration/demo/level3/README.md b/configuration/demo/level3/README.md new file mode 100644 index 00000000..36f7f354 --- /dev/null +++ b/configuration/demo/level3/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your demo environment configuration files. \ No newline at end of file diff --git a/configuration/demo/level3/aks/IAM_role_mapping.tfvars b/configuration/demo/level3/aks/IAM_role_mapping.tfvars new file mode 100644 index 00000000..60029943 --- /dev/null +++ b/configuration/demo/level3/aks/IAM_role_mapping.tfvars @@ -0,0 +1,15 @@ +role_mapping = { + custom_role_mapping = {} + + built_in_role_mapping = { + azure_container_registries = { + acr1 = { + "AcrPull" = { + aks_clusters = { + keys = ["cluster_re1"] + } + } + } + } + } +} \ No newline at end of file diff --git a/configuration/demo/level3/aks/README.md b/configuration/demo/level3/aks/README.md new file mode 100644 index 00000000..1b22c6a3 --- /dev/null +++ b/configuration/demo/level3/aks/README.md @@ -0,0 +1,73 @@ +# CAF landing zones for Terraform - AKS Single Cluster example + +Deploys a Single AKS cluster in a virtual network, with one node pool. + +AKS landing zone operates at **level 3**. + +For a review of the hierarchy approach of Cloud Adoption Framework for Azure landing zones on Terraform, you can refer to [the following documentation](../../../../documentation/code_architecture/hierarchy.md). + +## Prerequisites + +Before running this example, please make sure you have setup your environment as described in the [following guide](../../readme.md) + +## Architecture diagram + +This example will sit on the [prerequisites environment](../../readme.md) and will allow you to deploy the following additional topology: + +![solutions](../../../_pictures/examples/101-single-cluster.PNG) + +## Components deployed by this example + +| Component | Type of resource | Purpose | +|--------------------------|----------------------------------|----------------------------------------------------------------| +| aks_re1, aks_nodes_re1 | Resource group | resource group to host the cluster and the node pool resources | +| akscluster-001 | AKS Cluster | AKS Cluster | +| acr | Azure Container Registry | Azure Container Registry to store containers | +| sharedsvc | AKS node pool | Default node pool for AKS cluster | +| managed public IP | Public IP | Public IP address for the node pool. | +| managed VMSS | Virtual Machines Scale Set | Scale set for the node pool. | +| managed load balancer | Load balancer | Load balancer for the node pool. | +| akscluster-001-agentpool | System Assigned Managed Identity | Managed identity for the node pool. | + +## Deploying this example + +Ensure the below is set prior to apply or destroy. + +```bash +# Login the Azure subscription +rover login -t [TENANT_ID/TENANT_NAME] -s [SUBSCRIPTION_GUID] +# Environment is needed to be defined, otherwise the below LZs will land into sandpit which someone else is working on +export environment=[YOUR_ENVIRONMENT] +``` + +## Run AKS landing zone deployment + +```bash +# Set the folder name of this example +example=101-single-cluster + +rover -lz /tf/caf/ \ + -tfstate landingzone_aks.tfstate \ + -var-folder /tf/caf/examples/aks/${example} \ + -var tags={example=\"${example}\"} \ + -env ${environment} \ + -level level3 \ + -a [plan|apply] +``` + +## Destroy an AKS landing zone deployment + +Have fun playing with the landing zone an once you are done, you can simply delete the deployment using: + +```bash +# Set the folder name of this example +example=101-single-cluster + +rover -lz /tf/caf/ \ + -tfstate landingzone_aks.tfstate \ + -var-folder /tf/caf/examples/aks/${example} \ + -var tags={example=\"${example}\"} \ + -env ${environment} \ + -level level3 \ + -a destroy -auto-approve +``` diff --git a/configuration/demo/level3/aks/acr.tfvars b/configuration/demo/level3/aks/acr.tfvars new file mode 100644 index 00000000..7393100a --- /dev/null +++ b/configuration/demo/level3/aks/acr.tfvars @@ -0,0 +1,17 @@ +azure_container_registries = { + acr1 = { + name = "acr" + resource_group_key = "aks_re1" + sku = "Premium" + # georeplication_region_keys = ["region2"] + + # you can setup up to 5 key + diagnostic_profiles = { + central_logs_region1 = { + definition_key = "azure_container_registry" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + } +} \ No newline at end of file diff --git a/configuration/demo/level3/aks/aks.tfvars b/configuration/demo/level3/aks/aks.tfvars new file mode 100644 index 00000000..707d57a5 --- /dev/null +++ b/configuration/demo/level3/aks/aks.tfvars @@ -0,0 +1,62 @@ +aks_clusters = { + cluster_re1 = { + helm_keys = ["flux", "podIdentify"] + name = "akscluster-re1-001" + resource_group_key = "aks_re1" + os_type = "Linux" + + identity = { + type = "SystemAssigned" + } + + kubernetes_version = "1.17.11" + lz_key = "networking_spoke_aks" + vnet_key = "spoke_aks_re1" + + network_policy = { + network_plugin = "azure" + load_balancer_sku = "Standard" + } + + enable_rbac = true + + # admin_groups = { + # # ids = [] + # # azuread_groups = { + # # keys = [] + # # } + # } + + load_balancer_profile = { + # Only one option can be set + managed_outbound_ip_count = 1 + # outbound_ip_prefix_ids = [] + # outbound_ip_address_ids = [] + } + + default_node_pool = { + name = "sharedsvc" + vm_size = "Standard_F4s_v2" + subnet_key = "aks_nodepool_system" + enabled_auto_scaling = false + enable_node_public_ip = false + max_pods = 30 + node_count = 1 + os_disk_size_gb = 512 + orchestrator_version = "1.17.11" + tags = { + "project" = "system services" + } + } + + node_resource_group_name = "aks-nodes-re1" + + diagnostic_profiles = { + central_logs_region1 = { + definition_key = "azure_kubernetes_cluster" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + } +} \ No newline at end of file diff --git a/configuration/demo/level3/aks/configuration.tfvars b/configuration/demo/level3/aks/configuration.tfvars new file mode 100644 index 00000000..c727fee9 --- /dev/null +++ b/configuration/demo/level3/aks/configuration.tfvars @@ -0,0 +1,22 @@ +landingzone = { + backend_type = "azurerm" + level = "level3" + key = "cluster_aks" + global_settings_key = "shared_services" + tfstates = { + shared_services = { + level = "lower" + tfstate = "caf_shared_services.tfstate" + } + networking_spoke_aks = { + tfstate = "networking_spoke_aks.tfstate" + } + } +} + +resource_groups = { + aks_re1 = { + name = "aks-re1" + region = "region1" + } +} diff --git a/configuration/demo/level3/networking/spoke/README.md b/configuration/demo/level3/networking/spoke/README.md new file mode 100644 index 00000000..36f7f354 --- /dev/null +++ b/configuration/demo/level3/networking/spoke/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your demo environment configuration files. \ No newline at end of file diff --git a/configuration/demo/level3/networking/spoke/configuration.tfvars b/configuration/demo/level3/networking/spoke/configuration.tfvars new file mode 100644 index 00000000..d0a216b3 --- /dev/null +++ b/configuration/demo/level3/networking/spoke/configuration.tfvars @@ -0,0 +1,27 @@ +landingzone = { + backend_type = "azurerm" + global_settings_key = "shared_services" + level = "level3" + key = "networking_spoke_aks" + tfstates = { + shared_services = { + level = "lower" + tfstate = "caf_shared_services.tfstate" + } + networking_hub = { + level = "lower" + tfstate = "networking_hub.tfstate" + } + } +} + + +resource_groups = { + aks_spoke_re1 = { + name = "aks-vnet-spoke-re1" + region = "region1" + } +} + + + diff --git a/configuration/demo/level3/networking/spoke/nsgs.tfvars b/configuration/demo/level3/networking/spoke/nsgs.tfvars new file mode 100644 index 00000000..0f0c406b --- /dev/null +++ b/configuration/demo/level3/networking/spoke/nsgs.tfvars @@ -0,0 +1,77 @@ + +network_security_group_definition = { + # This entry is applied to all subnets with no NSG defined + empty_nsg = {} + + azure_bastion_nsg = { + + nsg = [ + { + name = "bastion-in-allow", + priority = "100" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "*" + }, + { + name = "bastion-control-in-allow-443", + priority = "120" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "135" + source_address_prefix = "GatewayManager" + destination_address_prefix = "*" + }, + { + name = "Kerberos-password-change", + priority = "121" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "4443" + source_address_prefix = "GatewayManager" + destination_address_prefix = "*" + }, + { + name = "bastion-vnet-out-allow-22", + priority = "103" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "bastion-vnet-out-allow-3389", + priority = "101" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "3389" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "bastion-azure-out-allow", + priority = "120" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "AzureCloud" + } + ] + } +} \ No newline at end of file diff --git a/configuration/demo/level3/networking/spoke/peerings.tfvars b/configuration/demo/level3/networking/spoke/peerings.tfvars new file mode 100644 index 00000000..53fa2ce7 --- /dev/null +++ b/configuration/demo/level3/networking/spoke/peerings.tfvars @@ -0,0 +1,34 @@ +vnet_peerings = { + spoke_aks_re1_TO_hub_re1 = { + name = "spoke_aks_re1_TO_hub_re1" + from = { + vnet_key = "spoke_aks_re1" + } + to = { + lz_key = "networking_hub" + output_key = "vnets" + vnet_key = "hub_re1" + } + allow_virtual_network_access = true + allow_forwarded_traffic = false + allow_gateway_transit = false + use_remote_gateways = false + } + + hub_re1_TO_spoke_aks_re1 = { + name = "hub_re1_TO_spoke_aks_re1" + from = { + lz_key = "networking_hub" + output_key = "vnets" + vnet_key = "hub_re1" + } + to = { + vnet_key = "spoke_aks_re1" + } + allow_virtual_network_access = true + allow_forwarded_traffic = true + allow_gateway_transit = true + use_remote_gateways = false + } + +} \ No newline at end of file diff --git a/configuration/demo/level3/networking/spoke/vitual_networks.tfvars b/configuration/demo/level3/networking/spoke/vitual_networks.tfvars new file mode 100644 index 00000000..253de388 --- /dev/null +++ b/configuration/demo/level3/networking/spoke/vitual_networks.tfvars @@ -0,0 +1,44 @@ +vnets = { + spoke_aks_re1 = { + resource_group_key = "aks_spoke_re1" + region = "region1" + vnet = { + name = "aks" + address_space = ["100.64.48.0/22"] + } + specialsubnets = {} + subnets = { + aks_nodepool_system = { + name = "aks_nodepool_system" + cidr = ["100.64.48.0/24"] + nsg_key = "azure_bastion_nsg" + } + aks_nodepool_user1 = { + name = "aks_nodepool_user1" + cidr = ["100.64.49.0/24"] + nsg_key = "azure_bastion_nsg" + } + aks_nodepool_user2 = { + name = "aks_nodepool_user2" + cidr = ["100.64.50.0/24"] + nsg_key = "azure_bastion_nsg" + } + AzureBastionSubnet = { + name = "AzureBastionSubnet" #Must be called AzureBastionSubnet + cidr = ["100.64.51.64/27"] + nsg_key = "azure_bastion_nsg" + } + private_endpoints = { + name = "private_endpoints" + cidr = ["100.64.51.0/27"] + enforce_private_link_endpoint_network_policies = true + } + jumpbox = { + name = "jumpbox" + cidr = ["100.64.51.128/27"] + nsg_key = "azure_bastion_nsg" + } + } + + } +} \ No newline at end of file diff --git a/configuration/demo/level4/README.md b/configuration/demo/level4/README.md new file mode 100644 index 00000000..36f7f354 --- /dev/null +++ b/configuration/demo/level4/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your demo environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/README.md b/configuration/non-prod/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/level0/README.md b/configuration/non-prod/level0/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/level0/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/level1/README.md b/configuration/non-prod/level1/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/level1/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/level2/README.md b/configuration/non-prod/level2/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/level2/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/level3/README.md b/configuration/non-prod/level3/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/level3/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/level4/README.md b/configuration/non-prod/level4/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/level4/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/non-prod/pipelines/README.md b/configuration/non-prod/pipelines/README.md new file mode 100644 index 00000000..deb555a1 --- /dev/null +++ b/configuration/non-prod/pipelines/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your non-prod environment configuration files. \ No newline at end of file diff --git a/configuration/prod/README.md b/configuration/prod/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/prod/level0/README.md b/configuration/prod/level0/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/level0/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/prod/level1/README.md b/configuration/prod/level1/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/level1/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/prod/level2/README.md b/configuration/prod/level2/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/level2/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/prod/level3/README.md b/configuration/prod/level3/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/level3/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/prod/level4/README.md b/configuration/prod/level4/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/level4/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/prod/pipelines/README.md b/configuration/prod/pipelines/README.md new file mode 100644 index 00000000..bde936c5 --- /dev/null +++ b/configuration/prod/pipelines/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your production environment configuration files. \ No newline at end of file diff --git a/configuration/sandpit/README.md b/configuration/sandpit/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/configuration/sandpit/level0/README.md b/configuration/sandpit/level0/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/level0/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/configuration/sandpit/level0/compute.tfvars b/configuration/sandpit/level0/compute.tfvars new file mode 100644 index 00000000..25ffca1e --- /dev/null +++ b/configuration/sandpit/level0/compute.tfvars @@ -0,0 +1,102 @@ + + +################################################## +# +# Compute resources +# +################################################## + +bastion_hosts = { + launchpad_host = { + name = "bastion" + resource_group_key = "bastion_launchpad" + vnet_key = "devops_region1" + subnet_key = "AzureBastionSubnet" + public_ip_key = "bastion_host_rg1" + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "bastion_host" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + } +} + +# Virtual machines +virtual_machines = { + + # Configuration to deploy a bastion host linux virtual machine + bastion_host = { + resource_group_key = "bastion_launchpad" + region = "region1" + boot_diagnostics_storage_account_key = "bootdiag_region1" + provision_vm_agent = true + + os_type = "linux" + + # the auto-generated ssh key in keyvault secret. Secret name being {VM name}-ssh-public and {VM name}-ssh-private + keyvault_key = "secrets" + + # Define the number of networking cards to attach the virtual machine + networking_interfaces = { + nic0 = { + # Value of the keys from networking.tfvars + vnet_key = "devops_region1" + subnet_key = "jumpbox" + name = "0" + enable_ip_forwarding = false + internal_dns_name_label = "nic0" + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "nic" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + } + } + + virtual_machine_settings = { + linux = { + name = "bastion" + size = "Standard_F2" + admin_username = "adminuser" + disable_password_authentication = true + custom_data = "scripts/cloud-init-install-rover-tools.config" + + # Value of the nic keys to attach the VM. The first one in the list is the default nic + network_interface_keys = ["nic0"] + + os_disk = { + name = "bastion-os" + caching = "ReadWrite" + storage_account_type = "Standard_LRS" + } + + source_image_reference = { + publisher = "Canonical" + offer = "UbuntuServer" + sku = "18.04-LTS" + version = "latest" + } + + identity = { + type = "UserAssigned" + managed_identity_keys = [ + "level0", "level1", "level2", "level3", "level4" + ] + } + + } + } + + } +} + diff --git a/configuration/sandpit/level0/configuration.tfvars b/configuration/sandpit/level0/configuration.tfvars new file mode 100644 index 00000000..1e462c1e --- /dev/null +++ b/configuration/sandpit/level0/configuration.tfvars @@ -0,0 +1,82 @@ +landingzone = { + backend_type = "azurerm" + level = "level0" + key = "launchpad" +} + +enable = { + bastion_hosts = false + virtual_machines = false +} + + +# Default region. When not set to a resource it will use that value +default_region = "region1" + +inherit_tags = true + +regions = { + region1 = "southeastasia" + region2 = "eastasia" +} + +launchpad_key_names = { + azuread_app = "caf_launchpad_level0" + keyvault_client_secret = "aadapp-caf-launchpad-level0" + tfstates = [ + "level0", + "level1", + "level2", + "level3", + "level4" + ] +} + +resource_groups = { + level0 = { + name = "launchpad-level0" + tags = { + level = "level0" + } + } + level1 = { + name = "launchpad-level1" + tags = { + level = "level1" + } + } + level2 = { + name = "launchpad-level2" + tags = { + level = "level2" + } + } + level3 = { + name = "launchpad-level3" + tags = { + level = "level3" + } + } + level4 = { + name = "launchpad-level4" + tags = { + level = "level4" + } + } + security = { + name = "launchpad-security" + } + networking = { + name = "launchpad-networking" + } + ops = { + name = "operations" + } + siem = { + name = "siem-logs" + } + bastion_launchpad = { + name = "launchpad-bastion" + } +} + diff --git a/configuration/sandpit/level0/diagnostics_definition.tfvars b/configuration/sandpit/level0/diagnostics_definition.tfvars new file mode 100644 index 00000000..827248ae --- /dev/null +++ b/configuration/sandpit/level0/diagnostics_definition.tfvars @@ -0,0 +1,249 @@ + +# +# Define the settings for the diagnostics settings +# Demonstrate how to log diagnostics in the correct region +# Different profiles to target different operational teams +# +diagnostics_definition = { + log_analytics = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["Audit", true, false, 7], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, false, 7], + ] + } + + } + + default_all = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AuditEvent", true, false, 7], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, false, 7], + ] + } + + } + + bastion_host = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["BastionAuditLogs", true, false, 7], + ] + } + + } + + networking_all = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["VMProtectionAlerts", true, false, 7], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, false, 7], + ] + } + + } + + public_ip_address = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["DDoSProtectionNotifications", true, false, 7], + ["DDoSMitigationFlowLogs", true, false, 7], + ["DDoSMitigationReports", true, false, 7], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, false, 7], + ] + } + + } + + network_security_group = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["NetworkSecurityGroupEvent", true, false, 7], + ["NetworkSecurityGroupRuleCounter", true, false, 7], + ] + } + + } + + nic = { + name = "operational_logs_and_metrics" + categories = { + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", false, false, 7], + ] + } + } + + azure_container_registry = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["ContainerRegistryRepositoryEvents", true, false, 7], + ["ContainerRegistryLoginEvents", true, false, 7], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, false, 7], + ] + } + } + + azure_kubernetes_cluster = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["kube-apiserver", true, false, 7], + ["kube-audit", true, false, 7], + ["kube-audit-admin", true, false, 7], + ["kube-controller-manager", true, false, 7], + ["kube-scheduler", true, false, 7], + ["cluster-autoscaler", true, false, 7], + ["guard", true, false, 7], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, false, 7], + ] + } + } + + azure_site_recovery = { + name = "operational_logs_and_metrics" + log_analytics_destination_type = "Dedicated" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AzureBackupReport", true, true, 7], + ["CoreAzureBackup", true, true, 7], + ["AddonAzureBackupAlerts", true, true, 7], + ["AddonAzureBackupJobs", true, true, 7], + ["AddonAzureBackupPolicy", true, true, 7], + ["AddonAzureBackupProtectedInstance", true, true, 7], + ["AddonAzureBackupStorage", true, true, 7], + ["AzureSiteRecoveryJobs", true, true, 7], + ["AzureSiteRecoveryEvents", true, true, 7], + ["AzureSiteRecoveryReplicatedItems", true, true, 7], + ["AzureSiteRecoveryReplicationStats", true, true, 7], + ["AzureSiteRecoveryRecoveryPoints", true, true, 7], + ["AzureSiteRecoveryReplicationDataUploadRate", true, true, 7], + ["AzureSiteRecoveryProtectedDiskDataChurn", true, true, 30], + ] + metric = [ + #["AllMetrics", 60, True], + ] + } + + } + + azure_automation = { + name = "operational_logs_and_metrics" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["JobLogs", true, true, 30], + ["JobStreams", true, true, 30], + ["DscNodeStatus", true, true, 30], + ] + metric = [ + # ["Category name", "Metric Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", true, true, 30], + ] + } + + } + + compliance_all = { + name = "compliance_logs" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AuditEvent", true, true, 365], + ] + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", false, false, 7], + ] + } + + } + + siem_all = { + name = "siem" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AuditEvent", true, true, 0], + ] + + metric = [ + #["Category name", "Diagnostics Enabled(true/false)", "Retention Enabled(true/false)", Retention_period] + ["AllMetrics", false, false, 0], + ] + } + + } + + subscription_operations = { + name = "subscription_operations" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)"] + ["Administrative", true], + ["Security", true], + ["ServiceHealth", true], + ["Alert", true], + ["Policy", true], + ["Autoscale", true], + ["ResourceHealth", true], + ["Recommendation", true], + ] + } + } + + subscription_siem = { + name = "activity_logs_for_siem" + categories = { + log = [ + # ["Category name", "Diagnostics Enabled(true/false)"] + ["Administrative", false], + ["Security", true], + ["ServiceHealth", false], + ["Alert", false], + ["Policy", true], + ["Autoscale", false], + ["ResourceHealth", false], + ["Recommendation", false], + ] + } + + } + +} \ No newline at end of file diff --git a/configuration/sandpit/level0/diagnotics_log_analytics.tfvars b/configuration/sandpit/level0/diagnotics_log_analytics.tfvars new file mode 100644 index 00000000..877849d3 --- /dev/null +++ b/configuration/sandpit/level0/diagnotics_log_analytics.tfvars @@ -0,0 +1,133 @@ + +diagnostic_storage_accounts = { + # Stores diagnostic logging for region1 + diaglogs_region1 = { + name = "diaglogsrg1" + region = "region1" + resource_group_key = "ops" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "LRS" + access_tier = "Cool" + } + # Stores diagnostic logging for region2 + diaglogs_region2 = { + name = "diaglogrg2" + region = "region2" + resource_group_key = "ops" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "LRS" + access_tier = "Cool" + } + # Stores security logs for siem default region" + diagsiem_region1 = { + name = "siemsg1" + resource_group_key = "siem" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "LRS" + access_tier = "Cool" + } + # Stores diagnostic logging for region2 + diagsiem_region2 = { + name = "siemrg2" + region = "region2" + resource_group_key = "siem" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "LRS" + access_tier = "Cool" + } + # Stores boot diagnostic for region1 + bootdiag_region1 = { + name = "bootrg1" + region = "region1" + resource_group_key = "ops" + account_kind = "StorageV2" + account_tier = "Standard" + account_replication_type = "LRS" + access_tier = "Cool" + } + # Stores boot diagnostic for region2 + bootdiag_region2 = { + name = "bootrg2" + region = "region2" + resource_group_key = "ops" + account_kind = "StorageV2" + account_tier = "Standard" + account_replication_type = "LRS" + access_tier = "Cool" + } +} + +# +# Define the settings for log analytics workspace and solution map +# +log_analytics = { + central_logs_region1 = { + region = "region1" + name = "logs" + resource_group_key = "ops" + # you can setup up to 5 key + diagnostic_profiles = { + central_logs_region1 = { + definition_key = "log_analytics" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + solutions_maps = { + NetworkMonitoring = { + "publisher" = "Microsoft" + "product" = "OMSGallery/NetworkMonitoring" + }, + ADAssessment = { + "publisher" = "Microsoft" + "product" = "OMSGallery/ADAssessment" + }, + ADReplication = { + "publisher" = "Microsoft" + "product" = "OMSGallery/ADReplication" + }, + AgentHealthAssessment = { + "publisher" = "Microsoft" + "product" = "OMSGallery/AgentHealthAssessment" + }, + DnsAnalytics = { + "publisher" = "Microsoft" + "product" = "OMSGallery/DnsAnalytics" + }, + ContainerInsights = { + "publisher" = "Microsoft" + "product" = "OMSGallery/ContainerInsights" + }, + KeyVaultAnalytics = { + "publisher" = "Microsoft" + "product" = "OMSGallery/KeyVaultAnalytics" + } + } + } +} + + +diagnostics_destinations = { + # Storage keys must reference the azure region name + storage = { + all_regions = { + southeastasia = { + storage_account_key = "diagsiem_region1" + } + eastasia = { + storage_account_key = "diagsiem_region2" + } + } + } + + log_analytics = { + central_logs = { + log_analytics_key = "central_logs_region1" + log_analytics_destination_type = "Dedicated" + } + } +} diff --git a/configuration/sandpit/level0/dynamic_secrets.tfvars b/configuration/sandpit/level0/dynamic_secrets.tfvars new file mode 100644 index 00000000..94042fd0 --- /dev/null +++ b/configuration/sandpit/level0/dynamic_secrets.tfvars @@ -0,0 +1,152 @@ + +# Store output attributes into keyvault secret +# Those values are used by the rover to connect the current remote state and +# identity the lower level +dynamic_keyvault_secrets = { + level0 = { + msi = { + output_key = "managed_identities" + resource_key = "level0" + attribute_key = "id" + secret_name = "msi-resource-id" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + admin = { + secret_name = "azdo-pat-admin" + value = "" + } + agent = { + secret_name = "azdo-pat-agent" + value = "" + } + } + level1 = { + msi = { + output_key = "managed_identities" + resource_key = "level1" + attribute_key = "id" + secret_name = "msi-resource-id" + } + lower_stg = { + output_key = "storage_accounts" + resource_key = "level0" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level0" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level2 = { + msi = { + output_key = "managed_identities" + resource_key = "level2" + attribute_key = "id" + secret_name = "msi-resource-id" + } + lower_stg = { + output_key = "storage_accounts" + resource_key = "level1" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level1" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level3 = { + msi = { + output_key = "managed_identities" + resource_key = "level3" + attribute_key = "id" + secret_name = "msi-resource-id" + } + lower_stg = { + output_key = "storage_accounts" + resource_key = "level2" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level2" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } + level4 = { + msi = { + output_key = "managed_identities" + resource_key = "level4" + attribute_key = "id" + secret_name = "msi-resource-id" + } + lower_stg = { + output_key = "storage_accounts" + resource_key = "level3" + attribute_key = "name" + secret_name = "lower-storage-account-name" + } + lower_rg = { + output_key = "resource_groups" + resource_key = "level3" + attribute_key = "name" + secret_name = "lower-resource-group-name" + } + subscription_id = { + output_key = "client_config" + attribute_key = "subscription_id" + secret_name = "subscription-id" + } + tenant_id = { + output_key = "client_config" + attribute_key = "tenant_id" + secret_name = "tenant-id" + } + } +} \ No newline at end of file diff --git a/configuration/sandpit/level0/iam_azuread.tfvars b/configuration/sandpit/level0/iam_azuread.tfvars new file mode 100644 index 00000000..d777b710 --- /dev/null +++ b/configuration/sandpit/level0/iam_azuread.tfvars @@ -0,0 +1,182 @@ + +azuread_groups = { + keyvault_level0_rw = { + name = "caf-level0-keyvault-rw" + description = "Provide read and write access to the keyvault secrets / level0." + members = { + user_principal_names = [ + ] + group_names = [] + object_ids = [] + group_keys = [] + + service_principal_keys = [ + "caf_launchpad_level0" + ] + + } + owners = { + user_principal_names = [ + ] + service_principal_keys = [ + "caf_launchpad_level0" + ] + } + prevent_duplicate_name = false + } + + keyvault_level1_rw = { + name = "caf-level1-landingzones-rw" + description = "Provide read and write access to manage landingzones / level1." + members = { + } + owners = { + + } + prevent_duplicate_name = false + } + + keyvault_level2_rw = { + name = "caf-level2-landingzones-rw" + description = "Provide read and write access to manage landingzones / level2." + members = { + } + owners = { + + } + prevent_duplicate_name = false + } + + keyvault_level3_rw = { + name = "caf-level3-landingzones-rw" + description = "Provide read and write access to manage landingzones / level3." + members = { + } + owners = { + + } + prevent_duplicate_name = false + } + + keyvault_level4_rw = { + name = "caf-level4-applications" + description = "Provide read access to the applications who need to deploy on the level4." + members = { + } + owners = { + + } + prevent_duplicate_name = false + } + + caf_launchpad_Reader = { + name = "caf-launchpad-Reader" + description = "Provide Reader role to the caf launchpad landing zone resource groups." + members = { + } + owners = { + + } + prevent_duplicate_name = false + } + + keyvault_password_rotation = { + name = "caf-level0-password-rotation-rw" + description = "Provide read and write access to the keyvault secrets / level0." + members = { + user_principal_names = [ + ] + group_names = [] + object_ids = [] + group_keys = [] + + service_principal_keys = [ + "caf_launchpad_level0" + ] + + } + owners = { + user_principal_names = [ + ] + service_principal_keys = [ + "caf_launchpad_level0" + ] + } + prevent_duplicate_name = false + } +} + +azuread_users = { + + # don't change that key + aad-user-devops-user-admin = { + useprefix = true + user_name = "caf-level0-security-devops-pat-rotation" + password_expire_in_days = 180 + + # Value must match with var.keyvaults[keyname] to store username and password for password rotation + keyvault_key = "secrets" + } + +} + +azuread_apps = { + # Do not rename the key "launchpad" to be able to upgrade to the standard launchpad + caf_launchpad_level0 = { + useprefix = true + application_name = "caf_launchpad_level0" + password_expire_in_days = 180 + + # Store the ${secret_prefix}-client-id, ${secret_prefix}-client-secret... + # Set the policy during the creation process of the launchpad + keyvaults = { + level0 = { + secret_prefix = "aadapp-caf-launchpad-level0" + } + } + } + +} + +# +# Available roles: +# az rest --method Get --uri https://graph.microsoft.com/v1.0/directoryRoleTemplates -o json | jq -r .value[].displayName +# +azuread_roles = { + caf_launchpad_level0 = { + roles = [ + "Application Administrator", + "Application Developer", + "User Account Administrator" + ] + } + managed_identities = { + level0 = { + roles = [ + "Directory Readers", + "Application Developer", + "User Account Administrator" + ] + } + level1 = { + roles = [ + "Directory Readers" + ] + } + level2 = { + roles = [ + "Directory Readers" + ] + } + level3 = { + roles = [ + "Directory Readers" + ] + } + level4 = { + roles = [ + "Directory Readers" + ] + } + } +} diff --git a/configuration/sandpit/level0/iam_azuread_api_permissions.tfvars b/configuration/sandpit/level0/iam_azuread_api_permissions.tfvars new file mode 100644 index 00000000..f73f3b73 --- /dev/null +++ b/configuration/sandpit/level0/iam_azuread_api_permissions.tfvars @@ -0,0 +1,43 @@ + + +azuread_api_permissions = { + + caf_launchpad_level0 = { + active_directory_graph = { + resource_app_id = "00000002-0000-0000-c000-000000000000" + resource_access = { + Application_ReadWrite_OwnedBy = { + id = "824c81eb-e3f8-4ee6-8f6d-de7f50d565b7" + type = "Role" + } + Directory_ReadWrite_All = { + id = "78c8a3c8-a07e-4b9e-af1b-b5ccab50a175" + type = "Role" + } + } + } + + microsoft_graph = { + resource_app_id = "00000003-0000-0000-c000-000000000000" + resource_access = { + AppRoleAssignment_ReadWrite_All = { + id = "06b708a9-e830-4db3-a914-8e69da51d44f" + type = "Role" + } + DelegatedPermissionGrant_ReadWrite_All = { + id = "8e8e4742-1d95-4f68-9d56-6ee75648c72a" + type = "Role" + } + GroupReadWriteAll = { + id = "62a82d76-70ea-41e2-9197-370581804d09" + type = "Role" + } + RoleManagement_ReadWrite_Directory = { + id = "9e3f62cf-ca93-4989-b6ce-bf83c28f9fe8" + type = "Role" + } + } + } + } + +} diff --git a/configuration/sandpit/level0/iam_custom_roles.tfvars b/configuration/sandpit/level0/iam_custom_roles.tfvars new file mode 100644 index 00000000..f314abf3 --- /dev/null +++ b/configuration/sandpit/level0/iam_custom_roles.tfvars @@ -0,0 +1,76 @@ + +custom_role_definitions = { + caf-launchpad = { + name = "caf-launchpad" + useprefix = true + description = "Provide addition permissions on top of built-in Contributor role to manage landing zones deployment" + permissions = { + actions = [ + "Microsoft.Authorization/roleAssignments/delete", + "Microsoft.Authorization/roleAssignments/read", + "Microsoft.Authorization/roleAssignments/write", + "Microsoft.Authorization/roleDefinitions/delete", + "Microsoft.Authorization/roleDefinitions/read", + "Microsoft.Authorization/roleDefinitions/write", + "microsoft.insights/diagnosticSettings/delete", + "microsoft.insights/diagnosticSettings/read", + "microsoft.insights/diagnosticSettings/write", + "Microsoft.KeyVault/vaults/delete", + "Microsoft.KeyVault/vaults/read", + "Microsoft.KeyVault/vaults/write", + "Microsoft.KeyVault/vaults/accessPolicies/write", + "Microsoft.Network/networkSecurityGroups/delete", + "Microsoft.Network/networkSecurityGroups/read", + "Microsoft.Network/networkSecurityGroups/write", + "Microsoft.Network/networkSecurityGroups/join/action", + "Microsoft.Network/virtualNetworks/subnets/delete", + "Microsoft.Network/virtualNetworks/subnets/read", + "Microsoft.Network/virtualNetworks/subnets/write", + "Microsoft.OperationalInsights/workspaces/delete", + "Microsoft.OperationalInsights/workspaces/read", + "Microsoft.OperationalInsights/workspaces/write", + "Microsoft.OperationalInsights/workspaces/sharedKeys/action", + "Microsoft.OperationsManagement/solutions/delete", + "Microsoft.OperationsManagement/solutions/read", + "Microsoft.OperationsManagement/solutions/write", + "Microsoft.Storage/storageAccounts/delete", + "Microsoft.Storage/storageAccounts/read", + "Microsoft.Storage/storageAccounts/write", + "Microsoft.Storage/storageAccounts/blobServices/containers/delete", + "Microsoft.Storage/storageAccounts/blobServices/containers/read", + "Microsoft.Storage/storageAccounts/blobServices/containers/write", + "Microsoft.Storage/storageAccounts/blobServices/containers/lease/action", + "Microsoft.Storage/storageAccounts/blobServices/read", + "Microsoft.Storage/storageAccounts/listKeys/action", + "Microsoft.Resources/subscriptions/providers/read", + "Microsoft.Resources/subscriptions/read", + "Microsoft.Resources/subscriptions/resourcegroups/delete", + "Microsoft.Resources/subscriptions/resourcegroups/read", + "Microsoft.Resources/subscriptions/resourcegroups/write", + "Microsoft.Network/virtualNetworks/delete", + "Microsoft.Network/virtualNetworks/read", + "Microsoft.Network/virtualNetworks/write", + ] + } + + } + + caf-launchpad-contributor = { + name = "caf-launchpad-contributor" + useprefix = true + description = "Provide addition permissions on top of built-in Contributor role to manage landing zones deployment" + permissions = { + actions = [ + "Microsoft.Authorization/roleAssignments/delete", + "Microsoft.Authorization/roleAssignments/read", + "Microsoft.Authorization/roleAssignments/write", + "Microsoft.Authorization/roleDefinitions/delete", + "Microsoft.Authorization/roleDefinitions/read", + "Microsoft.Authorization/roleDefinitions/write", + "Microsoft.Resources/subscriptions/providers/read" + ] + } + } + +} + diff --git a/configuration/sandpit/level0/iam_keyvault_policies.tfvars b/configuration/sandpit/level0/iam_keyvault_policies.tfvars new file mode 100644 index 00000000..e755b1eb --- /dev/null +++ b/configuration/sandpit/level0/iam_keyvault_policies.tfvars @@ -0,0 +1,114 @@ +keyvault_access_policies_azuread_apps = { + level0 = { + caf_launchpad_level0 = { + # Reference a key to an azure ad applications + azuread_app_key = "caf_launchpad_level0" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + # A maximum of 16 access policies per keyvault + level1 = { + caf_launchpad_level0 = { + # Reference a key to an azure ad applications + azuread_app_key = "caf_launchpad_level0" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + # A maximum of 16 access policies per keyvault + level2 = { + caf_launchpad_level0 = { + # Reference a key to an azure ad applications + azuread_app_key = "caf_launchpad_level0" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + + # A maximum of 16 access policies per keyvault + level3 = { + caf_launchpad_level0 = { + # Reference a key to an azure ad applications + azuread_app_key = "caf_launchpad_level0" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + + # A maximum of 16 access policies per keyvault + level4 = { + caf_launchpad_level1 = { + # Reference a key to an azure ad applications + azuread_app_key = "caf_launchpad_level0" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + + secrets = { + caf_launchpad_level0 = { + azuread_app_key = "caf_launchpad_level0" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } +} + +keyvault_access_policies = { + # A maximum of 16 access policies per keyvault + level0 = { + keyvault_level0_rw = { + # Reference a key to an azure ad group + azuread_group_key = "keyvault_level0_rw" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + # A maximum of 16 access policies per keyvault + level1 = { + keyvault_level1_rw = { + # Reference a key to an azure ad group + azuread_group_key = "keyvault_level1_rw" + secret_permissions = ["Get", "List"] + } + } + + # A maximum of 16 access policies per keyvault + level2 = { + keyvault_level2_rw = { + # Reference a key to an azure ad group + azuread_group_key = "keyvault_level2_rw" + secret_permissions = ["Get", "List"] + } + } + + + # A maximum of 16 access policies per keyvault + level3 = { + keyvault_level3_rw = { + # Reference a key to an azure ad group + azuread_group_key = "keyvault_level3_rw" + secret_permissions = ["Get", "List"] + } + } + + + # A maximum of 16 access policies per keyvault + level4 = { + keyvault_level4_rw = { + # Reference a key to an azure ad group + azuread_group_key = "keyvault_level4_rw" + secret_permissions = ["Get", "List"] + } + } + + + secrets = { + keyvault_level0_rw = { + azuread_group_key = "keyvault_level0_rw" + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + keyvault_password_rotation = { + azuread_group_key = "keyvault_password_rotation" + secret_permissions = ["Set", "Get", "List", "Delete", ] + } + } +} diff --git a/configuration/sandpit/level0/iam_managed_identities.tfvars b/configuration/sandpit/level0/iam_managed_identities.tfvars new file mode 100644 index 00000000..a5e76137 --- /dev/null +++ b/configuration/sandpit/level0/iam_managed_identities.tfvars @@ -0,0 +1,32 @@ + +managed_identities = { + level0 = { + # Used by the release agent to access the level0 keyvault and storage account with the tfstates in read / write + name = "landingzone-level0-msi" + resource_group_key = "security" + } + level1 = { + # Used by the release agent to access the level1 keyvault and storage account with the tfstates in read / write + # Has read access to level0 + name = "landingzone-level1-msi" + resource_group_key = "security" + } + level2 = { + # Used by the release agent to access the level2 keyvault and storage account with the tfstates in read / write + # Has read access to level1 + name = "landingzone-level2-msi" + resource_group_key = "security" + } + level3 = { + # Used by the release agent to access the level3 keyvault and storage account with the tfstates in read / write + # Has read access to level2 + name = "landingzone-level3-msi" + resource_group_key = "security" + } + level4 = { + # Used by the release agent to access the level4 keyvault and storage account with the tfstates in read / write + # Has read access to level3 + name = "landingzone-level4-msi" + resource_group_key = "security" + } +} diff --git a/configuration/sandpit/level0/iam_role_mapping.tfvars b/configuration/sandpit/level0/iam_role_mapping.tfvars new file mode 100644 index 00000000..23a919f2 --- /dev/null +++ b/configuration/sandpit/level0/iam_role_mapping.tfvars @@ -0,0 +1,154 @@ + +# +# Services supported: subscriptions, storage accounts and resource groups +# Can assign roles to: AD groups, AD object ID, AD applications, Managed identities +# +role_mapping = { + custom_role_mapping = { + subscriptions = { + logged_in_subscription = { + "caf-launchpad-contributor" = { + azuread_groups = { + keys = ["keyvault_level0_rw", "keyvault_level1_rw", "keyvault_level2_rw", "keyvault_level3_rw", "keyvault_level4_rw", ] + } + managed_identities = { + keys = ["level0", "level1", "level2", "level3", "level4"] + } + azuread_apps = { + keys = ["caf_launchpad_level0"] + } + } + } + } + } + + built_in_role_mapping = { + subscriptions = { + logged_in_subscription = { + "Contributor" = { + azuread_apps = { + keys = ["caf_launchpad_level0"] + } + managed_identities = { + keys = ["level0", "level1", "level2", "level3", "level4"] + } + } + } + } + resource_groups = { + level0 = { + "Reader" = { + azuread_groups = { + keys = ["caf_launchpad_Reader"] + } + } + } + security = { + "Reader" = { + azuread_groups = { + keys = ["caf_launchpad_Reader"] + } + } + } + networking = { + "Reader" = { + azuread_groups = { + keys = ["caf_launchpad_Reader"] + } + } + } + ops = { + "Reader" = { + azuread_groups = { + keys = ["caf_launchpad_Reader"] + } + } + } + siem = { + "Reader" = { + azuread_groups = { + keys = ["caf_launchpad_Reader"] + } + } + } + } + storage_accounts = { + level0 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + azuread_groups = { + keys = ["keyvault_level0_rw"] + } + azuread_apps = { + keys = ["caf_launchpad_level0"] + } + managed_identities = { + keys = ["level0"] + } + } + "Storage Blob Data Reader" = { + azuread_groups = { + keys = ["keyvault_level1_rw"] + } + } + } + level1 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + azuread_groups = { + keys = ["keyvault_level1_rw"] + } + managed_identities = { + keys = ["level1"] + } + } + "Storage Blob Data Reader" = { + azuread_groups = { + keys = ["keyvault_level2_rw"] + } + } + } + level2 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + azuread_groups = { + keys = ["keyvault_level2_rw"] + } + managed_identities = { + keys = ["level2"] + } + } + "Storage Blob Data Reader" = { + azuread_groups = { + keys = ["keyvault_level3_rw"] + } + } + } + level3 = { + "Storage Blob Data Contributor" = { + logged_in = { + keys = ["user"] + } + azuread_groups = { + keys = ["keyvault_level3_rw"] + } + managed_identities = { + keys = ["level3"] + } + } + "Storage Blob Data Reader" = { + azuread_groups = { + keys = ["keyvault_level4_rw"] + } + } + } + } + } + +} diff --git a/configuration/sandpit/level0/keyvaults.tfvars b/configuration/sandpit/level0/keyvaults.tfvars new file mode 100644 index 00000000..9b407a31 --- /dev/null +++ b/configuration/sandpit/level0/keyvaults.tfvars @@ -0,0 +1,204 @@ + +keyvaults = { + level0 = { + name = "level0" + resource_group_key = "level0" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level0" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "default_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "siem_all" + destination_type = "storage" + destination_key = "all_regions" + } + } + + } + + level1 = { + name = "level1" + resource_group_key = "level1" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level1" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "default_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "siem_all" + destination_type = "storage" + destination_key = "all_regions" + } + } + + } + + level2 = { + name = "level2" + resource_group_key = "level2" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level2" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "default_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "siem_all" + destination_type = "storage" + destination_key = "all_regions" + } + } + + } + + level3 = { + name = "level3" + resource_group_key = "level3" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level3" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "default_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "siem_all" + destination_type = "storage" + destination_key = "all_regions" + } + } + + } + + level4 = { + name = "level4" + resource_group_key = "level4" + sku_name = "standard" + soft_delete_enabled = true + tags = { + tfstate = "level4" + environment = "sandpit" + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "default_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "siem_all" + destination_type = "storage" + destination_key = "all_regions" + } + } + + } + + secrets = { + name = "secrets" + resource_group_key = "security" + region = "region1" + sku_name = "premium" + soft_delete_enabled = true + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "default_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "siem_all" + destination_type = "storage" + destination_key = "all_regions" + } + } + + creation_policies = { + logged_in_user = { + # if the key is set to "logged_in_user" add the user running terraform in the keyvault policy + # More examples in /examples/keyvault + secret_permissions = ["Set", "Get", "List", "Delete", "Purge", "Recover"] + } + } + + + } +} diff --git a/configuration/sandpit/level0/networking.tfvars b/configuration/sandpit/level0/networking.tfvars new file mode 100644 index 00000000..e21c316f --- /dev/null +++ b/configuration/sandpit/level0/networking.tfvars @@ -0,0 +1,110 @@ + +################################################## +# +# Networking resources +# +################################################## + + +public_ip_addresses = { + bastion_host_rg1 = { + name = "pip1" + resource_group_key = "networking" + sku = "Standard" + allocation_method = "Static" + ip_version = "IPv4" + idle_timeout_in_minutes = "4" + + # you can setup up to 5 key + diagnostic_profiles = { + bastion_host_rg1 = { + definition_key = "public_ip_address" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + } +} + +vnets = { + devops_region1 = { + resource_group_key = "networking" + region = "region1" + vnet = { + name = "devops" + address_space = ["10.100.100.0/24"] + } + specialsubnets = {} + subnets = { + AzureBastionSubnet = { + name = "AzureBastionSubnet" #Must be called AzureBastionSubnet + cidr = ["10.100.100.24/29"] + nsg_key = "azure_bastion_nsg" + } + jumpbox = { + name = "jumpbox" + cidr = ["10.100.100.32/29"] + service_endpoints = ["Microsoft.KeyVault"] + } + release_agent_level0 = { + name = "level0" + cidr = ["10.100.100.40/29"] + service_endpoints = ["Microsoft.KeyVault"] + } + release_agent_level1 = { + name = "level1" + cidr = ["10.100.100.48/29"] + service_endpoints = ["Microsoft.KeyVault"] + } + release_agent_level2 = { + name = "level2" + cidr = ["10.100.100.56/29"] + service_endpoints = ["Microsoft.KeyVault"] + } + release_agent_level3 = { + name = "level3" + cidr = ["10.100.100.64/29"] + service_endpoints = ["Microsoft.KeyVault"] + } + release_agent_level4 = { + name = "level4" + cidr = ["10.100.100.72/29"] + service_endpoints = ["Microsoft.KeyVault"] + } + private_endpoints = { + name = "private_endpoints" + cidr = ["10.100.100.128/25"] + enforce_private_link_endpoint_network_policies = true + } + } + + # you can setup up to 5 keys - vnet diganostic + diagnostic_profiles = { + vnet = { + definition_key = "networking_all" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + } +} + + +route_tables = { + default_no_internet = { + name = "default_no_internet" + resource_group_key = "networking" + } +} + +azurerm_routes = { + no_internet = { + name = "no_internet" + resource_group_key = "networking" + route_table_key = "default_no_internet" + address_prefix = "0.0.0.0/0" + next_hop_type = "None" + } +} diff --git a/configuration/sandpit/level0/networking_nsg_definition.tfvars b/configuration/sandpit/level0/networking_nsg_definition.tfvars new file mode 100644 index 00000000..8b558b10 --- /dev/null +++ b/configuration/sandpit/level0/networking_nsg_definition.tfvars @@ -0,0 +1,141 @@ + +# +# Definition of the networking security groups +# +network_security_group_definition = { + # This entry is applied to all subnets with no NSG defined + empty_nsg = { + + diagnostic_profiles = { + nsg = { + definition_key = "network_security_group" + destination_type = "storage" + destination_key = "all_regions" + } + operations = { + name = "operations" + definition_key = "network_security_group" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + } + + azure_bastion_nsg = { + + diagnostic_profiles = { + nsg = { + definition_key = "network_security_group" + destination_type = "storage" + destination_key = "all_regions" + } + operations = { + name = "operations" + definition_key = "network_security_group" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + nsg = [ + { + name = "bastion-in-allow", + priority = "100" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "*" + }, + { + name = "bastion-control-in-allow-443", + priority = "120" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "135" + source_address_prefix = "GatewayManager" + destination_address_prefix = "*" + }, + { + name = "Kerberos-password-change", + priority = "121" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "4443" + source_address_prefix = "GatewayManager" + destination_address_prefix = "*" + }, + { + name = "bastion-vnet-out-allow-22", + priority = "103" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "bastion-vnet-out-allow-3389", + priority = "101" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "3389" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + { + name = "bastion-azure-out-allow", + priority = "120" + direction = "Outbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "443" + source_address_prefix = "*" + destination_address_prefix = "AzureCloud" + } + ] + } + + jumphost = { + + diagnostic_profiles = { + nsg = { + definition_key = "network_security_group" + destination_type = "storage" + destination_key = "all_regions" + } + operations = { + name = "operations" + definition_key = "network_security_group" + destination_type = "log_analytics" + destination_key = "central_logs" + } + } + + nsg = [ + { + name = "ssh-inbound-22", + priority = "200" + direction = "Inbound" + access = "Allow" + protocol = "tcp" + source_port_range = "*" + destination_port_range = "22" + source_address_prefix = "*" + destination_address_prefix = "VirtualNetwork" + }, + ] + } + +} diff --git a/configuration/sandpit/level0/storage_accounts.tfvars b/configuration/sandpit/level0/storage_accounts.tfvars new file mode 100644 index 00000000..bd60a50f --- /dev/null +++ b/configuration/sandpit/level0/storage_accounts.tfvars @@ -0,0 +1,101 @@ + +storage_accounts = { + level0 = { + name = "level0" + resource_group_key = "level0" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + ## Those tags must never be changed after being set as they are used by the rover to locate the launchpad and the tfstates. + # Only adjust the environment value at creation time + tfstate = "level0" + environment = "sandpit" + launchpad = "launchpad" + ## + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level1 = { + name = "level1" + resource_group_key = "level1" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level1" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level2 = { + name = "level2" + resource_group_key = "level2" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level2" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level3 = { + name = "level3" + resource_group_key = "level3" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level3" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + } + + level4 = { + name = "level4" + resource_group_key = "level4" + account_kind = "BlobStorage" + account_tier = "Standard" + account_replication_type = "RAGRS" + tags = { + # Those tags must never be changed while set as they are used by the rover to locate the launchpad and the tfstates. + tfstate = "level4" + environment = "sandpit" + launchpad = "launchpad" + } + containers = { + tfstate = { + name = "tfstate" + } + } + + } + +} \ No newline at end of file diff --git a/configuration/sandpit/level0/subscriptions.tfvars b/configuration/sandpit/level0/subscriptions.tfvars new file mode 100644 index 00000000..9e98ae77 --- /dev/null +++ b/configuration/sandpit/level0/subscriptions.tfvars @@ -0,0 +1,20 @@ + +subscriptions = { + logged_in_subscription = { + + # you can setup up to 5 profiles + diagnostic_profiles = { + operations = { + definition_key = "subscription_operations" + destination_type = "log_analytics" + destination_key = "central_logs" + } + siem = { + definition_key = "subscription_siem" + destination_type = "storage" + destination_key = "all_regions" + } + } + + } +} \ No newline at end of file diff --git a/configuration/sandpit/level1/README.md b/configuration/sandpit/level1/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/level1/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/configuration/sandpit/level2/README.md b/configuration/sandpit/level2/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/level2/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/configuration/sandpit/level3/README.md b/configuration/sandpit/level3/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/level3/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/configuration/sandpit/level4/README.md b/configuration/sandpit/level4/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/level4/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/configuration/sandpit/pipelines/README.md b/configuration/sandpit/pipelines/README.md new file mode 100644 index 00000000..affaea17 --- /dev/null +++ b/configuration/sandpit/pipelines/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your sandpit environment configuration files. diff --git a/documentation/README.md b/documentation/README.md new file mode 100644 index 00000000..b83b14fb --- /dev/null +++ b/documentation/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your specific project documentation files. diff --git a/documentation/architecture_diagrams/README.md b/documentation/architecture_diagrams/README.md new file mode 100644 index 00000000..7955c6c2 --- /dev/null +++ b/documentation/architecture_diagrams/README.md @@ -0,0 +1,3 @@ +# Cloud Adoption Framework landing zones for Terraform - Starter template + +Place here your architecture diagram for the project. diff --git a/documentation/img/101-multi-region-hub.png b/documentation/img/101-multi-region-hub.png new file mode 100644 index 0000000000000000000000000000000000000000..48f2cd59d88f0a352679461b5e709591c2b27184 GIT binary patch literal 42683 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 literal 0 HcmV?d00001 diff --git a/documentation/img/launchpad-100.PNG b/documentation/img/launchpad-100.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c93a36c46bafe2b787394e8729e469a1c98bc6db GIT binary patch literal 143702 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%0A}!)1#qO;^}XKhld?yny=?0OQ;f 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ȿ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