Microsoft.ContainerInstance containerGroups 2019-12-01

Bicep resource definition

The containerGroups resource type can be deployed with operations that target:

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.ContainerInstance/containerGroups resource, add the following Bicep to your template.

resource symbolicname 'Microsoft.ContainerInstance/containerGroups@2019-12-01' = {
  identity: {
    type: 'string'
    userAssignedIdentities: {
      {customized property}: {}
    }
  }
  location: 'string'
  name: 'string'
  properties: {
    containers: [
      {
        name: 'string'
        properties: {
          command: [
            'string'
          ]
          environmentVariables: [
            {
              name: 'string'
              secureValue: 'string'
              value: 'string'
            }
          ]
          image: 'string'
          livenessProbe: {
            exec: {
              command: [
                'string'
              ]
            }
            failureThreshold: int
            httpGet: {
              path: 'string'
              port: int
              scheme: 'string'
            }
            initialDelaySeconds: int
            periodSeconds: int
            successThreshold: int
            timeoutSeconds: int
          }
          ports: [
            {
              port: int
              protocol: 'string'
            }
          ]
          readinessProbe: {
            exec: {
              command: [
                'string'
              ]
            }
            failureThreshold: int
            httpGet: {
              path: 'string'
              port: int
              scheme: 'string'
            }
            initialDelaySeconds: int
            periodSeconds: int
            successThreshold: int
            timeoutSeconds: int
          }
          resources: {
            limits: {
              cpu: int
              gpu: {
                count: int
                sku: 'string'
              }
              memoryInGB: int
            }
            requests: {
              cpu: int
              gpu: {
                count: int
                sku: 'string'
              }
              memoryInGB: int
            }
          }
          volumeMounts: [
            {
              mountPath: 'string'
              name: 'string'
              readOnly: bool
            }
          ]
        }
      }
    ]
    diagnostics: {
      logAnalytics: {
        logType: 'string'
        metadata: {
          {customized property}: 'string'
        }
        workspaceId: 'string'
        workspaceKey: 'string'
      }
    }
    dnsConfig: {
      nameServers: [
        'string'
      ]
      options: 'string'
      searchDomains: 'string'
    }
    encryptionProperties: {
      keyName: 'string'
      keyVersion: 'string'
      vaultBaseUrl: 'string'
    }
    imageRegistryCredentials: [
      {
        password: 'string'
        server: 'string'
        username: 'string'
      }
    ]
    initContainers: [
      {
        name: 'string'
        properties: {
          command: [
            'string'
          ]
          environmentVariables: [
            {
              name: 'string'
              secureValue: 'string'
              value: 'string'
            }
          ]
          image: 'string'
          volumeMounts: [
            {
              mountPath: 'string'
              name: 'string'
              readOnly: bool
            }
          ]
        }
      }
    ]
    ipAddress: {
      dnsNameLabel: 'string'
      ip: 'string'
      ports: [
        {
          port: int
          protocol: 'string'
        }
      ]
      type: 'string'
    }
    networkProfile: {
      id: 'string'
    }
    osType: 'string'
    restartPolicy: 'string'
    sku: 'string'
    volumes: [
      {
        azureFile: {
          readOnly: bool
          shareName: 'string'
          storageAccountKey: 'string'
          storageAccountName: 'string'
        }
        emptyDir: any(Azure.Bicep.Types.Concrete.AnyType)
        gitRepo: {
          directory: 'string'
          repository: 'string'
          revision: 'string'
        }
        name: 'string'
        secret: {
          {customized property}: 'string'
        }
      }
    ]
  }
  tags: {
    {customized property}: 'string'
  }
}

Property values

AzureFileVolume

Name Description Value
readOnly The flag indicating whether the Azure File shared mounted as a volume is read-only. bool
shareName The name of the Azure File share to be mounted as a volume. string (required)
storageAccountKey The storage account access key used to access the Azure File share. string
storageAccountName The name of the storage account that contains the Azure File share. string (required)

Components10Wh5UdSchemasContainergroupidentityPropertiesUserassignedidentitiesAdditionalproperties

Name Description Value

Container

Name Description Value
name The user-provided name of the container instance. string (required)
properties The properties of the container instance. ContainerProperties (required)

ContainerExec

Name Description Value
command The commands to execute within the container. string[]

ContainerGroupDiagnostics

Name Description Value
logAnalytics Container group log analytics information. LogAnalytics

ContainerGroupIdentity

