Skip to main content

Azure Components

Reference for every Azure offer in the Fractal Cloud catalogue. Each offer lists its parameters, required flags, and a fully-parameterized JSON example.

APIManagement

APIManagement.CaaS.Ambassador

Ambassador is an open-source API gateway and ingress controller deployed in a Kubernetes cluster.

ParameterDescriptionExample / possible valuesRequired
hostPublic hostname the gateway serves and requests a certificate for.ambassador.example.comNo
hostOwnerEmailContact email registered with the ACME provider for certificate notifications.admin@example.comYes
acmeProviderAuthorityACME directory URL used to issue TLS certificates.https://acme-v02.api.letsencrypt.org/directoryYes
tlsSecretNameKubernetes secret that stores the issued TLS certificate and key.ambassador-tls-secretYes
licenseKeyAmbassador Edge Stack license key (leave blank for the open-source edition).AES-1A2B-3C4D-5E6F-7G8HNo
namespaceKubernetes namespace the gateway is deployed into.ambassadorYes

Example (fully parameterized):

{
"type": "APIManagement.CaaS.Ambassador",
"parameters": {
"host": "ambassador.example.com",
"hostOwnerEmail": "admin@example.com",
"acmeProviderAuthority": "https://acme-v02.api.letsencrypt.org/directory",
"tlsSecretName": "ambassador-tls-secret",
"licenseKey": "AES-1A2B-3C4D-5E6F-7G8H",
"namespace": "ambassador"
}
}

APIManagement.CaaS.Traefik

Traefik is a modern reverse proxy and load balancer for Kubernetes, providing routing, TLS termination, and API gateway features.

ParameterDescriptionExample / possible valuesRequired
entryPointsNamed listener entry points in name:port form.["web:8000", "websecure:8443"]Yes
hostnamePublic hostname exposed by the proxy.traefik.example.comNo
loadbalancerIpStatic IP to assign to the Traefik load balancer service.10.0.1.50No
oidcIssuerUrlOIDC issuer/discovery URL for forward-auth.https://login.microsoftonline.com/<tenant-id>/v2.0Conditional — part of the all-or-nothing OIDC config group
oidcClientIdOIDC application (client) ID.11111111-2222-3333-4444-555555555555Conditional — part of the all-or-nothing OIDC config group
oidcClientSecretIdSecret store ID holding the OIDC client secret.traefik-oidc-client-secretConditional — part of the all-or-nothing OIDC config group
forwardAuthSecretIdSecret store ID holding the forward-auth signing secret.traefik-forward-auth-secretConditional — part of the all-or-nothing OIDC config group
securityHeadersSettingsHTTP security header middleware settings.{"frameDeny": true, "browserXssFilter": true}No
tlsCertificatesTLS certificate secret names presented by the proxy.["traefik-default-cert"]No
tlsSettingsTLS options such as minimum protocol version.{"minVersion": "VersionTLS12"}No
tracingDistributed tracing backend configuration.{"jaeger": {"samplingServerURL": "http://jaeger:5778/sampling"}}No
namespaceKubernetes namespace the proxy is deployed into.traefikYes

Example (fully parameterized):

{
"type": "APIManagement.CaaS.Traefik",
"parameters": {
"entryPoints": ["web:8000", "websecure:8443"],
"hostname": "traefik.example.com",
"loadbalancerIp": "10.0.1.50",
"oidcIssuerUrl": "https://login.microsoftonline.com/11111111-2222-3333-4444-555555555555/v2.0",
"oidcClientId": "11111111-2222-3333-4444-555555555555",
"oidcClientSecretId": "traefik-oidc-client-secret",
"forwardAuthSecretId": "traefik-forward-auth-secret",
"securityHeadersSettings": {"frameDeny": true, "browserXssFilter": true},
"tlsCertificates": ["traefik-default-cert"],
"tlsSettings": {"minVersion": "VersionTLS12"},
"tracing": {"jaeger": {"samplingServerURL": "http://jaeger:5778/sampling"}},
"namespace": "traefik"
}
}

APIManagement.PaaS.ApiManagement

Azure API Management is a fully managed service for publishing, managing, and securing APIs.

ParameterDescriptionExample / possible valuesRequired
publisherNameOrganization name shown on the developer portal.Platform TeamNo
publisherEmailAdministrative contact email for the service.platform@fractal.cloudNo
skuNameAPI Management SKU and unit count.Developer_1, Standard_2, Premium_1No
publicNetworkAccessEnabledWhether the service is reachable over the public internet.trueNo
identityManaged identity assigned to the service.{"type": "SystemAssigned"}No

Example (fully parameterized):

{
"type": "APIManagement.PaaS.ApiManagement",
"parameters": {
"publisherName": "Platform Team",
"publisherEmail": "platform@fractal.cloud",
"skuName": "Developer_1",
"publicNetworkAccessEnabled": true,
"identity": {"type": "SystemAssigned"}
}
}

APIManagement.SaaS.Unmanaged

External API management service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-apim-secretNo
secretValueConnection details / credentials for the external service.https://apim.example.com;key=abc123Yes

Example (fully parameterized):

{
"type": "APIManagement.SaaS.Unmanaged",
"parameters": {
"secretName": "external-apim-secret",
"secretValue": "https://apim.example.com;key=abc123"
}
}

BigData

BigData.CaaS.MinioTenant

MinIO is a Kubernetes-hosted S3-compatible object storage system.

ParameterDescriptionExample / possible valuesRequired
minioVersionMinIO server release tag to deploy.RELEASE.2025-03-12T18-04-18ZNo
serversNumber of MinIO server pods in the tenant.4No
volumesPerServerPersistent volumes attached to each server.4No
volumeSizeCapacity of each persistent volume.100GiNo
storageClassKubernetes storage class backing the volumes.managed-csiNo
cpuRequestCPU requested per server pod.500mNo
cpuLimitCPU limit per server pod.2No
memoryRequestMemory requested per server pod.1GiNo
memoryLimitMemory limit per server pod.4GiNo
requestAutoCertEnable MinIO's automatic TLS certificate generation.trueNo
namespaceKubernetes namespace the tenant is deployed into.minioYes

Example (fully parameterized):

{
"type": "BigData.CaaS.MinioTenant",
"parameters": {
"minioVersion": "RELEASE.2025-03-12T18-04-18Z",
"servers": 4,
"volumesPerServer": 4,
"volumeSize": "100Gi",
"storageClass": "managed-csi",
"cpuRequest": "500m",
"cpuLimit": "2",
"memoryRequest": "1Gi",
"memoryLimit": "4Gi",
"requestAutoCert": true,
"namespace": "minio"
}
}

BigData.CaaS.SparkCluster

Apache Spark cluster deployed on Kubernetes for distributed data processing.

ParameterDescriptionExample / possible valuesRequired
sparkVersionApache Spark version to run.3.5.3No
imageContainer image for the Spark driver and executors.apache/spark:3.5.3No
driverCoresCPU cores allocated to the driver.1No
driverMemoryMemory allocated to the driver.1gNo
executorCoresCPU cores per executor.2No
executorMemoryMemory per executor.2gNo
executorInstancesNumber of executor pods.2No
sparkOperatorNameName of the Spark Operator managing this cluster.spark-operatorYes
namespaceKubernetes namespace the cluster is deployed into.sparkYes

Example (fully parameterized):

{
"type": "BigData.CaaS.SparkCluster",
"parameters": {
"sparkVersion": "3.5.3",
"image": "apache/spark:3.5.3",
"driverCores": "1",
"driverMemory": "1g",
"executorCores": "2",
"executorMemory": "2g",
"executorInstances": 2,
"sparkOperatorName": "spark-operator",
"namespace": "spark"
}
}

BigData.CaaS.SparkJob

Spark job that runs on a SparkApplication custom resource in a Kubernetes cluster.

ParameterDescriptionExample / possible valuesRequired
typeApplication language/type.Java, Scala, Python, RNo
modeSpark deploy mode.clusterNo
imageContainer image for driver and executors.apache/spark:3.5.3No
mainClassFully-qualified main class (JVM jobs).com.example.MyAppNo
mainApplicationFileURI of the application artifact to run.s3a://jobs/app.jarNo
argumentsArguments passed to the application.["--date", "2026-07-03"]No
sparkVersionApache Spark version to run.3.5.3No
sparkConfExtra Spark configuration key/values.{"spark.sql.shuffle.partitions": "200"}No
driverCoresCPU cores allocated to the driver.1No
driverMemoryMemory allocated to the driver.1gNo
executorCoresCPU cores per executor.2No
executorMemoryMemory per executor.2gNo
executorInstancesNumber of executor pods.2No
restartPolicyRestart behavior on failure.Never, Always, OnFailureNo
maxRetriesRetry attempts before the job is marked failed.3No
scheduleCron expression for scheduled runs (blank for on-demand).0 2 * * *No
concurrencyPolicyHow concurrent scheduled runs are handled.Forbid, Allow, ReplaceNo
sparkOperatorNameName of the Spark Operator managing this job.spark-operatorYes
namespaceKubernetes namespace the job runs in.sparkYes

Example (fully parameterized):

{
"type": "BigData.CaaS.SparkJob",
"parameters": {
"type": "Java",
"mode": "cluster",
"image": "apache/spark:3.5.3",
"mainClass": "com.example.MyApp",
"mainApplicationFile": "s3a://jobs/app.jar",
"arguments": ["--date", "2026-07-03"],
"sparkVersion": "3.5.3",
"sparkConf": {"spark.sql.shuffle.partitions": "200"},
"driverCores": "1",
"driverMemory": "1g",
"executorCores": "2",
"executorMemory": "2g",
"executorInstances": 2,
"restartPolicy": "Never",
"maxRetries": 3,
"schedule": "0 2 * * *",
"concurrencyPolicy": "Forbid",
"sparkOperatorName": "spark-operator",
"namespace": "spark"
}
}

BigData.CaaS.SparkMlExperiment

MLflow experiment server deployed in Kubernetes for machine learning experiment tracking.

ParameterDescriptionExample / possible valuesRequired
mlflowVersionMLflow server version to deploy.2.21.3No
backendStoreUriBackend store URI for experiment metadata.sqlite:///mlflow/mlflow.dbNo
artifactRootRoot path for storing run artifacts./mlflow/artifactsNo
replicasNumber of MLflow server replicas.2No
cpuRequestCPU requested per replica.250mNo
cpuLimitCPU limit per replica.1No
memoryRequestMemory requested per replica.512MiNo
memoryLimitMemory limit per replica.1GiNo
servicePortPort the MLflow UI/API listens on.5000No
namespaceKubernetes namespace the server is deployed into.mlflowYes

