{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageAccountType": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Premium_LRS" ], "metadata": { "description": "Storage account type" } }, "fileShareName1": { "type": "string", "defaultValue": "sftpfileshare01", "metadata": { "description": "Name of the first file share to be created" } }, "fileShareName2": { "type": "string", "defaultValue": "sftpfileshare02", "metadata": { "description": "Name of the second file share to be created" } }, "fileShareAccessTier": { "type": "string", "defaultValue": "Hot", "allowedValues": [ "Hot", "Cool", "TransactionOptimized" ], "metadata": { "description": "File Share Access Tier to be created" } }, "sftpUser1": { "type": "string", "metadata": { "description": "First username to use for SFTP" } }, "sftpPassword1": { "type": "securestring", "metadata": { "description": "Password for the first user to use for SFTP access" } }, "sftpUser2": { "type": "string", "metadata": { "description": "Second username to use for SFTP" } }, "sftpPassword2": { "type": "securestring", "metadata": { "description": "Password for the second user to use for SFTP access" } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Primary location for resources" } }, "containerGroupDNSLabel": { "type": "string", "defaultValue": "az-sftp", "metadata": { "description": "DNS label for container group" } } }, "variables": { "sftpContainerName": "sftp", "sftpContainerGroupName": "sftp-group", "sftpContainerImage": "atmoz/sftp:latest", "sftpEnvVariable": "[concat(parameters('sftpUser1'), ':', parameters('sftpPassword1'), ' ', parameters('sftpUser2'), ':', parameters('sftpPassword2') )]", "storageAccountName": "[concat('sftpstg', uniqueString(resourceGroup().id))]", "storageKind": "StorageV2", "storageAccessTier": "Hot", "supportsHttpsTrafficOnly": true }, "resources": [ { "type": "Microsoft.Storage/storageAccounts", "name": "[variables('storageAccountName')]", "apiVersion": "2019-06-01", "location": "[parameters('location')]", "sku": { "name": "[parameters('storageAccountType')]" }, "kind": "[variables('storageKind')]", "properties": { "accessTier": "[variables('storageAccessTier')]", "supportsHttpsTrafficOnly": "[variables('supportsHttpsTrafficOnly')]" } }, { "type": "Microsoft.Storage/storageAccounts/fileServices/shares", "apiVersion": "2019-06-01", "name": "[concat(variables('storageAccountName'), '/default/', parameters('fileShareName1'))]", "dependsOn": [ "[variables('storageAccountName')]" ], "properties": { "accessTier": "[parameters('fileShareAccessTier')]" } }, { "type": "Microsoft.Storage/storageAccounts/fileServices/shares", "apiVersion": "2019-06-01", "name": "[concat(variables('storageAccountName'), '/default/', parameters('fileShareName2'))]", "dependsOn": [ "[variables('storageAccountName')]" ], "properties": { "accessTier": "[parameters('fileShareAccessTier')]" } }, { "type": "Microsoft.ContainerInstance/containerGroups", "name": "[variables('sftpContainerGroupName')]", "apiVersion": "2019-12-01", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares', variables('storageAccountName'), 'default', parameters('fileShareName1'))]", "[resourceId('Microsoft.Storage/storageAccounts/fileServices/shares', variables('storageAccountName'), 'default', parameters('fileShareName2'))]" ], "properties": { "containers": [ { "name": "[variables('sftpContainerName')]", "properties": { "image": "[variables('sftpContainerImage')]", "environmentVariables": [ { "name": "SFTP_USERS", "secureValue": "[variables('sftpEnvVariable')]" } ], "resources": { "requests": { "cpu": 2, "memoryInGB": 1 } }, "ports": [ { "port": 22 } ], "volumeMounts": [ { "mountPath": "[concat('/home/', parameters('sftpUser1'), '/', parameters('fileShareName1'))]", "name": "[parameters('fileShareName1')]", "readOnly": false }, { "mountPath": "[concat('/home/', parameters('sftpUser2'), '/', parameters('fileShareName2'))]", "name": "[parameters('fileShareName2')]", "readOnly": false } ] } } ], "osType": "Linux", "ipAddress": { "type": "Public", "ports": [ { "protocol": "TCP", "port": 22 } ], "dnsNameLabel": "[parameters('containerGroupDNSLabel')]" }, "restartPolicy": "OnFailure", "volumes": [ { "name": "[parameters('fileShareName1')]", "azureFile": { "readOnly": false, "shareName": "[parameters('fileShareName1')]", "storageAccountName": "[variables('storageAccountName')]", "storageAccountKey": "[listKeys(variables('storageAccountName'),'2019-06-01').keys[0].value]" } }, { "name": "[parameters('fileShareName2')]", "azureFile": { "readOnly": false, "shareName": "[parameters('fileShareName2')]", "storageAccountName": "[variables('storageAccountName')]", "storageAccountKey": "[listKeys(variables('storageAccountName'),'2019-06-01').keys[0].value]" } } ] } } ], "outputs": { "containerIPv4Address": { "type": "string", "value": "[reference(resourceId('Microsoft.ContainerInstance/containerGroups/', variables('sftpContainerGroupName'))).ipAddress.ip]" }, "containerDNSLabel": { "type": "string", "value": "[concat(parameters('containerGroupDNSLabel'), '.', parameters('location'), '.azurecontainer.io')]" } } }