Name Description Value
type The type of identity used for the container group. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the container group. 'None'
'SystemAssigned'
'SystemAssigned, UserAssigned'
'UserAssigned'
userAssignedIdentities The list of user identities associated with the container group. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. ContainerGroupIdentityUserAssignedIdentities

ContainerGroupIdentityUserAssignedIdentities

Name Description Value

ContainerGroupNetworkProfile

Name Description Value
id The identifier for a network profile. string (required)

ContainerGroupProperties

Name Description Value
containers The containers within the container group. Container[] (required)
diagnostics The diagnostic information for a container group. ContainerGroupDiagnostics
dnsConfig The DNS config information for a container group. DnsConfiguration
encryptionProperties The encryption properties for a container group. EncryptionProperties
imageRegistryCredentials The image registry credentials by which the container group is created from. ImageRegistryCredential[]
initContainers The init containers for a container group. InitContainerDefinition[]
ipAddress The IP address type of the container group. IpAddress
networkProfile The network profile information for a container group. ContainerGroupNetworkProfile
osType The operating system type required by the containers in the container group. 'Linux'
'Windows' (required)
restartPolicy Restart policy for all containers within the container group.
- Always Always restart
- OnFailure Restart on failure
- Never Never restart
'Always'
'Never'
'OnFailure'
sku The SKU for a container group. 'Dedicated'
'Standard'
volumes The list of volumes that can be mounted by containers in this container group. Volume[]

ContainerHttpGet

Name Description Value
path The path to probe. string
port The port number to probe. int (required)
scheme The scheme. 'http'
'https'

ContainerPort

Name Description Value
port The port number exposed within the container group. int (required)
protocol The protocol associated with the port. 'TCP'
'UDP'

ContainerProbe

Name Description Value
exec The execution command to probe ContainerExec
failureThreshold The failure threshold. int
httpGet The Http Get settings to probe ContainerHttpGet
initialDelaySeconds The initial delay seconds. int
periodSeconds The period seconds. int
successThreshold The success threshold. int
timeoutSeconds The timeout seconds. int

ContainerProperties

Name Description Value
command The commands to execute within the container instance in exec form. string[]
environmentVariables The environment variables to set in the container instance. EnvironmentVariable[]
image The name of the image used to create the container instance. string (required)
livenessProbe The liveness probe. ContainerProbe
ports The exposed ports on the container instance. ContainerPort[]
readinessProbe The readiness probe. ContainerProbe
resources The resource requirements of the container instance. ResourceRequirements (required)
volumeMounts The volume mounts available to the container instance. VolumeMount[]

DnsConfiguration

Name Description Value
nameServers The DNS servers for the container group. string[] (required)
options The DNS options for the container group. string
searchDomains The DNS search domains for hostname lookup in the container group. string

EncryptionProperties

Name Description Value
keyName The encryption key name. string (required)
keyVersion The encryption key version. string (required)
vaultBaseUrl The keyvault base url. string (required)

EnvironmentVariable

Name Description Value
name The name of the environment variable. string (required)
secureValue The value of the secure environment variable. string
value The value of the environment variable. string

GitRepoVolume

Name Description Value
directory Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. string
repository Repository URL string (required)
revision Commit hash for the specified revision. string

GpuResource

Name Description Value
count The count of the GPU resource. int (required)
sku The SKU of the GPU resource. 'K80'
'P100'
'V100' (required)

ImageRegistryCredential

Name Description Value
password The password for the private registry. string
server The Docker image registry server without a protocol such as "http" and "https". string (required)
username The username for the private registry. string (required)

InitContainerDefinition

Name Description Value
name The name for the init container. string (required)
properties The properties for the init container. InitContainerPropertiesDefinition (required)

InitContainerPropertiesDefinition

Name Description Value
command The command to execute within the init container in exec form. string[]
environmentVariables The environment variables to set in the init container. EnvironmentVariable[]
image The image of the init container. string
volumeMounts The volume mounts available to the init container. VolumeMount[]

IpAddress

Name Description Value
dnsNameLabel The Dns name label for the IP. string
ip The IP exposed to the public internet. string
ports The list of ports exposed on the container group. Port[] (required)
type Specifies if the IP is exposed to the public internet or private VNET. 'Private'
'Public' (required)

LogAnalytics

Name Description Value
logType The log type to be used. 'ContainerInsights'
'ContainerInstanceLogs'
metadata Metadata for log analytics. LogAnalyticsMetadata
workspaceId The workspace id for log analytics string (required)
workspaceKey The workspace key for log analytics string (required)