Example (fully parameterized):

{
"type": "BigData.CaaS.SparkMlExperiment",
"parameters": {
"mlflowVersion": "2.21.3",
"backendStoreUri": "sqlite:///mlflow/mlflow.db",
"artifactRoot": "/mlflow/artifacts",
"replicas": 2,
"cpuRequest": "250m",
"cpuLimit": "1",
"memoryRequest": "512Mi",
"memoryLimit": "1Gi",
"servicePort": 5000,
"namespace": "mlflow"
}
}

BigData.CaaS.SparkOperator

Spark Operator controller enabling native Spark job submission in Kubernetes.

ParameterDescriptionExample / possible valuesRequired
operatorVersionSpark Operator chart/version to install.2.5.0No
sparkVersionDefault Spark version the operator targets.3.5.3No
enableWebhookEnable the mutating admission webhook.trueNo
enableMetricsExpose Prometheus metrics.trueNo
namespaceKubernetes namespace the operator is deployed into.spark-operatorYes

Example (fully parameterized):

{
"type": "BigData.CaaS.SparkOperator",
"parameters": {
"operatorVersion": "2.5.0",
"sparkVersion": "3.5.3",
"enableWebhook": true,
"enableMetrics": true,
"namespace": "spark-operator"
}
}

BigData.CaaS.SparkUnityCatalog

Unity Catalog server for governing data and AI assets in a Spark ecosystem.

ParameterDescriptionExample / possible valuesRequired
unityCatalogVersionUnity Catalog server version to deploy.0.3.0No
replicasNumber of catalog server replicas.2No
cpuRequestCPU requested per replica.250mNo
cpuLimitCPU limit per replica.1No
memoryRequestMemory requested per replica.512MiNo
memoryLimitMemory limit per replica.1GiNo
namespaceKubernetes namespace the server is deployed into.unity-catalogYes

Example (fully parameterized):

{
"type": "BigData.CaaS.SparkUnityCatalog",
"parameters": {
"unityCatalogVersion": "0.3.0",
"replicas": 2,
"cpuRequest": "250m",
"cpuLimit": "1",
"memoryRequest": "512Mi",
"memoryLimit": "1Gi",
"namespace": "unity-catalog"
}
}

BigData.PaaS.Databricks

Azure Databricks is a managed Apache Spark platform for big data analytics and machine learning.

ParameterDescriptionExample / possible valuesRequired
pricingTierDatabricks workspace pricing tier.premium, standard, trialNo
managedResourceGroupNameName of the managed resource group Databricks creates.databricks-managed-rgNo
enableNoPublicIpDeploy workspace with no public IP (secure cluster connectivity).falseNo

Example (fully parameterized):

{
"type": "BigData.PaaS.Databricks",
"parameters": {
"pricingTier": "premium",
"managedResourceGroupName": "databricks-managed-rg",
"enableNoPublicIp": false
}
}

BigData.PaaS.DatabricksCluster

Compute cluster in Databricks for running workloads, notebooks, and jobs.

ParameterDescriptionExample / possible valuesRequired
clusterNameDisplay name of the cluster.analytics-clusterNo
sparkVersionDatabricks Runtime version.14.3.x-scala2.12No
nodeTypeIdAzure VM SKU used for worker/driver nodes.Standard_DS3_v2No
numWorkersFixed number of workers (used when autoscaling is off).2No
minWorkersMinimum workers when autoscaling.1No
maxWorkersMaximum workers when autoscaling.8No
sparkConfExtra Spark configuration key/values.{"spark.databricks.delta.preview.enabled": "true"}No
pypiLibrariesPyPI packages installed on the cluster.["pandas==2.2.0"]No
mavenLibrariesMaven coordinates installed on the cluster.["com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.22"]No
autoTerminationMinutesIdle minutes before auto-termination.60No
dataSecurityModeAccess/security mode of the cluster.SINGLE_USER, USER_ISOLATION, NONENo

Example (fully parameterized):

{
"type": "BigData.PaaS.DatabricksCluster",
"parameters": {
"clusterName": "analytics-cluster",
"sparkVersion": "14.3.x-scala2.12",
"nodeTypeId": "Standard_DS3_v2",
"numWorkers": 2,
"minWorkers": 1,
"maxWorkers": 8,
"sparkConf": {"spark.databricks.delta.preview.enabled": "true"},
"pypiLibraries": ["pandas==2.2.0"],
"mavenLibraries": ["com.microsoft.azure:azure-eventhubs-spark_2.12:2.3.22"],
"autoTerminationMinutes": 60,
"dataSecurityMode": "SINGLE_USER"
}
}

BigData.PaaS.DatabricksJob

Job in Databricks that executes notebooks, Python files, or JAR tasks on schedule or on-demand.

ParameterDescriptionExample / possible valuesRequired
jobNameDisplay name of the job.nightly-etlNo
taskTypeKind of task the job runs.NOTEBOOK, PYTHON, SPARK_JAR, PYTHON_WHEELNo
notebookPathWorkspace path of the notebook to run./Repos/etl/mainConditional — required when taskType=NOTEBOOK
pythonFilePath/URI of the Python file to run.dbfs:/scripts/job.pyConditional — required when taskType=PYTHON
mainClassNameMain class for a Spark JAR task.com.example.SparkJobConditional — required when taskType=SPARK_JAR
jarUriURI of the JAR artifact.dbfs:/jars/job.jarNo
parametersPositional parameters passed to the task.["--env", "prod"]No
cronScheduleQuartz cron expression for scheduled runs.0 0 2 * * ?No
maxRetriesRetry attempts on failure.0No
existingClusterRun on an existing cluster instead of a job cluster.falseNo
artifactTypeArtifact type for a wheel task.whlNo
artifactUriURI of the wheel/artifact to install.dbfs:/artifacts/pipeline-1.0.0-py3-none-any.whlNo
packageNamePython wheel package name.pipelineNo
entryPointWheel entry point to invoke.mainConditional — required for a python_wheel task
entryPointArgsArguments passed to the wheel entry point.["--full-refresh"]No

Example (fully parameterized):

{
"type": "BigData.PaaS.DatabricksJob",
"parameters": {
"jobName": "nightly-etl",
"taskType": "NOTEBOOK",
"notebookPath": "/Repos/etl/main",
"pythonFile": "dbfs:/scripts/job.py",
"mainClassName": "com.example.SparkJob",
"jarUri": "dbfs:/jars/job.jar",
"parameters": ["--env", "prod"],
"cronSchedule": "0 0 2 * * ?",
"maxRetries": 0,
"existingCluster": false,
"artifactType": "whl",
"artifactUri": "dbfs:/artifacts/pipeline-1.0.0-py3-none-any.whl",
"packageName": "pipeline",
"entryPoint": "main",
"entryPointArgs": ["--full-refresh"]
}
}

BigData.PaaS.DatabricksMlflowExperiment

MLflow experiment in Databricks for tracking and managing machine learning experiments.

ParameterDescriptionExample / possible valuesRequired
experimentNameWorkspace path/name of the experiment./Shared/fraud-detectionYes
artifactLocationStorage location for experiment artifacts.dbfs:/mlflow/experimentsNo

Example (fully parameterized):

{
"type": "BigData.PaaS.DatabricksMlflowExperiment",
"parameters": {
"experimentName": "/Shared/fraud-detection",
"artifactLocation": "dbfs:/mlflow/experiments"
}
}

BigData.PaaS.StorageAccount

Azure Storage Account (ADLS Gen2) for storing blobs, files, queues, and tables.

ParameterDescriptionExample / possible valuesRequired
kindStorage account kind.StorageV2, BlobStorage, FileStorageNo
azureRegionAzure region the account is created in.westeuropeNo
skuReplication/performance SKU.Standard_LRS, Standard_GRS, Premium_LRSNo
extendedLocationEdge zone / extended location placement.{"name": "losangeles", "type": "EdgeZone"}No
identityManaged identity assigned to the account.{"type": "SystemAssigned"}No
accessTierDefault blob access tier.Hot, CoolNo
allowBlobPublicAccessAllow anonymous public access to blobs.falseNo
allowCrossTenantReplicationAllow object replication across tenants.falseNo
allowSharedKeyAccessAllow access via storage account keys.trueNo
allowedCopyScopeRestrict copy operations scope.AAD, PrivateLinkNo
azureFilesIdentityBasedAuthenticationIdentity-based auth settings for Azure Files.{"directoryServiceOptions": "AADDS"}No
customDomainCustom domain assigned to the account.{"name": "storage.example.com"}No
defaultToOAuthAuthenticationDefault to Azure AD auth in the portal.falseNo
dnsEndpointTypeDNS endpoint type.Standard, AzureDnsZoneNo
encryptionEncryption configuration.{"keySource": "Microsoft.Storage"}No
immutableStorageWithVersioningAccount-level immutability with versioning.{"enabled": true}No
isHnsEnabledEnable hierarchical namespace (Data Lake Gen2).trueNo
isLocalUserEnabledEnable local users for SFTP/NFS.trueNo
isNfsV3EnabledEnable NFS v3 protocol.trueNo
isSftpEnabledEnable SFTP access.trueNo
keyPolicyAccount key expiration policy.{"keyExpirationPeriodInDays": 90}No
largeFileSharesStateEnable large file shares.Enabled, DisabledNo
minimumTlsVersionMinimum TLS version accepted.TLS1_2No
networkRuleSetNetwork access rules.{"defaultAction": "Deny"}No
publicNetworkAccessPublic network access state.Enabled, DisabledNo
routingPreferenceNetwork routing preference.{"routingChoice": "MicrosoftRouting"}No
sasPolicySAS token expiration policy.{"sasExpirationPeriod": "1.00:00:00"}No
supportsHttpsTrafficOnlyRequire HTTPS for all traffic.trueNo
fileServiceFile service properties.{"shareDeleteRetentionDays": 7}No
backupBackup configuration.{"enabled": true, "retentionDays": 30}No

Example (fully parameterized):

