ADE environment definitions are infrastructure as code (IaC), written in Bicep or Terraform, stored in repositories. Environment definitions can be modified and adapted for your specific requirements and then used to create a deployment environment on Azure. The environment.yaml schema defines and describes the types of Azure resources included in environment definitions.
What is environment.yaml?
The environment.yaml file acts as a manifest, describing the resources used and the template location for the environment definition.
Sample environment.yaml
The following script is a generic example of an environment.yaml required for your environment definition.
The following table describes the properties that you can use in environment.yaml.
Property
Type
Description
Required
Examples
name
string
The display name of the catalog item.
Yes
version
string
The version of the catalog item.
1.0.0
summary
string
A short summary string about the catalog item.
description
string
A description of the catalog item.
runner
string
The container image to use when executing actions.
ARM template Terraform
templatePath
string
The relative path of the entry template file.
Yes
main.tf main.bicep azuredeploy.json
parameters
array
Input parameters to use when creating the environment and executing actions.
#/definitions/Parameter
Parameters in environment.yaml
Parameters enable you to reuse an environment definition in different scenarios. For example, you might want developers in different regions to deploy the same environment. You can define a location parameter to prompt the developer to enter the desired location as they create their environment.
Sample environment.yaml with parameters
The following script is an example of a environment.yaml file that includes two parameters; location and name:
yml
name:WebAppsummary:AzureWebAppEnvironmentdescription:DeploysawebappinAzurewithoutadatastorerunner:ARMtemplatePath:azuredeploy.jsonparameters:- id:"location" name:"location" description:"Location to deploy the environment resources" default:"[resourceGroup().location]" type:"string" required:false- id:"name" name:"name" description:"Name of the Web App " default:"" type:"string" required:false
Parameter definitions
The following table describes the data types that you can use in environment.yaml. The data type names used in the environment.yaml manifest file differ from the ones used in ARM templates.
Each parameter can use any of the following properties:
Properties
Type
Description
Further Settings
ID
string
Unique ID of the parameter.
name
string
Display name of the parameter.
description
string
Description of the parameter.
default
array boolean integer number object string
The default value of the parameter.
type
array boolean integer number object string
The data type of the parameter. This data type must match the parameter data type in the ARM template, BICEP file, or Terraform file with the corresponding parameter name.
There's a defined schema for Azure Deployment Environments environment.yaml files, which can make editing these files a little easier. You can add the schema definition to the beginning of your environment.yaml file:
Here's an example environment definition that uses the schema:
yml
# yaml-language-server: $schema=https://github.com/Azure/deployment-environments/releases/download/2022-11-11-preview/manifest.schema.jsonname:FunctionAppversion:1.0.0summary:AzureFunctionAppEnvironmentdescription:DeploysanAzureFunctionApp,StorageAccount,andApplicationInsightsrunner:ARMtemplatePath:azuredeploy.jsonparameters: - id:name name:Name description:'Name of the Function App.' type:string required:true - id:supportsHttpsTrafficOnly name:'Supports Https Traffic Only' description:'Allows https traffic only to Storage Account and Functions App if set to true.' type:boolean - id:runtime name:Runtime description:'The language worker runtime to load in the function app.' type:string allowed: -'dotnet' -'dotnet-isolated' -'java' -'node' -'powershell' -'python' default:'dotnet-isolated'
Build a deployment pipeline for Bicep IaC templates. Deploy to multiple environments by using pipeline template YAML files. Learn how to provide environment-specific parameters from your pipeline.