The purpose of this accelerator is to provide a starting point for customers looking to use Microsoft Dev Center to improve developer productivity in Azure.
The current focus is on Dev Box, with Bicep IaC samples designed to accelerate adoption and expedite the build process. However, the repository will expand over time to include support for Azure Deployment Environments and additional tooling. Various scenarios will be provided to help customers at different stages of their Dev Center journey. Anonymous customer feedback will be continuously reviewed and incorporated to refine and improve the repository as it evolves.
The Dev Center accelerator slots into the wider enterprise-scale landing zone architecture as seen below. Enterprise-scale is an architectural approach that leverages modular designs and reference implementations to help organizations manage and scale their Azure environments to meet their evolving business needs. This approach aligns with the Azure roadmap and the Cloud Adoption Framework for Azure.
Download the Visio diagram for this architecture here.
The accelerator is mainly concerned with what gets deployed in the landing zone subscription highlighted by the red boxes in the picture above. It is assumed that an appropriate platform foundation is already setup which may or may not be the official ESLZ platform foundation. This means that policies and governance should already be in place or should be setup after this implementation and are not a part of the scope this reference implementation. The policies applied to management groups in the hierarchy above the subscription will trickle down to the Dev Center Landing Zone Accelerator landing zone subscription. Having a platform foundation is not mandatory, it just enhances it. The modularized approach used in this program allows the user to pick and choose whatever portion is useful to them. You don't have to use all the resources provided by this program.
If you're new to Dev Box, watch this video for a high-level overview of the architecture.
Design Area | Considerations | Recommendations |
---|---|---|
Management | Design Considerations | Design Recommendations |
Governance | TBC | Design Recommendations |
Identity and Access Management | Design Considerations | Design Recommendations |
Network Topology and Connectivity | Design Considerations | Design Recommendations |
Security | TBC | TBC |
Micrsoft Intune Integration | Design Considerations | Design Recommendations |
Application Management | TBC | TBC |
Image Management | TBC | Design Recommendations |
This repo contains Dev Center reference implementations, all with supporting Infrastructure as Code artifacts. The scenarios covered are:
More reference implementation scenarios will be added as they become available.
To deploy the reference implementations you will need the following tooling installed:
Important
You must have contributor rights on the subscriptions where the Dev Center and Dev Center project resources will be deployed to. Typically, as-per the Azure Landing Zone architecture, Dev Center is deployed to a platform subscription and Dev Center Projects are deployed to a separate workload/app subscription. However, you can use the same subscription for both deployments if you do not have a platform foundation in place.
The Dev Center and Dev Center project deployments are performed separately as standalone actions in this example.
This landing zone accelerator uses a configuration-based deployment approach. The JSON configuration files provided are specific to each scenario (see Deployment scenarios) and are specified as command line parameters when executing the deployment scripts. The steps are otherwise consistent for all scenarios.
- If you have not done so already, clone this repository.
git clone https://github.com/your-repo/devboxaccelerator.git
-
Change the directory to the root of the repository.
-
Create your scenario-specific configuration files for the Dev Center and Dev Center project deployments using the samples provided, named with the
.sample
suffix, as a starting point. You can create configuration files within the existing config folders for convenience as they should be git ignored. -
Login to your Azure account:
az login
[!NOTE] If you have multiple tenants, consider targeting a specific tenant using the
--tenant TENANT_ID
option to ensure you are logging into the correct one and deploying resources within that tenant's context.
Ensure you have completed the requisite predeployment steps before executing the Dev Center or Dev Center project deployments.
-
Change directory to the dev-center folder.
-
Execute the deployment script specifying the target subscription (e.g., the platform subscription) and the Dev Center configuration file you had created for the scenario you're targeting.
./deploy.sh -s <subscription_id> -c <configuration_filepath>
-
Make note of any values written to the
.output
file for convenience, such asdevCenterId
, for use with the Dev Center project. This file is named after the configuration file used for the deployment.
Note
You can optionally update the placeholder subscriptionId
in the config with your own value to avoid the need for the -s
option.
To run these steps, you will need to have a Dev Center resource deployed. You can use a Dev Center that was not deployed via the deployment script provided in this repo. However, you must ensure it is configured appropriately for the chosen deployment scenarios.
Important
If you have not done so already, you should ensure your Dev Center project configuration file is referencing the appropriate Resource ID values for any existing resources it has a dependency on. For example, the devCenterId
along with any networks to be connected.
-
Change directory to the dev-project folder.
-
Execute the deployment script specifying the target subscription (e.g., the workload/application subscription) and the Dev Center Project configuration file you had created for the scenario you're targeting.
./deploy.sh -s <subscription_id> -c <configuration_filepath>
- Grant access to the dev box project by assigning users to the built-in
Dev Center Dev Box User
role.
Please leverage issues if you have any feedback or request on how we can improve on this repository.
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.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party's policies.