{
"type": "BigData.PaaS.StorageAccount",
"parameters": {
"kind": "StorageV2",
"azureRegion": "westeurope",
"sku": "Standard_LRS",
"extendedLocation": {"name": "losangeles", "type": "EdgeZone"},
"identity": {"type": "SystemAssigned"},
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": false,
"allowSharedKeyAccess": true,
"allowedCopyScope": "AAD",
"azureFilesIdentityBasedAuthentication": {"directoryServiceOptions": "AADDS"},
"customDomain": {"name": "storage.example.com"},
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {"keySource": "Microsoft.Storage"},
"immutableStorageWithVersioning": {"enabled": true},
"isHnsEnabled": true,
"isLocalUserEnabled": true,
"isNfsV3Enabled": true,
"isSftpEnabled": true,
"keyPolicy": {"keyExpirationPeriodInDays": 90},
"largeFileSharesState": "Enabled",
"minimumTlsVersion": "TLS1_2",
"networkRuleSet": {"defaultAction": "Deny"},
"publicNetworkAccess": "Enabled",
"routingPreference": {"routingChoice": "MicrosoftRouting"},
"sasPolicy": {"sasExpirationPeriod": "1.00:00:00"},
"supportsHttpsTrafficOnly": true,
"fileService": {"shareDeleteRetentionDays": 7},
"backup": {"enabled": true, "retentionDays": 30}
}
}

BigData.SaaS.Unmanaged

External big data service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-bigdata-secretNo
secretValueConnection details / credentials for the external service.https://snowflake.example.com;token=abc123Yes

Example (fully parameterized):

{
"type": "BigData.SaaS.Unmanaged",
"parameters": {
"secretName": "external-bigdata-secret",
"secretValue": "https://snowflake.example.com;token=abc123"
}
}

CustomWorkloads

CustomWorkloads.CaaS.KubernetesWorkload

Generic Kubernetes workload deployed from a GitOps repository.

ParameterDescriptionExample / possible valuesRequired
sshRepositoryURISSH URI of the GitOps repository.git@github.com:org/repo.gitYes
repoIdIdentifier of the repository.repo-nameYes
branchNameBranch synced by GitOps.mainYes
privateSSHKeySecretIdSecret store ID holding the private SSH key.workload-ssh-keyNo
privateSSHKeyEnvironmentSecretShortNameEnvironment secret short name for the SSH key.SSH_KEYNo
privateSSHKeyPassphraseSecretIdSecret store ID holding the SSH key passphrase.workload-ssh-passphraseNo
privateSSHKeyPassphraseEnvironmentSecretShortNameEnvironment secret short name for the passphrase.SSH_PASSPHRASENo
ciCdProfileShortNameCI/CD profile applied to the workload.default-cicdNo
environmentSecretShortNamesEnvironment secrets exposed to the workload.["DB_PASSWORD", "API_KEY"]No
rolesPlatform roles granted to the workload.["reader", "deployer"]No
workloadSecretIdKeyEnv var key for the workload client ID.CLIENT_IDNo
workloadSecretPasswordKeyEnv var key for the workload client secret.CLIENT_SECRETNo
workloadIdentityEnabledEnable Azure Workload Identity.trueNo
namespaceKubernetes namespace the workload runs in.defaultYes

Example (fully parameterized):

{
"type": "CustomWorkloads.CaaS.KubernetesWorkload",
"parameters": {
"sshRepositoryURI": "git@github.com:org/repo.git",
"repoId": "repo-name",
"branchName": "main",
"privateSSHKeySecretId": "workload-ssh-key",
"privateSSHKeyEnvironmentSecretShortName": "SSH_KEY",
"privateSSHKeyPassphraseSecretId": "workload-ssh-passphrase",
"privateSSHKeyPassphraseEnvironmentSecretShortName": "SSH_PASSPHRASE",
"ciCdProfileShortName": "default-cicd",
"environmentSecretShortNames": ["DB_PASSWORD", "API_KEY"],
"roles": ["reader", "deployer"],
"workloadSecretIdKey": "CLIENT_ID",
"workloadSecretPasswordKey": "CLIENT_SECRET",
"workloadIdentityEnabled": true,
"namespace": "default"
}
}

CustomWorkloads.FaaS.AzureFunction

Serverless function hosted in Azure Functions runtime.

ParameterDescriptionExample / possible valuesRequired
configurationFunction app runtime configuration.{"runtime": "dotnet-isolated", "version": "~4"}No
appSettingsApplication settings / environment variables.{"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"}No
identityManaged identity assigned to the function app.{"type": "SystemAssigned"}No
appServicePlanHosting plan configuration.{"sku": "Y1", "tier": "Dynamic"}No
storageAccountConnectionStringConnection string of the backing storage account.DefaultEndpointsProtocol=https;AccountName=funcstorage;AccountKey=...No
sourceArtifactURL of the deployment package.https://storage.example.com/functions/app.zipNo
packageTypeDeployment package type.zipNo

Example (fully parameterized):

{
"type": "CustomWorkloads.FaaS.AzureFunction",
"parameters": {
"configuration": {"runtime": "dotnet-isolated", "version": "~4"},
"appSettings": {"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"},
"identity": {"type": "SystemAssigned"},
"appServicePlan": {"sku": "Y1", "tier": "Dynamic"},
"storageAccountConnectionString": "DefaultEndpointsProtocol=https;AccountName=funcstorage;AccountKey=abc123==",
"sourceArtifact": "https://storage.example.com/functions/app.zip",
"packageType": "zip"
}
}

CustomWorkloads.PaaS.AzureContainerApp

Container application managed by Azure Container Apps, a serverless container hosting service.

ParameterDescriptionExample / possible valuesRequired
imageContainer image to deploy.myregistry.azurecr.io/api:1.0.0No
cpuvCPU cores allocated to the container.0.5No
memoryMemory allocated to the container.1GiNo
portContainer port exposed by ingress.8080No
externalIngressExpose the app to external traffic.trueNo
minReplicasMinimum replica count.0No
maxReplicasMaximum replica count.10No
regionAzure region for the container app.westeuropeNo
resourceGroupResource group hosting the container app.my-container-apps-rgNo

Example (fully parameterized):

{
"type": "CustomWorkloads.PaaS.AzureContainerApp",
"parameters": {
"image": "myregistry.azurecr.io/api:1.0.0",
"cpu": 0.5,
"memory": "1Gi",
"port": 8080,
"externalIngress": true,
"minReplicas": 0,
"maxReplicas": 10,
"region": "westeurope",
"resourceGroup": "my-container-apps-rg"
}
}

CustomWorkloads.PaaS.AzureContainerInstance

Container instance managed by Azure Container Instances for quick, serverless deployment.

ParameterDescriptionExample / possible valuesRequired
imageContainer image to deploy.mcr.microsoft.com/azuredocs/aci-helloworld:latestNo
cpuvCPU cores allocated to the container.1.0No
memoryInGBMemory in gigabytes.1.5No
portContainer port to expose.8080No
restartPolicyRestart behavior.Always, OnFailure, NeverNo
publicIpAssign a public IP address.falseNo
dnsNameLabelDNS name label for the public FQDN.my-aci-appNo
locationAzure region for the instance.westeuropeNo
resourceGroupResource group hosting the instance.my-aci-rgNo

Example (fully parameterized):

{
"type": "CustomWorkloads.PaaS.AzureContainerInstance",
"parameters": {
"image": "mcr.microsoft.com/azuredocs/aci-helloworld:latest",
"cpu": 1.0,
"memoryInGB": 1.5,
"port": 8080,
"restartPolicy": "Always",
"publicIp": false,
"dnsNameLabel": "my-aci-app",
"location": "westeurope",
"resourceGroup": "my-aci-rg"
}
}

CustomWorkloads.PaaS.WebApp

Azure App Service web application for hosting web apps and APIs.

ParameterDescriptionExample / possible valuesRequired
azureRegionAzure region the web app runs in.westeuropeNo
containerSizeContainer size for consumption/function-style hosting.0No
certificatesTLS certificate names bound to the app.["www-example-com-cert"]No
customDomainsCustom domains bound to the app.["www.example.com"]No
appServicePlanApp Service plan configuration.{"sku": "P1v3", "tier": "PremiumV3"}No
configurationSite configuration (stack, always-on, etc.).{"linuxFxVersion": "DOTNETCORE|8.0", "alwaysOn": true}No
cloningInfoSource app to clone from at creation.{"sourceWebAppId": "/subscriptions/.../sites/source-app"}No
clientAffinityEnabledEnable ARR session affinity cookies.falseNo
clientCertEnabledRequire client certificates.falseNo
clientCertExclusionPathsPaths excluded from client-cert auth./healthNo
clientCertModeClient certificate enforcement mode.Required, OptionalNo
customDomainVerificationIdDomain ownership verification token.8A0B1C2D3E4F5A6B7C8D9E0FNo
hostingEnvironmentProfileIdApp Service Environment resource ID./subscriptions/.../hostingEnvironments/my-aseNo
redundancyModeRedundancy mode of the app.None, ActiveActive, FailoverNo
virtualNetworkSubnetIdSubnet ID for VNet integration./subscriptions/.../subnets/webapp-subnetNo
publishingUsernameDeployment (SCM) publishing username.Fractal CloudNo
httpsOnlyRedirect all traffic to HTTPS.trueNo
enabledWhether the app is enabled.trueNo
hostNamesDisabledDisable public hostnames.falseNo
hyperVRun in a Hyper-V (Windows container) sandbox.falseNo
reservedReserved flag (true for Linux apps).falseNo
scmSiteAlsoStoppedStop the SCM site when the app is stopped.falseNo
storageAccountRequiredRequire a storage account for the app.falseNo
dailyMemoryTimeQuotaDaily memory-time quota (0 = unlimited).0No
repoIdSource repository identifier.my-webappNo
branchNameBranch to deploy from.mainNo
sshRepositoryURISSH URI of the source repository.git@github.com:org/webapp.gitNo
privateSSHKeySecretIdSecret store ID holding the private SSH key.webapp-ssh-keyNo
privateSSHKeyPassphraseSecretIdSecret store ID holding the SSH key passphrase.webapp-ssh-passphraseNo
ciCdProfileShortNameCI/CD profile applied to the app.default-cicdNo
rolesPlatform roles granted to the app.["contributor"]No
workloadSecretIdKeyEnv var key for the workload client ID.CLIENT_IDNo
workloadSecretPasswordKeyEnv var key for the workload client secret.CLIENT_SECRETNo

Example (fully parameterized):