LogAnalyticsMetadata

Name Description Value

Microsoft.ContainerInstance/containerGroups

Name Description Value
identity The identity of the container group, if configured. ContainerGroupIdentity
location The resource location. string
name The resource name string (required)
properties The container group properties ContainerGroupProperties (required)
tags Resource tags Dictionary of tag names and values. See Tags in templates

Port

Name Description Value
port The port number. int (required)
protocol The protocol associated with the port. 'TCP'
'UDP'

ResourceLimits

Name Description Value
cpu The CPU limit of this container instance. int
gpu The GPU limit of this container instance. GpuResource
memoryInGB The memory limit in GB of this container instance. int

ResourceRequests

Name Description Value
cpu The CPU request of this container instance. int (required)
gpu The GPU request of this container instance. GpuResource
memoryInGB The memory request in GB of this container instance. int (required)

ResourceRequirements

Name Description Value
limits The resource limits of this container instance. ResourceLimits
requests The resource requests of this container instance. ResourceRequests (required)

ResourceTags

Name Description Value

SecretVolume

Name Description Value

Volume

Name Description Value
azureFile The Azure File volume. AzureFileVolume
emptyDir The empty directory volume. any
gitRepo The git repo volume. GitRepoVolume
name The name of the volume. string (required)
secret The secret volume. SecretVolume

VolumeMount

Name Description Value
mountPath The path within the container where the volume should be mounted. Must not contain colon (:). string (required)
name The name of the volume mount. string (required)
readOnly The flag indicating whether the volume mount is read-only. bool

Quickstart samples

The following quickstart samples deploy this resource type.

Bicep File Description
Azure Container Instances - BC with SQL Server and IIS Deploy a single Windows container with a fully featured self-contained Microsoft Dynamics 365 Business Central environment on Azure Container Instances.
Azure Container Instances - container with secrets Deploy a Linux container that has a secret volume using Azure Container Instances.
Azure Container Instances - Linux container with public IP Deploy a single Linux container accessible via a public IP using Azure Container Instances.
Azure Container Instances - VNet Deploy a container instance into an Azure virtual network.
Create a WordPress site This template creates a WordPress site on Container Instance
Create an on-demand SFTP Server with persistent storage This template demonstrates an on-demand SFTP server using an Azure Container Instance (ACI).
Create Application Gateway with Certificates This template shows how to generate Key Vault self-signed certificates, then reference from Application Gateway.
Front Door Standard/Premium with Azure Container Instances This template creates a Front Door Standard/Premium with a container group.
Front Door with Container Instances and Application Gateway This template creates a Front Door Standard/Premium with a container group and Application Gateway.
SQL Server availability group on AKS This creates a new AKS Cluster and then deploys SQL Server availability groups into it using a CNAB package deployed using Duffle and ACI

ARM template resource definition

The containerGroups resource type can be deployed with operations that target:

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.ContainerInstance/containerGroups resource, add the following JSON to your template.

