Skip to content
This repository has been archived by the owner on Jul 26, 2024. It is now read-only.

docs: add notice #514

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@

# Azure Terraform SRE

> :warning: This solution, offered by the Open-Source community, will no longer receive contributions from Microsoft. Customers are encouraged to transition to [Microsoft Azure Verified Modules](https://aka.ms/avm) for Microsoft support and updates.

> :warning: This repository has moved! Please go to <https://github.com/aztfmod/caf-terraform-landingzones> for the latest version.

Azure Terraform SRE (formely CAF Terraform) ambitions:

Expand All @@ -14,17 +17,15 @@ Azure Terraform SRE (formely CAF Terraform) ambitions:
* Propose a prescriptive guidance on how to enable DevOps for infrastructure as code on Microsoft Azure.
* Foster a community of Azure *Terraformers* using a common set of practices and sharing best practices.


You can review the different components parts of the Azure Terraform SRE and look at the quick intro video below:

[![caf_elements](./_pictures/caf_elements.png)](https://www.youtube.com/watch?v=FlQ17u4NNts "CAF Introduction")


## :rocket: Getting started

When starting an enterprise deployment, we recommend you start creating a configuration repository where you craft the configuration files for your environments.

The best way to start is to clone the [platform starter repository](https://github.com/Azure/caf-terraform-landingzones-platform-starter) and getting started with the configuration files.
The best way to start is to clone the [platform starter repository](https://github.com/aztfmod/caf-terraform-landingzones-platform-starter) and getting started with the configuration files.

If you are reading this, you are probably interested also in reading the doc as below:
:books: Read our [centralized documentation page](https://aka.ms/caf/terraform)
Expand All @@ -41,7 +42,7 @@ You can also reach us on [Gitter](https://gitter.im/aztfmod/community?utm_source

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.
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
Expand Down
4 changes: 2 additions & 2 deletions caf_launchpad/readme.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Cloud Adoption Framework for Azure - Landing zones on Terraform - Launchpad
# Azure Terraform SRE - Launchpad

The launchpad allows you to manage the foundations of landing zone environments by:

Expand All @@ -8,7 +8,7 @@ The launchpad allows you to manage the foundations of landing zone environments

Launchpad operates at **level 0**.

For a review of the hierarchy approach of Cloud Adoption Framework for Azure landing zones on Terraform, you can refer to [the following documentation](https://github.com/Azure/caf-terraform-landingzones/blob/master/documentation/code_architecture/hierarchy.md).
For a review of the hierarchy approach of Azure Terraform SRE, you can refer to [the following documentation](https://github.com/aztfmod/caf-terraform-landingzones/blob/master/documentation/code_architecture/hierarchy.md).

</BR>

Expand Down
2 changes: 1 addition & 1 deletion documentation/README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Azure Cloud Adoption Framework landing zones guidance
# Azure Terraform SRE landing zones guidance

In this series of articles, we describe the development, code architecture, the delivery mechanisms and operations guide for enterprise adoption of landing zones.

Expand Down
6 changes: 3 additions & 3 deletions documentation/delivery/delivery_landingzones.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Delivery model for landing zones

Cloud Adoption Framework for Azure landing zones for Terraform are to be delivered mainly by DevOps pipelines. The example below shows what could be an execution environment for DevOps using a combination of GitHub and Azure DevOps.
Azure Terraform SRE are to be delivered mainly by DevOps pipelines. The example below shows what could be an execution environment for DevOps using a combination of GitHub and Azure DevOps.

## DevOps components

Expand Down Expand Up @@ -34,7 +34,7 @@ Virtual Machine will be deployed per level and each Virtual Machine will
manage a few self-hosted agents depending on concurrent deployments
needs, in order to control privileges and reduce attack surface, we propose a hierarchy of pipelines that is described [here](../code_architecture/hierarchy.md).

## GitOps for Azure landing zones
## GitOps for Azure Terraform SRE

Changes in the different environments introduced and promoted following GitOps concepts, principles and mechanisms:

Expand Down Expand Up @@ -82,4 +82,4 @@ An enterprise environment will consist of a series of pipelines
enforcing the different types of environments in different
subscriptions.

[Back to summary](../README.md)
[Back to summary](../README.md)
5 changes: 3 additions & 2 deletions documentation/delivery/intro_ci_ado.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Deploying landing zones with Azure DevOps
# Deploying Azure Terraform SRE with Azure DevOps

Starting in version 2005.xxxx, we introduced the support for the rover to run into GitHub Actions (GHA) and Azure DevOps, in this guide, you will find steps to deploy landing zones using rover.

Expand Down Expand Up @@ -135,11 +135,12 @@ jobs:
```

In this example, we are checking out the repository and configuration inside the rover /tf/caf and /tf/caf/tfvars and then:

1. Authenticating using ```az login --identity```
2. Applying the landing zone using rover, stitching the code and variables for the specific pipeline.

## Conclusion

This is just a very quick example to show you how to leverage the various authentication options to run landing zones inside Azure DevOps. A lot can be improved and automated using the [Azure DevOps Terraform provider](https://github.com/microsoft/terraform-provider-azuredevops), we will follow-up on how to automate those steps in a future release and a future article.

[Back to summary](../README.md)
[Back to summary](../README.md)
4 changes: 2 additions & 2 deletions documentation/delivery/intro_ci_gha.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Deploying landing zones with GitHub Actions
# Deploying Azure Terraform SRE with GitHub Actions

Starting in version 2005.xxxx, we introduced the support for the rover to run into GitHub Actions (GHA) and Azure DevOps, in this guide, you will find steps to deploy landing zones using rover.

Expand Down Expand Up @@ -249,4 +249,4 @@ level0_destroy:

A lot can be improved in this script, but hopefully it gives you a good example on how to start with landing zones deployment in GitHub Actions!

[Back to summary](../README.md)
[Back to summary](../README.md)
4 changes: 2 additions & 2 deletions documentation/enterprise/bootstrap_account_provisioning.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Setting up identity bootstrap account

The purpose of the CAF Level 0 (L0) bootstrap Azure AD application is to own the creation of the launchpads. During that process a new Azure AD application is created with less permissions on the directory and also more specific Azure permissions to fulfill the Azure operations of the
The purpose of the Azure Terraform SRE Level 0 (L0) bootstrap Azure AD application is to own the creation of the launchpads. During that process a new Azure AD application is created with less permissions on the directory and also more specific Azure permissions to fulfill the Azure operations of the
level0 (subscription creation for example)

This document explains the manual process to create the L0 Azure AD app and the following information must be captured:
Expand Down Expand Up @@ -152,4 +152,4 @@ Click on the name and then on the "**save**" button

![](./images/Bootstrap/image30.png)

If all the steps have been completed successfully, you are ready to deploy the level 0 open source launchpad.
If all the steps have been completed successfully, you are ready to deploy the level 0 open source launchpad.
32 changes: 17 additions & 15 deletions documentation/enterprise/environment_setup_Azure_DevOps.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
# Enterprise Adoption Guide on Cloud Adoption Framework for Azure - Landing zones on Terraform
# Enterprise Adoption Guide on Azure Terraform SRE

## Overview

In this guide, we summarize steps to get started in an enteprise environment.


# Get Started (Step By Step)

![](./images/Enterprise/Getting_Started.png)
Expand All @@ -17,17 +16,18 @@ The DevOps team focuses on building, automating, testing modules, and landing zo

We define a sandpit environment as an environment where innovation and experimentations can happen "freely".
As such is it composed of:
- One or more subscriptions that are isolated from ANY customer environment.
- A separate Azure AD tenant space.

- One or more subscriptions that are isolated from ANY customer environment.
- A separate Azure AD tenant space.

## Azure DevOps

### Projects

Ideally multiple projects needed to fully utilize Azure landing zones capabilities:

* **Main Project** - Repository of your private Terraform code and project management for landing zones adoption in your organization
* **Configuration Projects** - For each environments (Production, Non-production, Sandpit) that you plan to leverage Azure Terraform landing zone, dedicated project in Azure Devops is needed to fully utilize the automation mechanism provided. This will reduce the risk and minimize error on mixing environments configuration files(.tfvars),pipelines and variables.
- **Main Project** - Repository of your private Terraform code and project management for landing zones adoption in your organization
- **Configuration Projects** - For each environments (Production, Non-production, Sandpit) that you plan to leverage Azure Terraform landing zone, dedicated project in Azure Devops is needed to fully utilize the automation mechanism provided. This will reduce the risk and minimize error on mixing environments configuration files(.tfvars),pipelines and variables.

Examples Azure DevOps setup:

Expand All @@ -40,28 +40,28 @@ Examples Azure DevOps setup:

<br><br>

#### Sandpit IaC Configuration:
#### Sandpit IaC Configuration

![](./images/Enterprise/Sandpit_IAC.png)

<br>

#### Prod & NonProd IaC Configuration:
#### Prod & NonProd IaC Configuration

![](./images/Enterprise/Prod_NonPROD_IAC.png)



### Repositories

During the lifecycle of the landing zones deployment you will probably find that it is easier to work first with a mono-repository environment but we recommend using multiple repositories as follow:
* **Configuration repository**: [this template can be used](https://github.com/azure/caf-terraform-landingzones-starter) as configuration repository for CAF landing zones, containing definition of the configuration for your different environments.
* **Logic repository**: this Azure CAF landing zone repository. Documentation to come on how to fork this repository.

- **Configuration repository**: [this template can be used](https://github.com/aztfmod/caf-terraform-landingzones-starter) as configuration repository for CAF landing zones, containing definition of the configuration for your different environments.
- **Logic repository**: this Azure CAF landing zone repository. Documentation to come on how to fork this repository.

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.

- 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.

### Full IaC Architecture (Contoso example)

Expand All @@ -70,9 +70,11 @@ This approach allows you to easily:
## Bootstrap process

### Bootstrap identity

In order to start consuming Azure Terraform landing zones, we need to create a privileged account to boostrap the environment.

You can opt for:

1. Using an user account with enough permission (Azure Active Directory Global Administrator)
2. Provision the identity bootstrap account with Azure AD application, you can refer to [the following documentation](./bootstrap_account_provisioning.md)

Expand Down
10 changes: 5 additions & 5 deletions documentation/getting_started/getting_started.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Getting started with Azure Cloud Adoption Framework landing zones for Terraform
# Getting started with Azure Terraform SRE

## Prerequisites

In order to start deploying your with CAF landing zones, you need an Azure subscription (Trial, MSDN, etc.) and you need to install the following components on your machine:
In order to start deploying your with Azure Terraform SRE, you need an Azure subscription (Trial, MSDN, etc.) and you need to install the following components on your machine:

- [Visual Studio Code](https://code.visualstudio.com/)
- [Docker Desktop](https://docs.docker.com/docker-for-windows/install/) or [Rancher Desktop](https://rancherdesktop.io/) in dockerd mode.
Expand All @@ -12,18 +12,18 @@ You can deploy it easily on Windows and MacOS with the following software manage

| MacOS | Windows |
| ------ | ------- |
|```brew cask install visual-studio-code docker``` </br> ```brew install git ``` | Install Chocolatey (https://chocolatey.org/docs/installation) </br> ``` choco install git vscode docker-desktop ``` |
|```brew cask install visual-studio-code docker``` </br> ```brew install git``` | Install Chocolatey (<https://chocolatey.org/docs/installation>) </br> ``` choco install git vscode docker-desktop ``` |

Once installed, open **Visual Studio Code** and install "**Remote Development**" extension as follow: ![RemoteDevelopment](../../_pictures/caf_setup_remotedev.png)

## Cloning the starter repository

The starter repository contains the basic configuration files and scenarios. It will allow you to compose your configuration files in the integrated environment.
You can find more information on the [platform starter repository](https://github.com/Azure/caf-terraform-landingzones-platform-starter)
You can find more information on the [platform starter repository](https://github.com/aztfmod/caf-terraform-landingzones-platform-starter)
Clone the repository using the following command:

```bash
git clone https://github.com/Azure/caf-terraform-landingzones-platform-starter.git
git clone https://github.com/aztfmod/caf-terraform-landingzones-platform-starter.git
```

## Open the repository in Visual Studio Code
Expand Down
3 changes: 1 addition & 2 deletions documentation/test/unit_test.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ To prepare the environment for the multiple stages we need to configure authenti

## Running the unit tests

The Cloud Adoption Framework with Terraform supports version 0.12 and onwards, which means we can safely use the JSON Output Format introduced with theterraform show -json \<FILE\> command to generate a JSON representation of a plan or state file. See the terraform show documentation for more details.
The Azure Terraform SRE supports version 0.12 and onwards, which means we can safely use the JSON Output Format introduced with theterraform show -json \<FILE\> command to generate a JSON representation of a plan or state file. See the terraform show documentation for more details.
The unit testing phase consists of the following steps:

1) Retrieve the latest code from the repository
Expand Down Expand Up @@ -108,7 +108,6 @@ Make sure your unit tests include the following dependencies :
- “github.com/Azure/azure-sdk-for-go/services/resourcegraph/mgmt/2019–04–01/resourcegraph” to perform a Resource Graph query
- “github.com/Azure/go-autorest/autorest/azure/auth” to perform authentication against my Azure subscription. A Unit test simply calls the Resource Graph query and validates the output against the expected result.


![alt text](../../_pictures/test/unit_test_sample.png?raw=true)

## Cleanup the environment after the integration test
Expand Down
6 changes: 2 additions & 4 deletions templates/pipelines/symphony/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ ansible-playbook e2e.yaml \
```bash
branch={{ resources.alz.private_lib[resources.alz.private_lib.version_to_deploy].caf_landingzone_branch }}
cd {{ destination_base_path }}
git clone --branch ${branch} https://github.com/Azure/caf-terraform-landingzones.git landingzones
git clone --branch ${branch} https://github.com/aztfmod/caf-terraform-landingzones.git landingzones

# If you are planning to submit PR you can clone the a forked version instead
git clone --branch ${branch} [email protected]:Azure/caf-terraform-landingzones.git landingzones
Expand All @@ -41,7 +41,6 @@ git pull

```


# Only launchpad

rover deploy \
Expand All @@ -52,5 +51,4 @@ git pull
-ct launchpad \
-level level0


```
```
70 changes: 35 additions & 35 deletions templates/pipelines/symphony/symphony_e2e.yaml
Original file line number Diff line number Diff line change
@@ -1,41 +1,41 @@
environment: {{ model }}
environment: { { model } }
repositories:
- name: landingzones
uri: https://github.com/Azure/caf-terraform-landingzones.git
branch: {{ resources.caf_landingzone_branch }}
uri: https://github.com/aztfmod/caf-terraform-landingzones.git
branch: { { resources.caf_landingzone_branch } }

# All paths are relative
# All paths are relative
levels:
- level: level0
type: platform
stacks:
- stack: launchpad
landingZonePath: landingzones/caf_launchpad
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.launchpad.level }}/{{ resources.tfstates.platform.launchpad.base_config_path }}"
tfState: {{ resources.tfstates.platform.launchpad.tfstate }}
repository: landingzones
launchpad: true
- level: level0
type: platform
stacks:
- stack: launchpad
landingZonePath: landingzones/caf_launchpad
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.launchpad.level }}/{{ resources.tfstates.platform.launchpad.base_config_path }}"
tfState: { { resources.tfstates.platform.launchpad.tfstate } }
repository: landingzones
launchpad: true

- level: level1
type: platform
stacks:
- stack: management
landingZonePath: landingzones/caf_solution
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.management.level }}/{{ resources.tfstates.platform.management.base_config_path }}"
tfState: {{ resources.tfstates.platform.management.tfstate }}
repository: landingzones
- stack: alz
landingZonePath: landingzones/caf_solution/add-ons/caf_alz
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.alz.level }}/{{ resources.tfstates.platform.alz.base_config_path }}"
tfState: {{ resources.tfstates.platform.alz.tfstate }}
repository: landingzones
branch: "{{ resources.alz.private_lib[resources.alz.private_lib.version_to_deploy].caf_landingzone_branch }}"
- level: level1
type: platform
stacks:
- stack: management
landingZonePath: landingzones/caf_solution
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.management.level }}/{{ resources.tfstates.platform.management.base_config_path }}"
tfState: { { resources.tfstates.platform.management.tfstate } }
repository: landingzones
- stack: alz
landingZonePath: landingzones/caf_solution/add-ons/caf_alz
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.alz.level }}/{{ resources.tfstates.platform.alz.base_config_path }}"
tfState: { { resources.tfstates.platform.alz.tfstate } }
repository: landingzones
branch: "{{ resources.alz.private_lib[resources.alz.private_lib.version_to_deploy].caf_landingzone_branch }}"

- level: level2
type: platform
stacks:
- stack: connectivity_virtual_wan
landingZonePath: landingzones/caf_solution
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.management.level }}/{{ resources.tfstates.platform.management.base_config_path }}"
tfState: {{ resources.tfstates.platform.management.tfstate }}
repository: landingzones
- level: level2
type: platform
stacks:
- stack: connectivity_virtual_wan
landingZonePath: landingzones/caf_solution
configurationPath: "{{ resources.configuration_folders.destination_relative_path }}/{{ resources.tfstates.platform.management.level }}/{{ resources.tfstates.platform.management.base_config_path }}"
tfState: { { resources.tfstates.platform.management.tfstate } }
repository: landingzones
Loading
Loading