{
"type": "CustomWorkloads.PaaS.WebApp",
"parameters": {
"azureRegion": "westeurope",
"containerSize": 0,
"certificates": ["www-example-com-cert"],
"customDomains": ["www.example.com"],
"appServicePlan": {"sku": "P1v3", "tier": "PremiumV3"},
"configuration": {"linuxFxVersion": "DOTNETCORE|8.0", "alwaysOn": true},
"cloningInfo": {"sourceWebAppId": "/subscriptions/00000000-0000-0000-0000-000000000000/sites/source-app"},
"clientAffinityEnabled": false,
"clientCertEnabled": false,
"clientCertExclusionPaths": "/health",
"clientCertMode": "Required",
"customDomainVerificationId": "8A0B1C2D3E4F5A6B7C8D9E0F",
"hostingEnvironmentProfileId": "/subscriptions/00000000-0000-0000-0000-000000000000/hostingEnvironments/my-ase",
"redundancyMode": "None",
"virtualNetworkSubnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/subnets/webapp-subnet",
"publishingUsername": "Fractal Cloud",
"httpsOnly": true,
"enabled": true,
"hostNamesDisabled": false,
"hyperV": false,
"reserved": false,
"scmSiteAlsoStopped": false,
"storageAccountRequired": false,
"dailyMemoryTimeQuota": 0,
"repoId": "my-webapp",
"branchName": "main",
"sshRepositoryURI": "git@github.com:org/webapp.git",
"privateSSHKeySecretId": "webapp-ssh-key",
"privateSSHKeyPassphraseSecretId": "webapp-ssh-passphrase",
"ciCdProfileShortName": "default-cicd",
"roles": ["contributor"],
"workloadSecretIdKey": "CLIENT_ID",
"workloadSecretPasswordKey": "CLIENT_SECRET"
}
}

CustomWorkloads.SaaS.Unmanaged

External custom workload service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-workload-secretNo
secretValueConnection details / credentials for the external service.https://workload.example.com;token=abc123Yes

Example (fully parameterized):

{
"type": "CustomWorkloads.SaaS.Unmanaged",
"parameters": {
"secretName": "external-workload-secret",
"secretValue": "https://workload.example.com;token=abc123"
}
}

Messaging

Messaging.CaaS.Kafka

Apache Kafka cluster deployed on Kubernetes for event streaming.

ParameterDescriptionExample / possible valuesRequired
replicasNumber of Kafka broker replicas.5No
kafkaVersionKafka version to deploy.4.2.0No
memoryRequestMemory requested per broker.16GiNo
memoryLimitMemory limit per broker.32GiNo
cpuRequestCPU requested per broker.4No
cpuLimitCPU limit per broker.8No
storageSizePersistent storage per broker.1TiNo
namespaceKubernetes namespace the cluster is deployed into.kafkaYes

Example (fully parameterized):

{
"type": "Messaging.CaaS.Kafka",
"parameters": {
"replicas": 5,
"kafkaVersion": "4.2.0",
"memoryRequest": "16Gi",
"memoryLimit": "32Gi",
"cpuRequest": "4",
"cpuLimit": "8",
"storageSize": "1Ti",
"namespace": "kafka"
}
}

Messaging.CaaS.KafkaTopic

Topic in a Kafka cluster for publishing and consuming messages.

ParameterDescriptionExample / possible valuesRequired
partitionsNumber of partitions for the topic.50No
replicasReplication factor for the topic.2No
retentionMsMessage retention in milliseconds.172800000No
clusterNameName of the Kafka cluster hosting the topic.kafka-clusterYes
namespaceKubernetes namespace of the Kafka cluster.kafkaYes

Example (fully parameterized):

{
"type": "Messaging.CaaS.KafkaTopic",
"parameters": {
"partitions": 50,
"replicas": 2,
"retentionMs": 172800000,
"clusterName": "kafka-cluster",
"namespace": "kafka"
}
}

Messaging.CaaS.KafkaUser

Kafka user with ACLs for secure access to Kafka cluster topics.

ParameterDescriptionExample / possible valuesRequired
aclsAccess control rules granted to the user.[{"resource": "topic", "name": "orders", "operation": "Read"}]No
clusterNameName of the Kafka cluster the user belongs to.kafka-clusterYes
namespaceKubernetes namespace of the Kafka cluster.kafkaYes

Example (fully parameterized):

{
"type": "Messaging.CaaS.KafkaUser",
"parameters": {
"acls": [{"resource": "topic", "name": "orders", "operation": "Read"}],
"clusterName": "kafka-cluster",
"namespace": "kafka"
}
}

Messaging.PaaS.EventHubInstance

Event hub instance in Azure Event Hubs for capturing event streams.

ParameterDescriptionExample / possible valuesRequired
partitionCountNumber of partitions in the event hub.1No
messageRetentionInDaysDays messages are retained.1No
userMetadataFree-form metadata attached to the event hub.ingest pipeline v2No
retentionRetention/cleanup policy for the event hub.{"cleanupPolicy": "Compact", "tombstoneTimeInHours": 12, "timeInHours": 12}No

Example (fully parameterized):

{
"type": "Messaging.PaaS.EventHubInstance",
"parameters": {
"partitionCount": 1,
"messageRetentionInDays": 1,
"userMetadata": "ingest pipeline v2",
"retention": {
"cleanupPolicy": "Compact",
"tombstoneTimeInHours": 12,
"timeInHours": 12
}
}
}

Messaging.PaaS.EventHubNamespace

Namespace in Azure Event Hubs containing event hubs and related infrastructure.

ParameterDescriptionExample / possible valuesRequired
kafkaEnabledEnable the Kafka-compatible endpoint.trueNo
alternateNameAlternate name for the namespace.my-eventhub-alt-nameNo
diableLocalAuthDisable SAS key (local) authentication.falseNo
autoInflateEnabledAutomatically scale throughput units.trueNo
maximumThroughputUnitsUpper bound for auto-inflate throughput units.20No
minimumTlsVersionMinimum TLS version accepted.1.2No
publicNetworkAccessPublic network access state.Disabled, EnabledNo
skuNamespace SKU tier, name, and capacity.{"tier": "Standard", "name": "Standard", "capacity": 1}No
zoneRedundantSpread across availability zones.falseNo

Example (fully parameterized):

{
"type": "Messaging.PaaS.EventHubNamespace",
"parameters": {
"kafkaEnabled": true,
"alternateName": "my-eventhub-alt-name",
"diableLocalAuth": false,
"autoInflateEnabled": true,
"maximumThroughputUnits": 20,
"minimumTlsVersion": "1.2",
"publicNetworkAccess": "Disabled",
"sku": {
"tier": "Standard",
"name": "Standard",
"capacity": 1
},
"zoneRedundant": false
}
}

Messaging.PaaS.Relay

Azure Relay service for secure communication across network boundaries.

No configurable parameters.

Example (fully parameterized):

{
"type": "Messaging.PaaS.Relay",
"parameters": {}
}

Messaging.PaaS.ServiceBus

Azure Service Bus namespace for messaging, queues, topics, and subscriptions.

ParameterDescriptionExample / possible valuesRequired
skuNamespace SKU name and tier.{"name": "Standard", "tier": "Standard"}No
skuTierPricing tier of the namespace.Standard, Premium, BasicNo
identityManaged identity assigned to the namespace.SystemAssignedNo
encryptionCustomer-managed key encryption settings.{"keySource": "Microsoft.KeyVault"}No
disableLocalAuthDisable SAS key (local) authentication.falseNo
zoneRedundantSpread across availability zones.falseNo

Example (fully parameterized):

{
"type": "Messaging.PaaS.ServiceBus",
"parameters": {
"sku": {"name": "Standard", "tier": "Standard"},
"skuTier": "Standard",
"identity": "SystemAssigned",
"encryption": {"keySource": "Microsoft.KeyVault"},
"disableLocalAuth": false,
"zoneRedundant": false
}
}

Messaging.PaaS.ServiceBusQueue

Message queue in Azure Service Bus for reliable message delivery.

ParameterDescriptionExample / possible valuesRequired
autoDeleteOnIdleIdle interval before the queue is auto-deleted (ISO 8601).PT5MNo
deadLetteringOnMessageExpirationDead-letter messages that expire.falseNo
defaultMessageTimeToLiveDefault message TTL (ISO 8601).PT5MNo
duplicateDetectionHistoryTimeWindowDuplicate detection window (ISO 8601).PT5MNo
enableExpressEnable express entities (in-memory).falseNo
enableBatchedOperationsEnable server-side batched operations.falseNo
enablePartitioningEnable partitioning across brokers.falseNo
forwardToQueue/topic to auto-forward messages to.orders-processingNo
forwardDeadLetteredMessagesToEntity to auto-forward dead-lettered messages to.orders-dlqNo
lockDurationPeek-lock duration (ISO 8601).PT5MNo
maxDeliveryCountMax delivery attempts before dead-lettering.1No
maxSizeInMegabytesMaximum queue size in MB.1024No
maxMessageSizeInKilobytesMaximum message size in KB.256No
requiresSessionRequire sessions for message ordering.falseNo
requiresDuplicateDetectionEnable duplicate detection.falseNo
statusEntity status.Active, Disabled, SendDisabledNo

Example (fully parameterized):

{
"type": "Messaging.PaaS.ServiceBusQueue",
"parameters": {
"autoDeleteOnIdle": "PT5M",
"deadLetteringOnMessageExpiration": false,
"defaultMessageTimeToLive": "PT5M",
"duplicateDetectionHistoryTimeWindow": "PT5M",
"enableExpress": false,
"enableBatchedOperations": false,
"enablePartitioning": false,
"forwardTo": "orders-processing",
"forwardDeadLetteredMessagesTo": "orders-dlq",
"lockDuration": "PT5M",
"maxDeliveryCount": 1,
"maxSizeInMegabytes": 1024,
"maxMessageSizeInKilobytes": 256,
"requiresSession": false,
"requiresDuplicateDetection": false,
"status": "Active"
}
}

Messaging.PaaS.ServiceBusTopic

Topic in Azure Service Bus for pub/sub messaging patterns.