{
  "type": "Microsoft.ContainerInstance/containerGroups",
  "apiVersion": "2019-12-01",
  "name": "string",
  "identity": {
    "type": "string",
    "userAssignedIdentities": {
      "{customized property}": {
      }
    }
  },
  "location": "string",
  "properties": {
    "containers": [
      {
        "name": "string",
        "properties": {
          "command": [ "string" ],
          "environmentVariables": [
            {
              "name": "string",
              "secureValue": "string",
              "value": "string"
            }
          ],
          "image": "string",
          "livenessProbe": {
            "exec": {
              "command": [ "string" ]
            },
            "failureThreshold": "int",
            "httpGet": {
              "path": "string",
              "port": "int",
              "scheme": "string"
            },
            "initialDelaySeconds": "int",
            "periodSeconds": "int",
            "successThreshold": "int",
            "timeoutSeconds": "int"
          },
          "ports": [
            {
              "port": "int",
              "protocol": "string"
            }
          ],
          "readinessProbe": {
            "exec": {
              "command": [ "string" ]
            },
            "failureThreshold": "int",
            "httpGet": {
              "path": "string",
              "port": "int",
              "scheme": "string"
            },
            "initialDelaySeconds": "int",
            "periodSeconds": "int",
            "successThreshold": "int",
            "timeoutSeconds": "int"
          },
          "resources": {
            "limits": {
              "cpu": "int",
              "gpu": {
                "count": "int",
                "sku": "string"
              },
              "memoryInGB": "int"
            },
            "requests": {
              "cpu": "int",
              "gpu": {
                "count": "int",
                "sku": "string"
              },
              "memoryInGB": "int"
            }
          },
          "volumeMounts": [
            {
              "mountPath": "string",
              "name": "string",
              "readOnly": "bool"
            }
          ]
        }
      }
    ],
    "diagnostics": {
      "logAnalytics": {
        "logType": "string",
        "metadata": {
          "{customized property}": "string"
        },
        "workspaceId": "string",
        "workspaceKey": "string"
      }
    },
    "dnsConfig": {
      "nameServers": [ "string" ],
      "options": "string",
      "searchDomains": "string"
    },
    "encryptionProperties": {
      "keyName": "string",
      "keyVersion": "string",
      "vaultBaseUrl": "string"
    },
    "imageRegistryCredentials": [
      {
        "password": "string",
        "server": "string",
        "username": "string"
      }
    ],
    "initContainers": [
      {
        "name": "string",
        "properties": {
          "command": [ "string" ],
          "environmentVariables": [
            {
              "name": "string",
              "secureValue": "string",
              "value": "string"
            }
          ],
          "image": "string",
          "volumeMounts": [
            {
              "mountPath": "string",
              "name": "string",
              "readOnly": "bool"
            }
          ]
        }
      }
    ],
    "ipAddress": {
      "dnsNameLabel": "string",
      "ip": "string",
      "ports": [
        {
          "port": "int",
          "protocol": "string"
        }
      ],
      "type": "string"
    },
    "networkProfile": {
      "id": "string"
    },
    "osType": "string",
    "restartPolicy": "string",
    "sku": "string",
    "volumes": [
      {
        "azureFile": {
          "readOnly": "bool",
          "shareName": "string",
          "storageAccountKey": "string",
          "storageAccountName": "string"
        },
        "emptyDir": {},
        "gitRepo": {
          "directory": "string",
          "repository": "string",
          "revision": "string"
        },
        "name": "string",
        "secret": {
          "{customized property}": "string"
        }
      }
    ]
  },
  "tags": {
    "{customized property}": "string"
  }
}

Property values

AzureFileVolume

Name Description Value
readOnly The flag indicating whether the Azure File shared mounted as a volume is read-only. bool
shareName The name of the Azure File share to be mounted as a volume. string (required)
storageAccountKey The storage account access key used to access the Azure File share. string
storageAccountName The name of the storage account that contains the Azure File share. string (required)

Components10Wh5UdSchemasContainergroupidentityPropertiesUserassignedidentitiesAdditionalproperties

Name Description Value

Container

Name Description Value
name The user-provided name of the container instance. string (required)
properties The properties of the container instance. ContainerProperties (required)

ContainerExec

Name Description Value
command The commands to execute within the container. string[]

ContainerGroupDiagnostics

Name Description Value
logAnalytics Container group log analytics information. LogAnalytics

ContainerGroupIdentity

Name Description Value
type The type of identity used for the container group. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the container group. 'None'
'SystemAssigned'
'SystemAssigned, UserAssigned'
'UserAssigned'
userAssignedIdentities The list of user identities associated with the container group. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. ContainerGroupIdentityUserAssignedIdentities

ContainerGroupIdentityUserAssignedIdentities

Name Description Value

ContainerGroupNetworkProfile

Name Description Value
id The identifier for a network profile. string (required)

ContainerGroupProperties

Name Description Value
containers The containers within the container group. Container[] (required)
diagnostics The diagnostic information for a container group. ContainerGroupDiagnostics
dnsConfig The DNS config information for a container group. DnsConfiguration
encryptionProperties The encryption properties for a container group. EncryptionProperties
imageRegistryCredentials The image registry credentials by which the container group is created from. ImageRegistryCredential[]
initContainers The init containers for a container group. InitContainerDefinition[]
ipAddress The IP address type of the container group. IpAddress
networkProfile The network profile information for a container group. ContainerGroupNetworkProfile
osType The operating system type required by the containers in the container group. 'Linux'
'Windows' (required)
restartPolicy Restart policy for all containers within the container group.
- Always Always restart
- OnFailure Restart on failure
- Never Never restart
'Always'
'Never'
'OnFailure'
sku The SKU for a container group. 'Dedicated'
'Standard'
volumes The list of volumes that can be mounted by containers in this container group. Volume[]

ContainerHttpGet

