Parameters and data types in environment.yaml
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.
name: WebApp
version: 1.0.0
summary: Azure Web App Environment
description: Deploys a web app in Azure without a datastore
runner: ARM
templatePath: azuredeploy.json
Definitions
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
:
name: WebApp
summary: Azure Web App Environment
description: Deploys a web app in Azure without a datastore
runner: ARM
templatePath: azuredeploy.json
parameters:
- 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. | Default type: string |
readOnly | boolean | Whether or not this parameter is read-only. | |
required | boolean | Whether or not this parameter is required. | |
allowed | array | An array of allowed values. | "items": { "type": "string" }, "minItems": 1, "uniqueItems": true, |
YAML schema
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:
# yaml-language-server: $schema=https://github.com/Azure/deployment-environments/releases/download/2022-11-11-preview/manifest.schema.json
Here's an example environment definition that uses the schema:
# yaml-language-server: $schema=https://github.com/Azure/deployment-environments/releases/download/2022-11-11-preview/manifest.schema.json
name: FunctionApp
version: 1.0.0
summary: Azure Function App Environment
description: Deploys an Azure Function App, Storage Account, and Application Insights
runner: ARM
templatePath: azuredeploy.json
parameters:
- 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'