ParameterDescriptionExample / possible valuesRequired
autoDeleteOnIdleIdle interval before the topic is auto-deleted (ISO 8601).PT5MNo
defaultMessageTimeToLiveDefault message TTL (ISO 8601).PT5MNo
duplicateDetectionHistoryTimeWindowDuplicate detection window (ISO 8601).PT5MNo
enableExpressEnable express entities (in-memory).falseNo
enableBatchedOperationsEnable server-side batched operations.falseNo
enablePartitioningEnable partitioning across brokers.falseNo
maxSizeInMegabytesMaximum topic size in MB.1024No
maxMessageSizeInKilobytesMaximum message size in KB.256No
requiresDuplicateDetectionEnable duplicate detection.falseNo
statusEntity status.Active, Disabled, SendDisabledNo
supportOrderingPreserve message ordering.falseNo

Example (fully parameterized):

{
"type": "Messaging.PaaS.ServiceBusTopic",
"parameters": {
"autoDeleteOnIdle": "PT5M",
"defaultMessageTimeToLive": "PT5M",
"duplicateDetectionHistoryTimeWindow": "PT5M",
"enableExpress": false,
"enableBatchedOperations": false,
"enablePartitioning": false,
"maxSizeInMegabytes": 1024,
"maxMessageSizeInKilobytes": 256,
"requiresDuplicateDetection": false,
"status": "Active",
"supportOrdering": false
}
}

Messaging.SaaS.Unmanaged

External messaging service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-messaging-secretNo
secretValueConnection details / credentials for the external service.amqps://broker.example.com;key=abc123Yes

Example (fully parameterized):

{
"type": "Messaging.SaaS.Unmanaged",
"parameters": {
"secretName": "external-messaging-secret",
"secretValue": "amqps://broker.example.com;key=abc123"
}
}

NetworkAndCompute

NetworkAndCompute.IaaS.AzureLoadBalancer

Azure Load Balancer distributes incoming traffic across backend resources.

ParameterDescriptionExample / possible valuesRequired
lbTypeLoad balancer SKU.Standard, BasicNo
lbSchemeWhether the load balancer is internal or public.internal, publicNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.AzureLoadBalancer",
"parameters": {
"lbType": "Standard",
"lbScheme": "internal"
}
}

NetworkAndCompute.IaaS.AzureNetworkSecurityGroup

Network Security Group controls inbound and outbound traffic with security rules.

ParameterDescriptionExample / possible valuesRequired
descriptionHuman-readable description of the security group.Allow inbound HTTPS from the app subnetNo
ingressRulesInbound traffic rules. Each rule needs at least one of sourceCidr or sourceComponentId.[{"protocol": "tcp", "fromPort": 443, "toPort": 443, "sourceCidr": "10.0.0.0/16"}]No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.AzureNetworkSecurityGroup",
"parameters": {
"description": "Allow inbound HTTPS from the app subnet",
"ingressRules": [{"protocol": "tcp", "fromPort": 443, "toPort": 443, "sourceCidr": "10.0.0.0/16"}]
}
}

NetworkAndCompute.IaaS.AzureSecurityGroup

Network security group for controlling traffic flow to and from resources.

ParameterDescriptionExample / possible valuesRequired
descriptionHuman-readable description of the security group.Allow inbound HTTPS from the app subnetNo
ingressRulesInbound traffic rules. Each rule needs at least one of sourceCidr or sourceComponentId.[{"protocol": "tcp", "fromPort": 443, "toPort": 443, "sourceCidr": "10.0.0.0/16"}]No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.AzureSecurityGroup",
"parameters": {
"description": "Allow inbound HTTPS from the app subnet",
"ingressRules": [{"protocol": "tcp", "fromPort": 443, "toPort": 443, "sourceCidr": "10.0.0.0/16"}]
}
}

NetworkAndCompute.IaaS.AzureSubnet

Subnet within a virtual network for grouping and isolating resources.

ParameterDescriptionExample / possible valuesRequired
cidrBlockAddress range of the subnet.10.0.1.0/24No
vnetNameName of the parent virtual network.my-vnetNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.AzureSubnet",
"parameters": {
"cidrBlock": "10.0.1.0/24",
"vnetName": "my-vnet"
}
}

NetworkAndCompute.IaaS.AzureVirtualMachine

Virtual machine in Azure for computing workloads.

ParameterDescriptionExample / possible valuesRequired
instanceTypeVM size / SKU.Standard_B1s, Standard_DS3_v2No
imageIdOS image reference (publisher:offer:sku:version).Canonical:UbuntuServer:18.04-LTS:latestNo
keyNameName of the SSH key pair for login.my-ssh-keyNo
userDataCloud-init / startup script.#!/bin/bash\napt-get updateNo
associatePublicIpAssign a public IP address.falseNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.AzureVirtualMachine",
"parameters": {
"instanceType": "Standard_B1s",
"imageId": "Canonical:UbuntuServer:18.04-LTS:latest",
"keyName": "my-ssh-key",
"userData": "#!/bin/bash\napt-get update",
"associatePublicIp": false
}
}

NetworkAndCompute.IaaS.AzureVirtualNetwork

Virtual network in Azure providing isolated network environment.

ParameterDescriptionExample / possible valuesRequired
cidrBlockAddress space of the virtual network. Defaults to 10.1.0.0/20 when omitted.10.1.0.0/20No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.AzureVirtualNetwork",
"parameters": {
"cidrBlock": "10.1.0.0/20"
}
}

NetworkAndCompute.IaaS.SecurityGroup

Network security group for controlling inbound and outbound traffic.

ParameterDescriptionExample / possible valuesRequired
descriptionHuman-readable description of the security group.Allow inbound HTTPS from the app subnetNo
ingressRulesInbound traffic rules. Each rule needs at least one of sourceCidr or sourceComponentId.[{"protocol": "tcp", "fromPort": 443, "toPort": 443, "sourceCidr": "10.0.0.0/16"}]No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.SecurityGroup",
"parameters": {
"description": "Allow inbound HTTPS from the app subnet",
"ingressRules": [{"protocol": "tcp", "fromPort": 443, "toPort": 443, "sourceCidr": "10.0.0.0/16"}]
}
}

NetworkAndCompute.IaaS.VNet

Virtual network providing isolated networking and connectivity for Azure resources.

ParameterDescriptionExample / possible valuesRequired
cidrBlockAddress space of the virtual network.10.0.0.0/16No

Example (fully parameterized):

{
"type": "NetworkAndCompute.IaaS.VNet",
"parameters": {
"cidrBlock": "10.0.0.0/16"
}
}

NetworkAndCompute.PaaS.AKS

Azure Kubernetes Service — managed Kubernetes cluster in Azure.

ParameterDescriptionExample / possible valuesRequired
regionAzure region for the cluster. Blank → the environment region. Legacy alias: azureRegion.westeuropeNo
managedClusterSkuTierControl plane SKU tier.Free, Standard, PremiumNo
azureActiveDirectoryProfileAzure AD integration settings.{"managed": true, "enableAzureRBAC": true}No
outboundIpsStatic outbound public IP addresses.["20.50.1.10"]No
cidrBlockVirtual network address space.10.0.0.0/16No
vnetSubnetAddressIpRangeSubnet range for cluster nodes.10.0.1.0/24No
podIpRangeAddress range for pods.10.244.0.0/16No
serviceIpRangeAddress range for Kubernetes services.10.0.2.0/24No

Example (fully parameterized):

{
"type": "NetworkAndCompute.PaaS.AKS",
"parameters": {
"managedClusterSkuTier": "Free",
"azureActiveDirectoryProfile": {"managed": true, "enableAzureRBAC": true},
"outboundIps": ["20.50.1.10"],
"cidrBlock": "10.0.0.0/16",
"vnetSubnetAddressIpRange": "10.0.1.0/24",
"podIpRange": "10.244.0.0/16",
"serviceIpRange": "10.0.2.0/24"
}
}

NetworkAndCompute.PaaS.AzureAppService

Shared compute infrastructure for running App Service apps.

No configurable parameters.

Example (fully parameterized):

{
"type": "NetworkAndCompute.PaaS.AzureAppService",
"parameters": {}
}

NetworkAndCompute.PaaS.AzureContainerAppsEnvironment

Container Apps Environment providing container runtime and networking.

ParameterDescriptionExample / possible valuesRequired
locationAzure region for the environment.westeuropeNo
resourceGroupResource group hosting the environment.my-aca-env-rgNo
logAnalyticsWorkspaceIdLog Analytics workspace resource ID./subscriptions/.../workspaces/my-lawNo
logAnalyticsSharedKeyShared key for the Log Analytics workspace.abcdEFGH1234ijklMNOP5678==No

Example (fully parameterized):

{
"type": "NetworkAndCompute.PaaS.AzureContainerAppsEnvironment",
"parameters": {
"location": "westeurope",
"resourceGroup": "my-aca-env-rg",
"logAnalyticsWorkspaceId": "/subscriptions/00000000-0000-0000-0000-000000000000/workspaces/my-law",
"logAnalyticsSharedKey": "abcdEFGH1234ijklMNOP5678=="
}
}

NetworkAndCompute.PaaS.AzureContainerInstanceService

Service for running containers on Azure Container Instances.

No configurable parameters.

Example (fully parameterized):

{
"type": "NetworkAndCompute.PaaS.AzureContainerInstanceService",
"parameters": {}
}

NetworkAndCompute.PaaS.DnsZone

DNS zone for managing DNS records and domain resolution.

ParameterDescriptionExample / possible valuesRequired
isPrivateWhether the zone is a private DNS zone.trueNo

Example (fully parameterized):

{
"type": "NetworkAndCompute.PaaS.DnsZone",
"parameters": {
"isPrivate": true
}
}

NetworkAndCompute.PaaS.Kubernetes

Managed Kubernetes cluster in Azure (alias for AKS).

ParameterDescriptionExample / possible valuesRequired
managedClusterSkuTierControl plane SKU tier.Free, Standard, PremiumNo
azureActiveDirectoryProfileAzure AD integration settings.{"managed": true, "enableAzureRBAC": true}No
outboundIpsStatic outbound public IP addresses.["20.50.1.10"]No
cidrBlockVirtual network address space.10.0.0.0/16No
vnetSubnetAddressIpRangeSubnet range for cluster nodes.10.0.1.0/24No
podIpRangeAddress range for pods.10.244.0.0/16No
serviceIpRangeAddress range for Kubernetes services.10.0.2.0/24No

Example (fully parameterized):