Name Description Value
path The path to probe. string
port The port number to probe. int (required)
scheme The scheme. 'http'
'https'

ContainerPort

Name Description Value
port The port number exposed within the container group. int (required)
protocol The protocol associated with the port. 'TCP'
'UDP'

ContainerProbe

Name Description Value
exec The execution command to probe ContainerExec
failureThreshold The failure threshold. int
httpGet The Http Get settings to probe ContainerHttpGet
initialDelaySeconds The initial delay seconds. int
periodSeconds The period seconds. int
successThreshold The success threshold. int
timeoutSeconds The timeout seconds. int

ContainerProperties

Name Description Value
command The commands to execute within the container instance in exec form. string[]
environmentVariables The environment variables to set in the container instance. EnvironmentVariable[]
image The name of the image used to create the container instance. string (required)
livenessProbe The liveness probe. ContainerProbe
ports The exposed ports on the container instance. ContainerPort[]
readinessProbe The readiness probe. ContainerProbe
resources The resource requirements of the container instance. ResourceRequirements (required)
volumeMounts The volume mounts available to the container instance. VolumeMount[]

DnsConfiguration

Name Description Value
nameServers The DNS servers for the container group. string[] (required)
options The DNS options for the container group. string
searchDomains The DNS search domains for hostname lookup in the container group. string

EncryptionProperties

Name Description Value
keyName The encryption key name. string (required)
keyVersion The encryption key version. string (required)
vaultBaseUrl The keyvault base url. string (required)

EnvironmentVariable

Name Description Value
name The name of the environment variable. string (required)
secureValue The value of the secure environment variable. string
value The value of the environment variable. string

GitRepoVolume

Name Description Value
directory Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. string
repository Repository URL string (required)
revision Commit hash for the specified revision. string

GpuResource

Name Description Value
count The count of the GPU resource. int (required)
sku The SKU of the GPU resource. 'K80'
'P100'
'V100' (required)

ImageRegistryCredential

Name Description Value
password The password for the private registry. string
server The Docker image registry server without a protocol such as "http" and "https". string (required)
username The username for the private registry. string (required)

InitContainerDefinition

Name Description Value
name The name for the init container. string (required)
properties The properties for the init container. InitContainerPropertiesDefinition (required)

InitContainerPropertiesDefinition

Name Description Value
command The command to execute within the init container in exec form. string[]
environmentVariables The environment variables to set in the init container. EnvironmentVariable[]
image The image of the init container. string
volumeMounts The volume mounts available to the init container. VolumeMount[]

IpAddress

Name Description Value
dnsNameLabel The Dns name label for the IP. string
ip The IP exposed to the public internet. string
ports The list of ports exposed on the container group. Port[] (required)
type Specifies if the IP is exposed to the public internet or private VNET. 'Private'
'Public' (required)

LogAnalytics

Name Description Value
logType The log type to be used. 'ContainerInsights'
'ContainerInstanceLogs'
metadata Metadata for log analytics. LogAnalyticsMetadata
workspaceId The workspace id for log analytics string (required)
workspaceKey The workspace key for log analytics string (required)

LogAnalyticsMetadata

Name Description Value

Microsoft.ContainerInstance/containerGroups

Name Description Value
apiVersion The api version '2019-12-01'
identity The identity of the container group, if configured. ContainerGroupIdentity
location The resource location. string
name The resource name string (required)
properties The container group properties ContainerGroupProperties (required)
tags Resource tags Dictionary of tag names and values. See Tags in templates
type The resource type 'Microsoft.ContainerInstance/containerGroups'

Port

Name Description Value
port The port number. int (required)
protocol The protocol associated with the port. 'TCP'
'UDP'

ResourceLimits

Name Description Value
cpu The CPU limit of this container instance. int
gpu The GPU limit of this container instance. GpuResource
memoryInGB The memory limit in GB of this container instance. int

ResourceRequests

Name Description Value
cpu The CPU request of this container instance. int (required)
gpu The GPU request of this container instance. GpuResource
memoryInGB The memory request in GB of this container instance. int (required)

ResourceRequirements

Name Description Value
limits The resource limits of this container instance. ResourceLimits
requests The resource requests of this container instance. ResourceRequests (required)

ResourceTags

Name Description Value

SecretVolume

Name Description Value

Volume

Name Description Value
azureFile The Azure File volume. AzureFileVolume
emptyDir The empty directory volume. any
gitRepo The git repo volume. GitRepoVolume
name The name of the volume. string (required)
secret The secret volume. SecretVolume

