Create and access an environment by using the Azure CLI

This guide explains how to create and access an environment in an existing Azure Deployment Environments project by using the Azure CLI.

Prerequisites

Create an environment

Creating an environment automatically creates the required resources and a resource group to store them. The resource group name follows the pattern {projectName}-{environmentName}. You can view the resource group in the Azure portal.

Complete the following steps in the Azure CLI to create an environment and configure resources. You can view the outputs as defined in the specific Azure Resource Manager template (ARM template).

Note

Only users who have the Deployment Environments User role, the DevCenter Project Admin role, or a built-in role that has appropriate permissions can create an environment. Users who have the Deployment Environments Reader role can view their own environments, and environments created by others.

  1. Sign in to the Azure CLI:

    az login
    
  2. Install the Azure Dev Center extension for the CLI.

    az extension add --name devcenter --upgrade
    
  3. List all the Azure Deployment Environments projects you have access to:

    az graph query -q "Resources | where type =~ 'microsoft.devcenter/projects'" -o table
    
  4. Configure the default subscription as the subscription that contains the project:

    az account set --subscription <subscriptionName>
    
  5. Configure the default resource group as the resource group that contains the project:

    az config set defaults.group=<resourceGroupName>
    
  6. List the type of environments you can create in a specific project:

    az devcenter dev environment-type list --dev-center <devcenterName> --project-name <projectName> -o table
    
  7. List the environment definitions that are available to a specific project:

    az devcenter dev environment-definition list --dev-center <devcenterName> --project-name <projectName> -o table
    
  8. Create an environment by using an environment-definition (an infrastructure as code template defined in the environment.yaml file) from the list of available environment definitions:

    az devcenter dev environment create --dev-center-name <devcenterName>
        --project-name <projectName> --environment-name <environmentName> --environment-type <environmentType>
        --environment-definition-name <environmentDefinitionName> --catalog-name <catalogName>
    

    If the specific environment-definition requires any parameters, use --parameters and provide the parameters as a JSON string or a JSON file. For example:

    $params = "{ 'name': 'firstMsi', 'location': 'northeurope' }"
    az devcenter dev environment create --dev-center-name <devcenterName>
        --project-name <projectName> --environment-name <environmentName> --environment-type <environmentType>
        --environment-definition-name <environmentDefinitionName> --catalog-name <catalogName>
        --parameters $params
    

Note

You can use --help to view more details about any command, accepted arguments, and examples. For example, use az devcenter dev environment create --help to view more details about creating an environment.

Troubleshoot a permissions error

You must have the Deployment Environments User role, the DevCenter Project Admin role, or a built-in role that has the required permissions to create an environment.

If you don't have the correct permissions, the environment isn't created. An error message like the following example might appear:

(EnvironmentNotFound) The environment resource was not found.
Code: EnvironmentNotFound
Message: The environment resource was not found.

To resolve the issue, assign the correct permissions: Give access to the development team.

Access an environment

To access an environment:

  1. List existing environments that are available in a specific project:

     az devcenter dev environment list --dev-center <devcenterName> --project-name <projectName>
    
  2. View the access endpoints to various resources as defined in the ARM template outputs.

  3. Access the specific resources by using the endpoints.

Deploy an environment

az devcenter dev environment deploy-action --action-id "deploy" --dev-center-name <devcenterName> \
    -g <resourceGroupName> --project-name <projectName> --environment-name <environmentName> --parameters <parametersJsonString>

Delete an environment

az devcenter dev environment delete --dev-center-name <devcenterName>  --project-name <projectName> --environment-name <environmentName> --user-id "me"