{
"type": "NetworkAndCompute.PaaS.Kubernetes",
"parameters": {
"managedClusterSkuTier": "Free",
"azureActiveDirectoryProfile": {"managed": true, "enableAzureRBAC": true},
"outboundIps": ["20.50.1.10"],
"cidrBlock": "10.0.0.0/16",
"vnetSubnetAddressIpRange": "10.0.1.0/24",
"podIpRange": "10.244.0.0/16",
"serviceIpRange": "10.0.2.0/24"
}
}

NetworkAndCompute.SaaS.Unmanaged

External network/compute service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-compute-secretNo
secretValueConnection details / credentials for the external service.https://compute.example.com;token=abc123Yes

Example (fully parameterized):

{
"type": "NetworkAndCompute.SaaS.Unmanaged",
"parameters": {
"secretName": "external-compute-secret",
"secretValue": "https://compute.example.com;token=abc123"
}
}

Observability

Observability.CaaS.Elastic

Elastic Stack (Elasticsearch + Kibana) deployed on Kubernetes for logging and analytics.

ParameterDescriptionExample / possible valuesRequired
elasticVersionElasticsearch version to deploy.8.10.0Yes
elasticInstancesNumber of Elasticsearch nodes.3Yes
storagePersistent storage per node.100GiYes
storageClassNameKubernetes storage class backing the volumes.managed-premiumNo
memoryMemory (GB) per node.8No
cpuCPU cores per node.8No
isApmRequiredDeploy the APM server.falseNo
isKibanaRequiredDeploy Kibana.trueNo
secretsSecret references injected into the stack.{"elastic-credentials": "elasticsearch-es-elastic-user"}No
namespaceKubernetes namespace the stack is deployed into.elasticYes

Example (fully parameterized):

{
"type": "Observability.CaaS.Elastic",
"parameters": {
"elasticVersion": "8.10.0",
"elasticInstances": 3,
"storage": "100Gi",
"storageClassName": "managed-premium",
"memory": 8,
"cpu": 8,
"isApmRequired": false,
"isKibanaRequired": true,
"secrets": {"elastic-credentials": "elasticsearch-es-elastic-user"},
"namespace": "elastic"
}
}

Observability.CaaS.Jaeger

Jaeger distributed tracing system deployed on Kubernetes.

ParameterDescriptionExample / possible valuesRequired
storageClassNameKubernetes storage class backing the trace store.managed-premiumNo
storageSettingsTrace storage backend configuration.{"type": "elasticsearch", "esServerUrls": "http://elasticsearch:9200"}No
namespaceKubernetes namespace the system is deployed into.jaegerYes

Example (fully parameterized):

{
"type": "Observability.CaaS.Jaeger",
"parameters": {
"storageClassName": "managed-premium",
"storageSettings": {"type": "elasticsearch", "esServerUrls": "http://elasticsearch:9200"},
"namespace": "jaeger"
}
}

Observability.CaaS.Prometheus

Prometheus monitoring and alerting system deployed on Kubernetes.

ParameterDescriptionExample / possible valuesRequired
grafanaConfigSecretIdSecret store ID holding the Grafana configuration.grafana-admin-configNo
namespaceKubernetes namespace the system is deployed into.prometheusYes

Example (fully parameterized):

{
"type": "Observability.CaaS.Prometheus",
"parameters": {
"grafanaConfigSecretId": "grafana-admin-config",
"namespace": "prometheus"
}
}

Observability.SaaS.Elastic

External Elastic Cloud (hosted Elasticsearch) with custom URI configuration.

ParameterDescriptionExample / possible valuesRequired
kibanaUriURL of the hosted Kibana instance.https://my-deployment.kb.westeurope.azure.elastic-cloud.comYes
versionElastic Stack version.8.10.0Yes
operatorVersionECK operator version used to integrate.2.9.0Yes

Example (fully parameterized):

{
"type": "Observability.SaaS.Elastic",
"parameters": {
"kibanaUri": "https://my-deployment.kb.westeurope.azure.elastic-cloud.com",
"version": "8.10.0",
"operatorVersion": "2.9.0"
}
}

Observability.SaaS.Jaeger

External Jaeger instance with custom frontend URI.

ParameterDescriptionExample / possible valuesRequired
frontendUriURL of the Jaeger UI.https://jaeger.example.comYes
versionJaeger version.1.57.0Yes

Example (fully parameterized):

{
"type": "Observability.SaaS.Jaeger",
"parameters": {
"frontendUri": "https://jaeger.example.com",
"version": "1.57.0"
}
}

Observability.SaaS.Prometheus

External Prometheus service with API gateway and authentication.

ParameterDescriptionExample / possible valuesRequired
apiGatewayUrlURL of the Prometheus-compatible API gateway.https://prometheus.example.com/apiYes
grafanaConfigSecretIdSecret store ID holding the Grafana configuration.grafana-admin-configYes

Example (fully parameterized):

{
"type": "Observability.SaaS.Prometheus",
"parameters": {
"apiGatewayUrl": "https://prometheus.example.com/api",
"grafanaConfigSecretId": "grafana-admin-config"
}
}

Security

Security.CaaS.Ocelot

Ocelot API gateway deployed in Kubernetes for authentication and routing.