VolumeMount

Name Description Value
mountPath The path within the container where the volume should be mounted. Must not contain colon (:). string (required)
name The name of the volume mount. string (required)
readOnly The flag indicating whether the volume mount is read-only. bool

Quickstart templates

The following quickstart templates deploy this resource type.

Template Description
Azure Container Instances - BC with SQL Server and IIS

Deploy to Azure
Deploy a single Windows container with a fully featured self-contained Microsoft Dynamics 365 Business Central environment on Azure Container Instances.
Azure Container Instances - container with health probe

Deploy to Azure
Deploy a Linux container that has a health probe using Azure Container Instances.
Azure Container Instances - container with secrets

Deploy to Azure
Deploy a Linux container that has a secret volume using Azure Container Instances.
Azure Container Instances - container with secure envVar

Deploy to Azure
Deploy a Linux container that has a secure environment variable using Azure Container Instances.
Azure Container Instances - Linux container with emptyDir

Deploy to Azure
Deploy two Linux containers that share an emptyDir volume using Azure Container Instances.
Azure Container Instances - Linux container with gitRepo

Deploy to Azure
Deploy a Linux container that uses an gitRepo volume using Azure Container Instances.
Azure Container Instances - Linux container with public IP

Deploy to Azure
Deploy a single Linux container accessible via a public IP using Azure Container Instances.
Azure Container Instances - VNet

Deploy to Azure
Deploy a container instance into an Azure virtual network.
Create a Storage Account File Share via Containers

Deploy to Azure
This template creates a storage account and a file share via azure-cli in a Container Instance
Create a WordPress site

Deploy to Azure
This template creates a WordPress site on Container Instance
Create a WordPress site in a virtual network

Deploy to Azure
This template creates a WordPress site on Container Instance in a virtual network. And output a public site FQDN which could access WordPress site.
Create an on-demand SFTP Server with persistent storage

Deploy to Azure
This template demonstrates an on-demand SFTP server using an Azure Container Instance (ACI).
Create Application Gateway with Certificates

Deploy to Azure
This template shows how to generate Key Vault self-signed certificates, then reference from Application Gateway.
Front Door Standard/Premium with Azure Container Instances

Deploy to Azure
This template creates a Front Door Standard/Premium with a container group.
Front Door with Container Instances and Application Gateway

Deploy to Azure
This template creates a Front Door Standard/Premium with a container group and Application Gateway.
On-demand SFTP Server using an existing storage account

Deploy to Azure
This template demonstrates an on-demand SFTP server using an Azure Container Instance (ACI).
SQL Server availability group on AKS

Deploy to Azure
This creates a new AKS Cluster and then deploys SQL Server availability groups into it using a CNAB package deployed using Duffle and ACI
UDP Container in ACI

Deploy to Azure
This templates creates an ACI resource and exposes a container through UDP

Terraform (AzAPI provider) resource definition

The containerGroups resource type can be deployed with operations that target:

  • Resource groups

For a list of changed properties in each API version, see change log.

Resource format