ParameterDescriptionExample / possible valuesRequired
hostPublic hostname the gateway serves.api.example.comYes
corsOriginsAllowed CORS origins.["https://app.example.com"]No
cookieMaxAgeSecAuth cookie lifetime in seconds.900No
pathPrefixRoute path prefix handled by the gateway./*No
rolesRoles required to access routes.["admin", "user"]No
namespaceKubernetes namespace the gateway is deployed into.ocelotYes

Example (fully parameterized):

{
"type": "Security.CaaS.Ocelot",
"parameters": {
"host": "api.example.com",
"corsOrigins": ["https://app.example.com"],
"cookieMaxAgeSec": 900,
"pathPrefix": "/*",
"roles": ["admin", "user"],
"namespace": "ocelot"
}
}

Security.PaaS.AzureEntraExternalId

Microsoft Entra External ID (Azure AD B2C / CIAM) tenant — the Azure implementation of the Identity Provider component; the counterpart to Amazon Cognito. Provisions a CIAM tenant with configurable MFA and password guardrails. App clients are provisioned per inbound link (see below); a tenant with zero links is valid.

ParameterDescriptionExample / possible valuesRequired
tenantNameEntra External ID tenant name.contosoYes
resourceGroupResource group hosting the tenant.my-identity-rgYes
regionPreserved for contract / back-compat — an Entra tenant is not an ARM-located resource, so this value is not consumed. Legacy alias: location.europeNo
mfaConfigurationMulti-factor authentication enforcement.OFF (default), OPTIONAL, ONNo
passwordPolicyPassword guardrail object: { "minLength": <int> }.{"minLength": 12}No
sessionDurationSession duration in seconds.3600No
userDirectoryNameFriendly directory name.customersNo

Example (fully parameterized):

{
"type": "Security.PaaS.AzureEntraExternalId",
"parameters": {
"tenantName": "contoso",
"resourceGroup": "my-identity-rg",
"mfaConfiguration": "OPTIONAL",
"passwordPolicy": { "minLength": 12 },
"sessionDuration": 3600,
"userDirectoryName": "customers"
}
}

App clients (provisioned per link). A Workload or gateway component links to this provider to become an OAuth client; each link provisions one app client shaped by clientType (web, spa, or machine), with redirectUris / logoutUris / scopes taken from the link settings. The guardrails above cap what any client may request. The tenant publishes oidcIssuerUrl, jwksUri, and each created clientId as output fields; the agent injects OIDC_ISSUER_URI, OIDC_CLIENT_ID, OIDC_JWKS_URI, OIDC_SCOPES, and — for confidential (web / machine) clients — OIDC_CLIENT_SECRET_REF into the linked consumer. The raw client secret is stored in Azure Key Vault and never placed in output fields.

Security.SaaS.Unmanaged

External security service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-security-secretNo
secretValueConnection details / credentials for the external service.https://vault.example.com;token=abc123Yes

Example (fully parameterized):

{
"type": "Security.SaaS.Unmanaged",
"parameters": {
"secretName": "external-security-secret",
"secretValue": "https://vault.example.com;token=abc123"
}
}

Storage

Storage.CaaS.CnpgCluster

CloudNativePG cluster — PostgreSQL deployed natively on Kubernetes.

ParameterDescriptionExample / possible valuesRequired
instancesNumber of PostgreSQL instances (primary + replicas).3No
postgresqlVersionPostgreSQL version to run.17.2No
storageSizePersistent storage per instance.10GiNo
storageClassKubernetes storage class backing the volumes.managed-premiumNo
cpuRequestCPU requested per instance.500mNo
cpuLimitCPU limit per instance.1No
memoryRequestMemory requested per instance.512MiNo
memoryLimitMemory limit per instance.1GiNo
databaseName of the default application database.appNo
databaseOwnerOwner role of the default database.appNo
enableSuperuserAccessEnable the PostgreSQL superuser.falseNo
namespaceKubernetes namespace the cluster is deployed into.cnpgYes

Example (fully parameterized):

{
"type": "Storage.CaaS.CnpgCluster",
"parameters": {
"instances": 3,
"postgresqlVersion": "17.2",
"storageSize": "10Gi",
"storageClass": "managed-premium",
"cpuRequest": "500m",
"cpuLimit": "1",
"memoryRequest": "512Mi",
"memoryLimit": "1Gi",
"database": "app",
"databaseOwner": "app",
"enableSuperuserAccess": false,
"namespace": "cnpg"
}
}

Storage.CaaS.CnpgDatabase

Database in a CloudNativePG cluster.

ParameterDescriptionExample / possible valuesRequired
databaseNameName of the database.appNo
databaseOwnerOwner role of the database.appNo
encodingCharacter encoding.UTF8No
localeCollateLC_COLLATE locale.en_US.UTF-8No
localeCTypeLC_CTYPE locale.en_US.UTF-8No
cnpgClusterNameName of the CloudNativePG cluster hosting the database.postgres-clusterYes
namespaceKubernetes namespace of the cluster.cnpgYes

Example (fully parameterized):

{
"type": "Storage.CaaS.CnpgDatabase",
"parameters": {
"databaseName": "app",
"databaseOwner": "app",
"encoding": "UTF8",
"localeCollate": "en_US.UTF-8",
"localeCType": "en_US.UTF-8",
"cnpgClusterName": "postgres-cluster",
"namespace": "cnpg"
}
}

Storage.CaaS.Elastic

Elastic Stack (Elasticsearch + Kibana) deployed on Kubernetes.

ParameterDescriptionExample / possible valuesRequired
elasticVersionElasticsearch version to deploy.8.10.0Yes
elasticInstancesNumber of Elasticsearch nodes.3Yes
storagePersistent storage per node.100GiYes
storageClassNameKubernetes storage class backing the volumes.managed-premiumNo
memoryMemory (GB) per node.8No
cpuCPU cores per node.8No
isApmRequiredDeploy the APM server.falseNo
isKibanaRequiredDeploy Kibana.trueNo
secretsSecret references injected into the stack.{"elastic-credentials": "elasticsearch-es-elastic-user"}No
namespaceKubernetes namespace the stack is deployed into.elasticYes

Example (fully parameterized):

{
"type": "Storage.CaaS.Elastic",
"parameters": {
"elasticVersion": "8.10.0",
"elasticInstances": 3,
"storage": "100Gi",
"storageClassName": "managed-premium",
"memory": 8,
"cpu": 8,
"isApmRequired": false,
"isKibanaRequired": true,
"secrets": {"elastic-credentials": "elasticsearch-es-elastic-user"},
"namespace": "elastic"
}
}

Storage.CaaS.MinioTenant

MinIO S3-compatible object storage cluster deployed on Kubernetes.

ParameterDescriptionExample / possible valuesRequired
minioVersionMinIO server release tag to deploy.RELEASE.2025-03-12T18-04-18ZNo
serversNumber of MinIO server pods in the tenant.4No
volumesPerServerPersistent volumes attached to each server.4No
volumeSizeCapacity of each persistent volume.100GiNo
storageClassKubernetes storage class backing the volumes.managed-premiumNo
cpuRequestCPU requested per server pod.500mNo
cpuLimitCPU limit per server pod.2No
memoryRequestMemory requested per server pod.1GiNo
memoryLimitMemory limit per server pod.4GiNo
requestAutoCertEnable MinIO's automatic TLS certificate generation.trueNo
namespaceKubernetes namespace the tenant is deployed into.minioYes

Example (fully parameterized):

{
"type": "Storage.CaaS.MinioTenant",
"parameters": {
"minioVersion": "RELEASE.2025-03-12T18-04-18Z",
"servers": 4,
"volumesPerServer": 4,
"volumeSize": "100Gi",
"storageClass": "managed-premium",
"cpuRequest": "500m",
"cpuLimit": "2",
"memoryRequest": "1Gi",
"memoryLimit": "4Gi",
"requestAutoCert": true,
"namespace": "minio"
}
}

Storage.PaaS.CosmosDbAccount

Azure Cosmos DB account providing multi-model database service.

ParameterDescriptionExample / possible valuesRequired
maxTotalThroughputCap on total account throughput (-1 for unlimited).-1No
publicNetworkAccessPublic network access state.Disabled, EnabledNo
backupPolicyBackup mode and retention configuration.{"type": "Periodic", "periodicModeProperties": {"backupIntervalInMinutes": 240, "backupRetentionIntervalInHours": 8}}No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbAccount",
"parameters": {
"maxTotalThroughput": -1,
"publicNetworkAccess": "Disabled",
"backupPolicy": {"type": "Periodic", "periodicModeProperties": {"backupIntervalInMinutes": 240, "backupRetentionIntervalInHours": 8}}
}
}

Storage.PaaS.CosmosDbCassandra

Cassandra API database in Azure Cosmos DB.

ParameterDescriptionExample / possible valuesRequired
cassandraVersionCassandra protocol version.3.11No
useCassandraAuthenticationEnable Cassandra native authentication.trueNo
isDeallocatedWhether the cluster is deallocated (stopped).falseNo
delegatedManagementSubnetIdSubnet ID delegated to the managed instance./subscriptions/.../subnets/cassandra-subnetNo
isCassandraAuditLoggingEnabledEnable audit logging.trueNo
hoursBetweenBackupsInterval between automatic backups.24No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbCassandra",
"parameters": {
"cassandraVersion": "3.11",
"useCassandraAuthentication": true,
"isDeallocated": false,
"delegatedManagementSubnetId": "/subscriptions/00000000-0000-0000-0000-000000000000/subnets/cassandra-subnet",
"isCassandraAuditLoggingEnabled": true,
"hoursBetweenBackups": 24
}
}

Storage.PaaS.CosmosDbGremlinDatabase

Gremlin graph database in Azure Cosmos DB.

ParameterDescriptionExample / possible valuesRequired
throughputProvisioned throughput in RU/s (-1 for autoscale).-1No
maxThroughputMaximum autoscale throughput in RU/s.2000No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbGremlinDatabase",
"parameters": {
"throughput": -1,
"maxThroughput": 2000
}
}

Storage.PaaS.CosmosDbMongoDatabase

MongoDB API database in Azure Cosmos DB.

ParameterDescriptionExample / possible valuesRequired
throughputProvisioned throughput in RU/s (-1 for autoscale).-1No
maxThroughputMaximum autoscale throughput in RU/s.2000No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbMongoDatabase",
"parameters": {
"throughput": -1,
"maxThroughput": 2000
}
}

Storage.PaaS.CosmosDbPostgreSqlDatabase

PostgreSQL database in Azure Cosmos DB.

ParameterDescriptionExample / possible valuesRequired
azureRegionAzure region for the database.westeuropeNo
storageAutoGrowAutomatically grow storage as needed.Enabled, DisabledNo
highAvailabilityModeHigh availability mode.Disabled, ZoneRedundantNo
replicationRoleServer replication role.Primary, ReplicaNo
versionPostgreSQL major version.18No
isPrivateDeploy with private networking.trueNo
firewallRulesAllowed firewall IP ranges.[{"name": "office", "startIpAddress": "203.0.113.0", "endIpAddress": "203.0.113.255"}]No
rootUserAdministrator username.fractalNo
skuNameCompute SKU.Standard_D4ds_v5No
storageGbStorage size in GB.128No
coordinatorStorageGbCoordinator node storage in GB.128No
workerStorageGbWorker node storage in GB.128No
backupRetentionDaysBackup retention in days.10No
coordinatorCoresCoordinator node vCores.2No
workersCoresWorker node vCores.4No
nodeCountNumber of worker nodes (0 = single node).0No
coordinatorServerEditionCoordinator compute tier.GeneralPurposeNo
nodeServerEditionWorker compute tier.MemoryOptimizedNo
subnetAddressCidrDelegated subnet CIDR.10.1.1.0/27No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbPostgreSqlDatabase",
"parameters": {
"azureRegion": "westeurope",
"storageAutoGrow": "Enabled",
"highAvailabilityMode": "Disabled",
"replicationRole": "Primary",
"version": "18",
"isPrivate": true,
"firewallRules": [{"name": "office", "startIpAddress": "203.0.113.0", "endIpAddress": "203.0.113.255"}],
"rootUser": "fractal",
"skuName": "Standard_D4ds_v5",
"storageGb": 128,
"coordinatorStorageGb": 128,
"workerStorageGb": 128,
"backupRetentionDays": 10,
"coordinatorCores": 2,
"workersCores": 4,
"nodeCount": 0,
"coordinatorServerEdition": "GeneralPurpose",
"nodeServerEdition": "MemoryOptimized",
"subnetAddressCidr": "10.1.1.0/27"
}
}

Storage.PaaS.CosmosDbPostgresSqlCluster

PostgreSQL cluster in Azure Cosmos DB with distributed compute.

ParameterDescriptionExample / possible valuesRequired
azureRegionAzure region for the cluster.westeuropeNo
storageAutoGrowAutomatically grow storage as needed.Enabled, DisabledNo
highAvailabilityModeHigh availability mode.Disabled, ZoneRedundantNo
replicationRoleServer replication role.Primary, ReplicaNo
versionPostgreSQL major version.18No
isPrivateDeploy with private networking.trueNo
firewallRulesAllowed firewall IP ranges.[{"name": "office", "startIpAddress": "203.0.113.0", "endIpAddress": "203.0.113.255"}]No
rootUserAdministrator username.fractalNo
skuNameCompute SKU.Standard_D4ds_v5No
storageGbStorage size in GB.128No
coordinatorStorageGbCoordinator node storage in GB.128No
workerStorageGbWorker node storage in GB.128No
backupRetentionDaysBackup retention in days.10No
coordinatorCoresCoordinator node vCores.2No
workersCoresWorker node vCores.4No
nodeCountNumber of worker nodes (0 = single node).0No
coordinatorServerEditionCoordinator compute tier.GeneralPurposeNo
nodeServerEditionWorker compute tier.MemoryOptimizedNo
subnetAddressCidrDelegated subnet CIDR.10.1.1.0/27No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbPostgresSqlCluster",
"parameters": {
"azureRegion": "westeurope",
"storageAutoGrow": "Enabled",
"highAvailabilityMode": "Disabled",
"replicationRole": "Primary",
"version": "18",
"isPrivate": true,
"firewallRules": [{"name": "office", "startIpAddress": "203.0.113.0", "endIpAddress": "203.0.113.255"}],
"rootUser": "fractal",
"skuName": "Standard_D4ds_v5",
"storageGb": 128,
"coordinatorStorageGb": 128,
"workerStorageGb": 128,
"backupRetentionDays": 10,
"coordinatorCores": 2,
"workersCores": 4,
"nodeCount": 0,
"coordinatorServerEdition": "GeneralPurpose",
"nodeServerEdition": "MemoryOptimized",
"subnetAddressCidr": "10.1.1.0/27"
}
}

Storage.PaaS.CosmosDbSqlDatabase

SQL API database in Azure Cosmos DB.

ParameterDescriptionExample / possible valuesRequired
throughputProvisioned throughput in RU/s (-1 for autoscale).-1No
maxThroughputMaximum autoscale throughput in RU/s.2000No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbSqlDatabase",
"parameters": {
"throughput": -1,
"maxThroughput": 2000
}
}

Storage.PaaS.CosmosDbTable

Table API database in Azure Cosmos DB.

ParameterDescriptionExample / possible valuesRequired
throughputProvisioned throughput in RU/s (-1 for autoscale).-1No
maxThroughputMaximum autoscale throughput in RU/s.2000No

Example (fully parameterized):

{
"type": "Storage.PaaS.CosmosDbTable",
"parameters": {
"throughput": -1,
"maxThroughput": 2000
}
}

Storage.PaaS.FileShare

File share within Azure Storage Account for SMB/NFS access.

ParameterDescriptionExample / possible valuesRequired
accessTierPerformance tier of the share.TransactionOptimized, Hot, Cool, PremiumNo
enabledProtocolsFile-sharing protocol.SMB, NFSNo
metadataCustom metadata key/values.{"env": "prod"}No
rootSquashNFS root squash mode.NoRootSquash, RootSquash, AllSquashNo
shareQuotaShare quota in GB.5120No
signedIdentifiersStored access policies.[{"id": "policy1", "accessPolicy": {"permission": "rwd"}}]No

Example (fully parameterized):

{
"type": "Storage.PaaS.FileShare",
"parameters": {
"accessTier": "TransactionOptimized",
"enabledProtocols": "SMB",
"metadata": {"env": "prod"},
"rootSquash": "NoRootSquash",
"shareQuota": 5120,
"signedIdentifiers": [{"id": "policy1", "accessPolicy": {"permission": "rwd"}}]
}
}

Storage.PaaS.FileStorage

Premium file storage in Azure.

ParameterDescriptionExample / possible valuesRequired
accessTierPerformance tier of the share.TransactionOptimized, Hot, Cool, PremiumNo
enabledProtocolsFile-sharing protocol.SMB, NFSNo
metadataCustom metadata key/values.{"env": "prod"}No
rootSquashNFS root squash mode.NoRootSquash, RootSquash, AllSquashNo
shareQuotaShare quota in GB.5120No
signedIdentifiersStored access policies.[{"id": "policy1", "accessPolicy": {"permission": "rwd"}}]No

Example (fully parameterized):

{
"type": "Storage.PaaS.FileStorage",
"parameters": {
"accessTier": "TransactionOptimized",
"enabledProtocols": "SMB",
"metadata": {"env": "prod"},
"rootSquash": "NoRootSquash",
"shareQuota": 5120,
"signedIdentifiers": [{"id": "policy1", "accessPolicy": {"permission": "rwd"}}]
}
}

Storage.PaaS.PostgreSqlDatabase

Database in an Azure PostgreSQL server.

ParameterDescriptionExample / possible valuesRequired
charsetCharacter set of the database.UTF8No
collationCollation of the database.en_US.utf8No

Example (fully parameterized):

{
"type": "Storage.PaaS.PostgreSqlDatabase",
"parameters": {
"charset": "UTF8",
"collation": "en_US.utf8"
}
}

Storage.PaaS.PostgreSqlDbms

Azure Database for PostgreSQL server.

ParameterDescriptionExample / possible valuesRequired
azureRegionAzure region for the server.westeuropeNo
storageAutoGrowAutomatically grow storage as needed.Enabled, DisabledNo
highAvailabilityModeHigh availability mode.Disabled, ZoneRedundantNo
replicationRoleServer replication role.Primary, ReplicaNo
versionPostgreSQL major version.18No
isPrivateDeploy with private networking.trueNo
firewallRulesAllowed firewall IP ranges.[{"name": "office", "startIpAddress": "203.0.113.0", "endIpAddress": "203.0.113.255"}]No
rootUserAdministrator username.fractalNo
skuNameCompute SKU.Standard_D4ds_v5No
storageGbStorage size in GB.128No
coordinatorStorageGbCoordinator node storage in GB.128No
workerStorageGbWorker node storage in GB.128No
backupRetentionDaysBackup retention in days.10No
coordinatorCoresCoordinator node vCores.2No
workersCoresWorker node vCores.4No
nodeCountNumber of worker nodes (0 = single node).0No
coordinatorServerEditionCoordinator compute tier.GeneralPurposeNo
nodeServerEditionWorker compute tier.MemoryOptimizedNo
subnetAddressCidrDelegated subnet CIDR.10.1.1.0/27No

Example (fully parameterized):

{
"type": "Storage.PaaS.PostgreSqlDbms",
"parameters": {
"azureRegion": "westeurope",
"storageAutoGrow": "Enabled",
"highAvailabilityMode": "Disabled",
"replicationRole": "Primary",
"version": "18",
"isPrivate": true,
"firewallRules": [{"name": "office", "startIpAddress": "203.0.113.0", "endIpAddress": "203.0.113.255"}],
"rootUser": "fractal",
"skuName": "Standard_D4ds_v5",
"storageGb": 128,
"coordinatorStorageGb": 128,
"workerStorageGb": 128,
"backupRetentionDays": 10,
"coordinatorCores": 2,
"workersCores": 4,
"nodeCount": 0,
"coordinatorServerEdition": "GeneralPurpose",
"nodeServerEdition": "MemoryOptimized",
"subnetAddressCidr": "10.1.1.0/27"
}
}

Storage.PaaS.StorageAccount

Azure Storage Account for blobs, files, queues, and tables.

ParameterDescriptionExample / possible valuesRequired
kindStorage account kind.StorageV2, BlobStorage, FileStorageNo
azureRegionAzure region the account is created in.westeuropeNo
skuReplication/performance SKU.Standard_LRS, Standard_GRS, Premium_LRSNo
extendedLocationEdge zone / extended location placement.{"name": "losangeles", "type": "EdgeZone"}No
identityManaged identity assigned to the account.{"type": "SystemAssigned"}No
accessTierDefault blob access tier.Hot, CoolNo
allowBlobPublicAccessAllow anonymous public access to blobs.falseNo
allowCrossTenantReplicationAllow object replication across tenants.falseNo
allowSharedKeyAccessAllow access via storage account keys.trueNo
allowedCopyScopeRestrict copy operations scope.AAD, PrivateLinkNo
azureFilesIdentityBasedAuthenticationIdentity-based auth settings for Azure Files.{"directoryServiceOptions": "AADDS"}No
customDomainCustom domain assigned to the account.{"name": "storage.example.com"}No
defaultToOAuthAuthenticationDefault to Azure AD auth in the portal.falseNo
dnsEndpointTypeDNS endpoint type.Standard, AzureDnsZoneNo
encryptionEncryption configuration.{"keySource": "Microsoft.Storage"}No
immutableStorageWithVersioningAccount-level immutability with versioning.{"enabled": true}No
isHnsEnabledEnable hierarchical namespace (Data Lake Gen2).trueNo
isLocalUserEnabledEnable local users for SFTP/NFS.trueNo
isNfsV3EnabledEnable NFS v3 protocol.trueNo
isSftpEnabledEnable SFTP access.trueNo
keyPolicyAccount key expiration policy.{"keyExpirationPeriodInDays": 90}No
largeFileSharesStateEnable large file shares.Enabled, DisabledNo
minimumTlsVersionMinimum TLS version accepted.TLS1_2No
networkRuleSetNetwork access rules.{"defaultAction": "Deny"}No
publicNetworkAccessPublic network access state.Enabled, DisabledNo
routingPreferenceNetwork routing preference.{"routingChoice": "MicrosoftRouting"}No
sasPolicySAS token expiration policy.{"sasExpirationPeriod": "1.00:00:00"}No
supportsHttpsTrafficOnlyRequire HTTPS for all traffic.trueNo
fileServiceFile service properties.{"shareDeleteRetentionDays": 7}No
backupBackup configuration.{"enabled": true, "retentionDays": 30}No

Example (fully parameterized):

{
"type": "Storage.PaaS.StorageAccount",
"parameters": {
"kind": "StorageV2",
"azureRegion": "westeurope",
"sku": "Standard_LRS",
"extendedLocation": {"name": "losangeles", "type": "EdgeZone"},
"identity": {"type": "SystemAssigned"},
"accessTier": "Hot",
"allowBlobPublicAccess": false,
"allowCrossTenantReplication": false,
"allowSharedKeyAccess": true,
"allowedCopyScope": "AAD",
"azureFilesIdentityBasedAuthentication": {"directoryServiceOptions": "AADDS"},
"customDomain": {"name": "storage.example.com"},
"defaultToOAuthAuthentication": false,
"dnsEndpointType": "Standard",
"encryption": {"keySource": "Microsoft.Storage"},
"immutableStorageWithVersioning": {"enabled": true},
"isHnsEnabled": true,
"isLocalUserEnabled": true,
"isNfsV3Enabled": true,
"isSftpEnabled": true,
"keyPolicy": {"keyExpirationPeriodInDays": 90},
"largeFileSharesState": "Enabled",
"minimumTlsVersion": "TLS1_2",
"networkRuleSet": {"defaultAction": "Deny"},
"publicNetworkAccess": "Enabled",
"routingPreference": {"routingChoice": "MicrosoftRouting"},
"sasPolicy": {"sasExpirationPeriod": "1.00:00:00"},
"supportsHttpsTrafficOnly": true,
"fileService": {"shareDeleteRetentionDays": 7},
"backup": {"enabled": true, "retentionDays": 30}
}
}

Storage.PaaS.StorageBlobContainer

Blob container within Azure Storage Account.

ParameterDescriptionExample / possible valuesRequired
defaultEncryptionScopeDefault encryption scope for blobs.$account-encryption-keyNo
denyEncryptionScopeOverridePrevent overriding the default encryption scope.falseNo
enableNfsV3AllSquashEnable NFS v3 all-squash mapping.trueNo
enableNfsV3RootSquashEnable NFS v3 root-squash mapping.trueNo
immutableStorageWithVersioningContainer-level immutability with versioning.{"enabled": true}No
metadataCustom metadata key/values.{"env": "prod"}No
publicAccessAnonymous public access level.None, Blob, ContainerNo

Example (fully parameterized):

{
"type": "Storage.PaaS.StorageBlobContainer",
"parameters": {
"defaultEncryptionScope": "$account-encryption-key",
"denyEncryptionScopeOverride": false,
"enableNfsV3AllSquash": true,
"enableNfsV3RootSquash": true,
"immutableStorageWithVersioning": {"enabled": true},
"metadata": {"env": "prod"},
"publicAccess": "None"
}
}

Storage.SaaS.Unmanaged

External storage service with custom configuration supplied via secret.

ParameterDescriptionExample / possible valuesRequired
secretNameSecret store name holding the external service configuration.external-storage-secretNo
secretValueConnection details / credentials for the external service.https://storage.example.com;key=abc123Yes

Example (fully parameterized):

{
"type": "Storage.SaaS.Unmanaged",
"parameters": {
"secretName": "external-storage-secret",
"secretValue": "https://storage.example.com;key=abc123"
}
}