To create a Microsoft.ContainerInstance/containerGroups resource, add the following Terraform to your template.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.ContainerInstance/containerGroups@2019-12-01"
  name = "string"
  identity = {
    type = "string"
    userAssignedIdentities = {
      {customized property} = {
      }
    }
  }
  location = "string"
  tags = {
    {customized property} = "string"
  }
  body = jsonencode({
    properties = {
      containers = [
        {
          name = "string"
          properties = {
            command = [
              "string"
            ]
            environmentVariables = [
              {
                name = "string"
                secureValue = "string"
                value = "string"
              }
            ]
            image = "string"
            livenessProbe = {
              exec = {
                command = [
                  "string"
                ]
              }
              failureThreshold = int
              httpGet = {
                path = "string"
                port = int
                scheme = "string"
              }
              initialDelaySeconds = int
              periodSeconds = int
              successThreshold = int
              timeoutSeconds = int
            }
            ports = [
              {
                port = int
                protocol = "string"
              }
            ]
            readinessProbe = {
              exec = {
                command = [
                  "string"
                ]
              }
              failureThreshold = int
              httpGet = {
                path = "string"
                port = int
                scheme = "string"
              }
              initialDelaySeconds = int
              periodSeconds = int
              successThreshold = int
              timeoutSeconds = int
            }
            resources = {
              limits = {
                cpu = int
                gpu = {
                  count = int
                  sku = "string"
                }
                memoryInGB = int
              }
              requests = {
                cpu = int
                gpu = {
                  count = int
                  sku = "string"
                }
                memoryInGB = int
              }
            }
            volumeMounts = [
              {
                mountPath = "string"
                name = "string"
                readOnly = bool
              }
            ]
          }
        }
      ]
      diagnostics = {
        logAnalytics = {
          logType = "string"
          metadata = {
            {customized property} = "string"
          }
          workspaceId = "string"
          workspaceKey = "string"
        }
      }
      dnsConfig = {
        nameServers = [
          "string"
        ]
        options = "string"
        searchDomains = "string"
      }
      encryptionProperties = {
        keyName = "string"
        keyVersion = "string"
        vaultBaseUrl = "string"
      }
      imageRegistryCredentials = [
        {
          password = "string"
          server = "string"
          username = "string"
        }
      ]
      initContainers = [
        {
          name = "string"
          properties = {
            command = [
              "string"
            ]
            environmentVariables = [
              {
                name = "string"
                secureValue = "string"
                value = "string"
              }
            ]
            image = "string"
            volumeMounts = [
              {
                mountPath = "string"
                name = "string"
                readOnly = bool
              }
            ]
          }
        }
      ]
      ipAddress = {
        dnsNameLabel = "string"
        ip = "string"
        ports = [
          {
            port = int
            protocol = "string"
          }
        ]
        type = "string"
      }
      networkProfile = {
        id = "string"
      }
      osType = "string"
      restartPolicy = "string"
      sku = "string"
      volumes = [
        {
          azureFile = {
            readOnly = bool
            shareName = "string"
            storageAccountKey = "string"
            storageAccountName = "string"
          }
          emptyDir = ?
          gitRepo = {
            directory = "string"
            repository = "string"
            revision = "string"
          }
          name = "string"
          secret = {
            {customized property} = "string"
          }
        }
      ]
    }
  })
}

Property values

AzureFileVolume

Name Description Value
readOnly The flag indicating whether the Azure File shared mounted as a volume is read-only. bool
shareName The name of the Azure File share to be mounted as a volume. string (required)
storageAccountKey The storage account access key used to access the Azure File share. string
storageAccountName The name of the storage account that contains the Azure File share. string (required)

Components10Wh5UdSchemasContainergroupidentityPropertiesUserassignedidentitiesAdditionalproperties

Name Description Value

Container

Name Description Value
name The user-provided name of the container instance. string (required)
properties The properties of the container instance. ContainerProperties (required)

ContainerExec

Name Description Value
command The commands to execute within the container. string[]

ContainerGroupDiagnostics

Name Description Value
logAnalytics Container group log analytics information. LogAnalytics

ContainerGroupIdentity

Name Description Value
type The type of identity used for the container group. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the container group. 'None'
'SystemAssigned'
'SystemAssigned, UserAssigned'
'UserAssigned'
userAssignedIdentities The list of user identities associated with the container group. The user identity dictionary key references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'. ContainerGroupIdentityUserAssignedIdentities

ContainerGroupIdentityUserAssignedIdentities

Name Description Value

ContainerGroupNetworkProfile

Name Description Value
id The identifier for a network profile. string (required)

ContainerGroupProperties

Name Description Value
containers The containers within the container group. Container[] (required)
diagnostics The diagnostic information for a container group. ContainerGroupDiagnostics
dnsConfig The DNS config information for a container group. DnsConfiguration
encryptionProperties The encryption properties for a container group. EncryptionProperties
imageRegistryCredentials The image registry credentials by which the container group is created from. ImageRegistryCredential[]
initContainers The init containers for a container group. InitContainerDefinition[]
ipAddress The IP address type of the container group. IpAddress
networkProfile The network profile information for a container group. ContainerGroupNetworkProfile
osType The operating system type required by the containers in the container group. 'Linux'
'Windows' (required)
restartPolicy Restart policy for all containers within the container group.
- Always Always restart
- OnFailure Restart on failure
- Never Never restart
'Always'
'Never'
'OnFailure'
sku The SKU for a container group. 'Dedicated'
'Standard'
volumes The list of volumes that can be mounted by containers in this container group. Volume[]

ContainerHttpGet

Name Description Value
path The path to probe. string
port The port number to probe. int (required)
scheme The scheme. 'http'
'https'

ContainerPort

Name Description Value
port The port number exposed within the container group. int (required)
protocol The protocol associated with the port. 'TCP'
'UDP'

ContainerProbe

Name Description Value
exec The execution command to probe ContainerExec
failureThreshold The failure threshold. int
httpGet The Http Get settings to probe ContainerHttpGet
initialDelaySeconds The initial delay seconds. int
periodSeconds The period seconds. int
successThreshold The success threshold. int
timeoutSeconds The timeout seconds. int

ContainerProperties

Name Description Value
command The commands to execute within the container instance in exec form. string[]
environmentVariables The environment variables to set in the container instance. EnvironmentVariable[]
image The name of the image used to create the container instance. string (required)
livenessProbe The liveness probe. ContainerProbe
ports The exposed ports on the container instance. ContainerPort[]
readinessProbe The readiness probe. ContainerProbe
resources The resource requirements of the container instance. ResourceRequirements (required)
volumeMounts The volume mounts available to the container instance. VolumeMount[]

DnsConfiguration

Name Description Value
nameServers The DNS servers for the container group. string[] (required)
options The DNS options for the container group. string
searchDomains The DNS search domains for hostname lookup in the container group. string

EncryptionProperties

Name Description Value
keyName The encryption key name. string (required)
keyVersion The encryption key version. string (required)
vaultBaseUrl The keyvault base url. string (required)

EnvironmentVariable

Name Description Value
name The name of the environment variable. string (required)
secureValue The value of the secure environment variable. string
value The value of the environment variable. string

GitRepoVolume

Name Description Value
directory Target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. string
repository Repository URL string (required)
revision Commit hash for the specified revision. string

GpuResource

Name Description Value
count The count of the GPU resource. int (required)
sku The SKU of the GPU resource. 'K80'
'P100'
'V100' (required)

ImageRegistryCredential

Name Description Value
password The password for the private registry. string
server The Docker image registry server without a protocol such as "http" and "https". string (required)
username The username for the private registry. string (required)

InitContainerDefinition

Name Description Value
name The name for the init container. string (required)
properties The properties for the init container. InitContainerPropertiesDefinition (required)

InitContainerPropertiesDefinition

Name Description Value
command The command to execute within the init container in exec form. string[]
environmentVariables The environment variables to set in the init container. EnvironmentVariable[]
image The image of the init container. string
volumeMounts The volume mounts available to the init container. VolumeMount[]

IpAddress

Name Description Value
dnsNameLabel The Dns name label for the IP. string
ip The IP exposed to the public internet. string
ports The list of ports exposed on the container group. Port[] (required)
type Specifies if the IP is exposed to the public internet or private VNET. 'Private'
'Public' (required)

LogAnalytics

Name Description Value
logType The log type to be used. 'ContainerInsights'
'ContainerInstanceLogs'
metadata Metadata for log analytics. LogAnalyticsMetadata
workspaceId The workspace id for log analytics string (required)
workspaceKey The workspace key for log analytics string (required)

LogAnalyticsMetadata

Name Description Value

Microsoft.ContainerInstance/containerGroups

Name Description Value
identity The identity of the container group, if configured. ContainerGroupIdentity
location The resource location. string
name The resource name string (required)
properties The container group properties ContainerGroupProperties (required)
tags Resource tags Dictionary of tag names and values.
type The resource type "Microsoft.ContainerInstance/containerGroups@2019-12-01"

Port

Name Description Value
port The port number. int (required)
protocol The protocol associated with the port. 'TCP'
'UDP'

ResourceLimits

Name Description Value
cpu The CPU limit of this container instance. int
gpu The GPU limit of this container instance. GpuResource
memoryInGB The memory limit in GB of this container instance. int

ResourceRequests

Name Description Value
cpu The CPU request of this container instance. int (required)
gpu The GPU request of this container instance. GpuResource
memoryInGB The memory request in GB of this container instance. int (required)

ResourceRequirements

Name Description Value
limits The resource limits of this container instance. ResourceLimits
requests The resource requests of this container instance. ResourceRequests (required)

ResourceTags

Name Description Value

SecretVolume

Name Description Value

Volume

Name Description Value
azureFile The Azure File volume. AzureFileVolume
emptyDir The empty directory volume. any
gitRepo The git repo volume. GitRepoVolume
name The name of the volume. string (required)
secret The secret volume. SecretVolume

VolumeMount

Name Description Value
mountPath The path within the container where the volume should be mounted. Must not contain colon (:). string (required)
name The name of the volume mount. string (required)
readOnly The flag indicating whether the volume mount is read-only. bool