Migrating from Azure to Quake AI
Coming from another cloud?
▸Azure·Virtual Machines, Blob Storage
Virtual Machines
- Uses Azure Resource Manager (ARM) REST API at /providers/Microsoft.Compute/virtualMachines instead of OpenStack Nova API at /v2.1/servers.
- Tightly integrated with Azure services like Azure Active Directory for authentication, unlike OpenStack's Keystone.
- VM creation requires specifying size from predefined series with hardware-specific features (e.g., AMD/Intel/ARM), not custom flavor configs.
- Billed per second with complex pricing tiers based on series/reservation options, vs OpenStack's typically hourly or usage-based.
Migrating from Azure to Quake AI
This guide walks you through moving workloads from Microsoft Azure to Quake AI, service by service. Object storage has a dedicated how-to guide. Practical notes below cover compute, networking, and IaC. Managed services (Azure SQL, Azure Functions, App Service) have no direct equivalent and require self-managed alternatives.
If you have not reviewed the concept differences, start with Coming from Azure for the full mapping table.
Before you migrate#
- Review the concept translation guide for concept-by-concept mapping
- Inventory your Azure resources: Virtual Machines, Storage Accounts, VNets, NSGs, AKS clusters, and any managed services
- Identify Azure SQL, Azure Functions, App Service, and Service Bus dependencies that need self-managed alternatives
Migration phases#
1. Evaluate and plan#
Inventory your Azure resources: VMs, Blob containers, VNets, NSGs, ARM templates. Identify managed services with no direct Quake AI equivalent (Azure SQL, Azure Functions, App Service) and plan self-managed replacements.
2. Account setup#
Create your Quake AI project, generate application credentials, and install the OpenStack CLI.
- Quickstart
- Generate application credentials
- Access & Credentials for the OpenStack CLI
3. Object storage (Blob storage → Swift)#
Object storage has a well-supported migration path from Azure: Quake AI's Swift endpoint is S3-compatible, and rclone handles the transfer from Azure Blob Storage natively.
What to watch for: Objects in Azure's Archive tier need rehydration before you can copy them, which can take up to 15 hours and incurs a per-GB rehydration fee. Plan for this in your migration timeline. Azure lifecycle policies, RBAC, and ABAC do not transfer.
For the full cutover procedure, see Migrate from Azure Blob Storage.
4. Infrastructure as code (ARM and Bicep → OpenTofu)#
Azure uses ARM templates (JSON) or Bicep for declarative infrastructure. Rewrite resources using the openstack provider. ARM and Bicep do not have an automatic conversion path to OpenTofu.
Key resource mappings:
| Azure (Terraform) | Quake AI (OpenTofu) |
|---|---|
azurerm_virtual_machine / azurerm_linux_virtual_machine | openstack_compute_instance_v2 |
azurerm_storage_account + azurerm_storage_container | openstack_objectstorage_container_v1 |
azurerm_network_security_group | openstack_networking_secgroup_v2 |
azurerm_virtual_network / azurerm_subnet | openstack_networking_network_v2 / openstack_networking_subnet_v2 |
azurerm_public_ip | openstack_networking_floatingip_v2 |
azurerm_lb | Edge reverse proxy, WAF, or API gateway on Nova with a Neutron floating IP |
Get started with Infrastructure as Code with OpenTofu.
5. Compute (Virtual Machines → Nova)#
Azure provides VHD download from managed disks (via az disk grant-access and SAS URLs), but cross-platform image compatibility (drivers, cloud-init configuration, kernel choices) is often imperfect. The practical migration approach is to provision new instances and migrate application data:
Containerized applications: Migrate container images and deploy on Nova instances. For AKS workloads, self-managed Kubernetes on Nova (via RKE2 or k3s) is the recommended path; see Migrate from AKS to Kubernetes on Quake AI for the full guide.
Non-containerized applications: Provision a new Nova instance with the same base image, install your application stack, and rsync data from the Azure VM. Use cloud-init or OpenTofu to make provisioning repeatable.
AKS to self-managed K8s: Export your Kubernetes manifests, Helm charts, and configs. Provision self-managed K8s on Nova instances and apply them. Replace AKS-specific integrations (Entra ID for pod identity, Azure CNI, Azure Disk CSI, Azure Key Vault CSI) with open-source equivalents. See the full AKS migration guide for details.
See Create an instance for the full workflow. For the full guide, see Migrate from Azure VMs to Quake AI Compute.
6. Networking (VNet → Neutron)#
Re-create your VNet as a network, subnet, and router in Neutron. Basic outbound access does not require a VNet gateway or NAT gateway resource.
NSG → Security groups: Azure NSGs support allow and deny rules with priority ordering; Neutron security groups are allow-only and additive, bound per port. Re-map each allow rule; if you relied on deny rules or priority ordering, rethink the logic for the additive model.
Public IP → Floating IP: Same concept. Allocate from the external pool and associate with your instance's port.
Key how-to guides:
For topology diagrams, the dual NSG merge procedure, and public-address migration, see Migrate from Azure VNet to Quake AI. Translate Application Gateway routes and backends into an edge reverse proxy or API gateway.
7. Validation and cutover#
Before decommissioning Azure resources:
- Verify that applications respond on Quake AI instances with the expected behavior
- Confirm object storage data integrity between Blob Storage and Swift
- Update DNS records to point to Quake AI floating IPs; use low TTLs during the transition
- Validate security group rules cover the same traffic patterns as your Azure NSG rules
- Confirm monitoring and alerting are in place (self-managed Prometheus, Grafana, or equivalent)
Service mapping reference#
The table below shows how Azure services map to Quake AI equivalents, with confidence ratings and documented divergences. The <ProviderMappings> component reads from the platform knowledge graph.
Compute· 31 mappings
AKS Cluster
→ Rumble: Kubernetes
high4 diffs›
AKS Cluster
→ Rumble: Kubernetes
- •Azure automatically provisions and manages the control plane at no additional cost (Free tier) or fixed fee (Standard tier with SLA), offloading health monitoring and upgrades; on Quake AI you provision a cluster through Magnum (openstack coe cluster create) or self-managed Kubernetes on Nova instances (OpenTofu plus kubeadm, k3s, or RKE2), and you operate the cluster after creation.
- •No OpenStack integration; uses Azure Resource Manager for cluster lifecycle.
- •Pre-configured with Azure-specific defaults and add-ons like application routing.
- •Managed via Azure Virtual Machine Scale Sets (VMSS) with auto-scaling and upgrades; Quake AI uses Nova instances provisioned via OpenTofu with user-managed scaling and upgrades.
AKS Networking
→ Rumble: Networking
high3 diffs›
AKS Networking
→ Rumble: Networking
- •Azure CNI or kubenet, integrates Azure Load Balancer/Application Gateway; Quake AI Kubernetes clusters use Neutron private networks and routers with CNI plugins (Flannel, Calico, Cilium).
- •Bring-your-own CNI supported; Quake AI tenant-isolated Neutron.
- •Azure-specific: Application routing add-on (nginx), no native Neutron.
Availability sets
→ Rumble: Server groups
high4 diffs›
Availability sets
→ Rumble: Server groups
- •Uses fault/update domains (max 3/20) for HA, fixed at creation, vs flexible OpenStack server group policies (affinity/anti-affinity).
- •ARM resource (Microsoft.Compute/availabilitySets), VMs assigned at create, no dynamic move.
- •No extra cost, but requires 2+ VMs for SLA; prefers zones/scale sets.
- •Lower latency between VMs in set vs zones, hardware-specific isolation.
Azure Billing
→ Rumble: Billing
high4 diffs›
Azure Billing
→ Rumble: Billing
- •Consumption-based metered billing via Microsoft Commerce pipeline with rated usage, monthly invoices, discounts/reservations; OpenStack has no built-in billing, relies on add-ons like CloudKitty for rating/chargeback.
- •Scopes include subscriptions/RGs for cost analysis, anomaly detection, budgets; OpenStack usage collected via Ceilometer, rated externally.
- •Enterprise Agreements/MCA with complex scopes (billing profiles); OpenStack operator-defined.
- •Cost Management + Billing portal for payments/invoices; OpenStack requires custom integration.
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
high4 diffs›
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
- •Azure requires choosing between generalized (sysprep'd, removes machine identity, destroys the source VM's bootability) and specialized (exact clone, source VM survives). OpenStack Nova createImage is always non-destructive — the server continues running and the image captures the current disk state.
- •Capturing a generalized Azure image requires running waagent -deprovision inside the VM, then deallocating and marking as generalized (az vm generalize) before capture — a multi-step destructive process. OpenStack createImage (POST /v2.1/servers/{id}/action {"createImage": {...}}) requires no VM shutdown.
- •Azure stores instance images in Azure Compute Gallery with versioning and multi-region replication support. Glance stores images with no built-in versioning (images are replaced or new images created).
- •Azure ARM API for capture: POST /providers/Microsoft.Compute/virtualMachines/{vm}/capture (legacy) or via Compute Gallery image versions. Nova API: POST /v2.1/servers/{id}/action.
Azure Compute Gallery image definitions and versions
→ Rumble: Images
high4 diffs›
Azure Compute Gallery image definitions and versions
→ Rumble: Images
- •Organized in galleries with image definitions and versioned images (Microsoft.Compute/galleries/images/versions), more structured than flat Glance images.
- •Supports global replication to regions with replicas (up to 100), ZRS storage, unlike OpenStack's store-only model.
- •Sharing via RBAC, community galleries, or direct share; requires gallery setup vs simple OpenStack image sharing.
- •New features like Trusted Launch only in Gallery, legacy managed images deprecated.
Azure Load Balancer
→ Rumble: Load balancer
high4 diffs›
Azure Load Balancer
→ Rumble: Load balancer
- •Pure L4 (TCP/UDP) pass-through; no L7 features (use App Gateway) ().
- •SKUs: Standard w/ zones/HA, health probes, outbound SNAT rules; Basic free but retiring 2025.
- •Azure provides a regional managed service integrated with VNets. Quake AI workloads use a self-managed reverse proxy or Kubernetes LoadBalancer Service.
- •API via ARM; frontend configs w/ multiple IPs/ports.
Azure Managed Disks
→ Rumble: Volumes
high3 diffs›
Azure Managed Disks
→ Rumble: Volumes
- •Azure Managed Disks are fully managed with automatic redundancy (3 replicas, 99.999% SLA); Cinder durability depends on backend.
- •Predefined disk types (Ultra Disk, Premium SSD v2, Premium SSD, Standard SSD, Standard HDD) with fixed performance tiers; Cinder uses volume types with configurable QoS.
- •Disks billed on provisioned size regardless of use; Cinder billing typically on provisioned size too but varies by provider.
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
high4 diffs›
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
- •Azure bills Linux VMs per second; pricing is not included in the VM size API and requires the Azure Retail Prices API (GET https://prices.azure.com/api/retail/prices) or the Pricing Calculator.
- •Azure Hybrid Benefit allows using on-premises Windows Server and SQL Server licenses to reduce Azure VM costs; no equivalent in OpenStack.
- •Azure pricing includes Basic, Standard, and Premium tiers for many services (load balancers, public IPs) with different SLAs per tier. Quake AI uses a flat pricing model without service tiers.
- •Azure reserved instances (1-year or 3-year commitments) offer up to 72% discount vs. on-demand. Quake AI does not currently offer reserved capacity pricing.
Azure RBAC / ABAC / SAS
→ Rumble: Access control
high3 diffs›
Azure RBAC / ABAC / SAS
→ Rumble: Access control
- •Azure uses RBAC/ABAC with Entra ID (AAD), SAS, shared keys; Quake AI/OpenStack Swift S3 uses Keystone/S3 token auth mapped to Swift ACLs, bucket policies via s3api middleware.
- •Azure granular roles/conditions at account/container/blob; Swift ACLs are read/write/ACL granularities per account/container.
- •Azure recommends Entra over keys; Swift s3api translates S3 auth to Swift accounts.
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
high4 diffs›
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
- •Authoring format differs: ARM templates are JSON documents for Azure Resource Manager deployments, whereas Quake AI offers Heat (legacy, HOT/YAML format) and recommends OpenTofu (HCL) for new infrastructure automation.
- •Deployment target/scope differs: ARM templates can deploy at multiple scopes (resource group, subscription, management group, tenant) via Azure Resource Manager's management layer, while Heat orchestrates within a single OpenStack project/tenant. OpenTofu can target multiple projects via provider configuration.
- •Change-preview behavior differs: ARM supports a built-in “what-if” style preview of changes via Resource Manager deployments, while OpenTofu provides `tofu plan` for change previews. Heat relies on stack update events (legacy workflow).
- •Resource coverage lifecycle differs: ARM templates support Azure resource types exposed by Azure resource providers; OpenTofu covers OpenStack resource types via the OpenStack provider, and Heat (legacy) supports a narrower set via built-in resource plugins.
Azure Subscriptions
→ Rumble: Projects
high4 diffs›
Azure Subscriptions
→ Rumble: Projects
- •Resource Groups store metadata in a specific region and support resources from multiple regions; OpenStack lacks formal grouping beyond projects, resources directly scoped to projects.
- •Built-in features like ARM locks (Read-only/Delete), integrated tags for cost allocation, and deployment history views; OpenStack uses project quotas and locks via extensions, no native group-level deployments.
- •Lifecycle management: Easy group delete/update via ARM templates; OpenStack deletes resources individually or via OpenTofu destroy/Heat stacks scoped to projects.
- •Portal views aggregate metrics/deployments across group; OpenStack Horizon shows per-project.
Blob lifecycle management
→ Rumble: S3
high3 diffs›
Blob lifecycle management
→ Rumble: S3
- •Azure supports automated tiering (hot/cool/cold/archive) and expiration rules based on age, access time; Quake AI Swift S3 API lacks native lifecycle management per official OpenStack docs and no Quake AI-specific extension found.
- •Azure policies apply account-wide or filtered by prefix/tags; Swift requires external cron/object-expirer daemon for deletes, no built-in tiering.
- •Azure charges for tiering API calls; Swift has no equivalent billing as feature missing.
Blob versioning
→ Rumble: Versioning
medium3 diffs›
Blob versioning
→ Rumble: Versioning
- •Both support versioning via S3 API in Quake AI and Blob REST API in Azure, but Azure automatic on write/delete for supported accounts; Swift native uses container headers (X-Versions-Location) requiring archive container, two modes differing on DELETE behavior.
- •Azure versions immutable, one current version; Swift POST metadata doesn't version, DELETE promotes or moves to history based on mode.
- •Azure integrates with soft delete/lifecycle; Swift S3 emulation may differ in delete markers/version listing behaviors from pure S3.
Copy Managed Disk
→ Rumble: Clones
high3 diffs›
Copy Managed Disk
→ Rumble: Clones
- •Azure cloning via 'az disk create --source' from disk ID or snapshot, supports cross-subscription/region with grants; Cinder uses 'cinder create --source-volid' or from snapshot, backend-local unless multi-backend.
- •No direct thin-clone in Azure (full copy via snapshot); Cinder supports thin cloning depending on backend (e.g., Ceph clone).
- •Azure copy requires same region for direct source ID use, cross-region via snapshot export/import; Cinder cloning typically same backend.
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
high4 diffs›
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
- •Azure's organization model is a four-level hierarchy: Tenant (Entra ID) → Management Groups → Subscriptions → Resource Groups. OpenStack uses a two-level model: Domain → Project. Quake AI exposes Projects within an Organization.
- •Azure Management Groups support up to 10,000 groups with 6 levels of depth; policy and RBAC assigned at a management group cascade to all child subscriptions. OpenStack has no equivalent cascading policy inheritance between projects.
- •Azure subscriptions are both billing containers and resource containers; each has its own cost center and invoice. OpenStack projects are resource containers only; billing is aggregated at the account level.
- •Azure resources must be placed in both a Subscription and a Resource Group; no resource exists outside a Resource Group. OpenStack resources belong to a project with no resource group concept.
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
high4 diffs›
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
- •Proprietary Microsoft identity platform with OAuth2/OIDC, MSAL libraries, Microsoft Graph API integration; OpenStack Keystone provides OpenStack-specific token auth with pluggable backends (LDAP/SQL).
- •Entra ID supports external identities (B2B/B2C), social logins (Google/Facebook); Keystone focuses on domain/project/role auth, federation via SAML/OIDC possible but secondary.
- •Integrated with Azure subscriptions (one tenant per sub); Keystone is deployment-wide, not subscription-scoped.
- •Advanced features like PIM, app provisioning; OpenStack roles are simpler, assigned per project.
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
high4 diffs›
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
- •Azure Blob Storage has no native S3-compatible endpoint; S3 compatibility requires third-party gateways (Flexify.IO, S3Proxy). Applications using AWS SDK pointing at Quake AI's S3 endpoint require zero code changes; migrating to Azure Blob requires SDK replacement (azure-storage-blob).
- •Azure Blob uses a different REST API with Azure-specific URL paths and x-ms-* headers; Quake AI's S3 endpoint uses standard AWS SigV4 authentication with EC2 credentials issued by Keystone.
- •Azure Blob's hierarchy is Storage Account → Container → Blob; Quake AI's Swift S3 layer maps S3 Buckets to Swift containers and Keys to objects, preserving the S3 mental model.
- •Azure auth uses Shared Access Signatures (SAS) or Azure AD RBAC; Quake AI's S3 endpoint uses AWS SigV4 with project-scoped access key/secret pairs (EC2 credentials in Keystone).
NAT Gateway
→ Rumble: NAT
high4 diffs›
NAT Gateway
→ Rumble: NAT
- •Managed subnet-level service w/ dynamic SNAT ports (no exhaustion), up to 16 static Public IPs ().
- •Highest precedence over LB/instance Public IP; zonal/zone-redundant SKUs; billed.
- •No router namespace; scales to 100Gbps; TCP/UDP only vs OpenStack L3 agent/OVN router SNAT.
- •Subnet attachment (one per subnet); overrides default Internet route.
Network Interfaces
→ Rumble: Ports
›
Network Interfaces
→ Rumble: Ports
No specific divergences documented yet.
View Azure docs →Network Security Groups (NSGs)
→ Rumble: Security groups
high4 diffs›
Network Security Groups (NSGs)
→ Rumble: Security groups
- •NSGs can associate to both subnets and NICs with specific processing order (inbound: subnet then NIC; outbound: NIC then subnet) ().
- •Stateful with priority-based rules (100-4096); augmented rules allow multiple IPs/ports per rule (Resource Manager only).
- •Default rules allow VNet/LB/Internet out; service tags like VirtualNetwork.
- •No direct port-level only like OpenStack; subnet-level affects all instances.
Public IP addresses
→ Rumble: Floating IPs
high4 diffs›
Public IP addresses
→ Rumble: Floating IPs
- •Public IP is a dedicated ARM resource with SKUs (Basic/Standard); IPv4 billed, IPv6 free ().
- •Static/dynamic allocation (Standard static only); zone-redundant option (Standard v2).
- •Associated directly to NIC/LB/gateway vs via router DNAT in OpenStack.
- •Dynamic outbound uses ephemeral IPs even without assoc; no pool allocation like Neutron external nets.
Snapshots
→ Rumble: Snapshots
high4 diffs›
Snapshots
→ Rumble: Snapshots
- •Snapshots of managed disks (Microsoft.Compute/snapshots), billed on used size, separate from volumes unlike Cinder volume snapshots integration.
- •Supports incremental snapshots for efficiency, ZRS storage in zones.
- •API /providers/Microsoft.Compute/snapshots vs Nova/Cinder volume snapshot APIs.
- •Primarily for disks, not full instances; instance snapshots via images instead.
SSH public keys
→ Rumble: Key pairs
high4 diffs›
SSH public keys
→ Rumble: Key pairs
- •Managed as ARM resources (Microsoft.Compute/sshPublicKeys), reusable across VMs, vs OpenStack's keypairs injected only at boot.
- •API /providers/Microsoft.Compute/sshPublicKeys, supports ED25519/RSA, no private key storage.
- •Keys provided during VM create or via portal/CLI, not listed/injected separately post-boot like OpenStack.
- •No deletion/re-import of injected keys; new VM for changes.
Storage Service Encryption (SSE)
→ Rumble: Encryption
high3 diffs›
Storage Service Encryption (SSE)
→ Rumble: Encryption
- •Both SSE transparent; Azure SSE default with Microsoft-managed keys (256-bit AES), optional CMK in Key Vault/CPK/client-side; Swift encryption middleware (AES-256 CTR) derives keys from root secret, internal not API-exposed.
- •Azure scopes keys to account, container, or blob and integrates Key Vault. Swift can encrypt object data and metadata at the storage layer.
- •Azure client-side explicit in SDKs; Swift recommends client-side for full protection, server-side mitigates disk theft.
Terraform AzureRM provider
→ Rumble: Terraform
high2 diffs›
Terraform AzureRM provider
→ Rumble: Terraform
- •Uses azurerm_virtual_machine/azurerm_linux_virtual_machine; OpenStack uses openstack_compute_instance_v2.
- •AzureRM provider requires subscription_id, tenant_id, client_id, client_secret; OpenStack uses auth_url and application credentials.
Virtual Machines
→ Rumble: Instances
high4 diffs›
Virtual Machines
→ Rumble: Instances
- •Uses Azure Resource Manager (ARM) REST API at /providers/Microsoft.Compute/virtualMachines instead of OpenStack Nova API at /v2.1/servers.
- •Tightly integrated with Azure services like Azure Active Directory for authentication, unlike OpenStack's Keystone.
- •VM creation requires specifying size from predefined series with hardware-specific features (e.g., AMD/Intel/ARM), not custom flavor configs.
- •Billed per second with complex pricing tiers based on series/reservation options, vs OpenStack's typically hourly or usage-based.
Virtual Network (VNet)
→ Rumble: Networks
high4 diffs›
Virtual Network (VNet)
→ Rumble: Networks
- •Azure VNets are strictly regional Layer 3 overlays scoped to one subscription with no L2 VLAN support ().
- •VNets and subnets creation free, but subnets min /29 with Azure reserving 5 IPs per subnet ().
- •Managed via ARM REST APIs/PowerShell/CLI vs Neutron REST API.
- •Isolated per subscription; peering for cross-VNet connectivity vs OpenStack project networks connected via routers.
Virtual Network Gateway
→ Rumble: Routers
›
Virtual Network Gateway
→ Rumble: Routers
No specific divergences documented yet.
View Azure docs →Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
high4 diffs›
Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
- •Azure subnets are child resources of a Virtual Network defined as /providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}; Neutron subnets are top-level resources with their own UUIDs associated to a network via network_id.
- •Azure subnets support service endpoints (for Azure Storage, SQL) and delegations (reserving a subnet for specific Azure services) with no Neutron equivalent.
- •Azure subnet CIDR cannot overlap with other subnets in the same VNet or peered VNets and is immutable after creation; Neutron supports updating allocation pools but not the CIDR block post-creation.
- •Network Security Groups (NSGs) attach at the Azure subnet level (and optionally at NIC level); Neutron security groups attach to ports/interfaces, not to subnets.
VM sizes
→ Rumble: Flavors
high4 diffs›
VM sizes
→ Rumble: Flavors
- •Predefined hardware-optimized series (e.g., D-family general purpose) with complex naming (e.g., Standard_D4as_v5), not user-defined vCPU/RAM like OpenStack flavors.
- •Sizes listed via API /providers/Microsoft.Compute/locations/{location}/vmSizes, region-specific availability.
- •Includes accelerator features (GPU, FPGA) baked into sizes, unavailable in basic OpenStack flavors without extensions.
- •Cannot create custom sizes; selection from catalog, limiting flexibility vs OpenStack flavor creation.
Network· 31 mappings
AKS Cluster
→ Rumble: Kubernetes
high4 diffs›
AKS Cluster
→ Rumble: Kubernetes
- •Azure automatically provisions and manages the control plane at no additional cost (Free tier) or fixed fee (Standard tier with SLA), offloading health monitoring and upgrades; on Quake AI you provision a cluster through Magnum (openstack coe cluster create) or self-managed Kubernetes on Nova instances (OpenTofu plus kubeadm, k3s, or RKE2), and you operate the cluster after creation.
- •No OpenStack integration; uses Azure Resource Manager for cluster lifecycle.
- •Pre-configured with Azure-specific defaults and add-ons like application routing.
- •Managed via Azure Virtual Machine Scale Sets (VMSS) with auto-scaling and upgrades; Quake AI uses Nova instances provisioned via OpenTofu with user-managed scaling and upgrades.
AKS Networking
→ Rumble: Networking
high3 diffs›
AKS Networking
→ Rumble: Networking
- •Azure CNI or kubenet, integrates Azure Load Balancer/Application Gateway; Quake AI Kubernetes clusters use Neutron private networks and routers with CNI plugins (Flannel, Calico, Cilium).
- •Bring-your-own CNI supported; Quake AI tenant-isolated Neutron.
- •Azure-specific: Application routing add-on (nginx), no native Neutron.
Availability sets
→ Rumble: Server groups
high4 diffs›
Availability sets
→ Rumble: Server groups
- •Uses fault/update domains (max 3/20) for HA, fixed at creation, vs flexible OpenStack server group policies (affinity/anti-affinity).
- •ARM resource (Microsoft.Compute/availabilitySets), VMs assigned at create, no dynamic move.
- •No extra cost, but requires 2+ VMs for SLA; prefers zones/scale sets.
- •Lower latency between VMs in set vs zones, hardware-specific isolation.
Azure Billing
→ Rumble: Billing
high4 diffs›
Azure Billing
→ Rumble: Billing
- •Consumption-based metered billing via Microsoft Commerce pipeline with rated usage, monthly invoices, discounts/reservations; OpenStack has no built-in billing, relies on add-ons like CloudKitty for rating/chargeback.
- •Scopes include subscriptions/RGs for cost analysis, anomaly detection, budgets; OpenStack usage collected via Ceilometer, rated externally.
- •Enterprise Agreements/MCA with complex scopes (billing profiles); OpenStack operator-defined.
- •Cost Management + Billing portal for payments/invoices; OpenStack requires custom integration.
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
high4 diffs›
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
- •Azure requires choosing between generalized (sysprep'd, removes machine identity, destroys the source VM's bootability) and specialized (exact clone, source VM survives). OpenStack Nova createImage is always non-destructive — the server continues running and the image captures the current disk state.
- •Capturing a generalized Azure image requires running waagent -deprovision inside the VM, then deallocating and marking as generalized (az vm generalize) before capture — a multi-step destructive process. OpenStack createImage (POST /v2.1/servers/{id}/action {"createImage": {...}}) requires no VM shutdown.
- •Azure stores instance images in Azure Compute Gallery with versioning and multi-region replication support. Glance stores images with no built-in versioning (images are replaced or new images created).
- •Azure ARM API for capture: POST /providers/Microsoft.Compute/virtualMachines/{vm}/capture (legacy) or via Compute Gallery image versions. Nova API: POST /v2.1/servers/{id}/action.
Azure Compute Gallery image definitions and versions
→ Rumble: Images
high4 diffs›
Azure Compute Gallery image definitions and versions
→ Rumble: Images
- •Organized in galleries with image definitions and versioned images (Microsoft.Compute/galleries/images/versions), more structured than flat Glance images.
- •Supports global replication to regions with replicas (up to 100), ZRS storage, unlike OpenStack's store-only model.
- •Sharing via RBAC, community galleries, or direct share; requires gallery setup vs simple OpenStack image sharing.
- •New features like Trusted Launch only in Gallery, legacy managed images deprecated.
Azure Load Balancer
→ Rumble: Load balancer
high4 diffs›
Azure Load Balancer
→ Rumble: Load balancer
- •Pure L4 (TCP/UDP) pass-through; no L7 features (use App Gateway) ().
- •SKUs: Standard w/ zones/HA, health probes, outbound SNAT rules; Basic free but retiring 2025.
- •Azure provides a regional managed service integrated with VNets. Quake AI workloads use a self-managed reverse proxy or Kubernetes LoadBalancer Service.
- •API via ARM; frontend configs w/ multiple IPs/ports.
Azure Managed Disks
→ Rumble: Volumes
high3 diffs›
Azure Managed Disks
→ Rumble: Volumes
- •Azure Managed Disks are fully managed with automatic redundancy (3 replicas, 99.999% SLA); Cinder durability depends on backend.
- •Predefined disk types (Ultra Disk, Premium SSD v2, Premium SSD, Standard SSD, Standard HDD) with fixed performance tiers; Cinder uses volume types with configurable QoS.
- •Disks billed on provisioned size regardless of use; Cinder billing typically on provisioned size too but varies by provider.
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
high4 diffs›
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
- •Azure bills Linux VMs per second; pricing is not included in the VM size API and requires the Azure Retail Prices API (GET https://prices.azure.com/api/retail/prices) or the Pricing Calculator.
- •Azure Hybrid Benefit allows using on-premises Windows Server and SQL Server licenses to reduce Azure VM costs; no equivalent in OpenStack.
- •Azure pricing includes Basic, Standard, and Premium tiers for many services (load balancers, public IPs) with different SLAs per tier. Quake AI uses a flat pricing model without service tiers.
- •Azure reserved instances (1-year or 3-year commitments) offer up to 72% discount vs. on-demand. Quake AI does not currently offer reserved capacity pricing.
Azure RBAC / ABAC / SAS
→ Rumble: Access control
high3 diffs›
Azure RBAC / ABAC / SAS
→ Rumble: Access control
- •Azure uses RBAC/ABAC with Entra ID (AAD), SAS, shared keys; Quake AI/OpenStack Swift S3 uses Keystone/S3 token auth mapped to Swift ACLs, bucket policies via s3api middleware.
- •Azure granular roles/conditions at account/container/blob; Swift ACLs are read/write/ACL granularities per account/container.
- •Azure recommends Entra over keys; Swift s3api translates S3 auth to Swift accounts.
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
high4 diffs›
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
- •Authoring format differs: ARM templates are JSON documents for Azure Resource Manager deployments, whereas Quake AI offers Heat (legacy, HOT/YAML format) and recommends OpenTofu (HCL) for new infrastructure automation.
- •Deployment target/scope differs: ARM templates can deploy at multiple scopes (resource group, subscription, management group, tenant) via Azure Resource Manager's management layer, while Heat orchestrates within a single OpenStack project/tenant. OpenTofu can target multiple projects via provider configuration.
- •Change-preview behavior differs: ARM supports a built-in “what-if” style preview of changes via Resource Manager deployments, while OpenTofu provides `tofu plan` for change previews. Heat relies on stack update events (legacy workflow).
- •Resource coverage lifecycle differs: ARM templates support Azure resource types exposed by Azure resource providers; OpenTofu covers OpenStack resource types via the OpenStack provider, and Heat (legacy) supports a narrower set via built-in resource plugins.
Azure Subscriptions
→ Rumble: Projects
high4 diffs›
Azure Subscriptions
→ Rumble: Projects
- •Resource Groups store metadata in a specific region and support resources from multiple regions; OpenStack lacks formal grouping beyond projects, resources directly scoped to projects.
- •Built-in features like ARM locks (Read-only/Delete), integrated tags for cost allocation, and deployment history views; OpenStack uses project quotas and locks via extensions, no native group-level deployments.
- •Lifecycle management: Easy group delete/update via ARM templates; OpenStack deletes resources individually or via OpenTofu destroy/Heat stacks scoped to projects.
- •Portal views aggregate metrics/deployments across group; OpenStack Horizon shows per-project.
Blob lifecycle management
→ Rumble: S3
high3 diffs›
Blob lifecycle management
→ Rumble: S3
- •Azure supports automated tiering (hot/cool/cold/archive) and expiration rules based on age, access time; Quake AI Swift S3 API lacks native lifecycle management per official OpenStack docs and no Quake AI-specific extension found.
- •Azure policies apply account-wide or filtered by prefix/tags; Swift requires external cron/object-expirer daemon for deletes, no built-in tiering.
- •Azure charges for tiering API calls; Swift has no equivalent billing as feature missing.
Blob versioning
→ Rumble: Versioning
medium3 diffs›
Blob versioning
→ Rumble: Versioning
- •Both support versioning via S3 API in Quake AI and Blob REST API in Azure, but Azure automatic on write/delete for supported accounts; Swift native uses container headers (X-Versions-Location) requiring archive container, two modes differing on DELETE behavior.
- •Azure versions immutable, one current version; Swift POST metadata doesn't version, DELETE promotes or moves to history based on mode.
- •Azure integrates with soft delete/lifecycle; Swift S3 emulation may differ in delete markers/version listing behaviors from pure S3.
Copy Managed Disk
→ Rumble: Clones
high3 diffs›
Copy Managed Disk
→ Rumble: Clones
- •Azure cloning via 'az disk create --source' from disk ID or snapshot, supports cross-subscription/region with grants; Cinder uses 'cinder create --source-volid' or from snapshot, backend-local unless multi-backend.
- •No direct thin-clone in Azure (full copy via snapshot); Cinder supports thin cloning depending on backend (e.g., Ceph clone).
- •Azure copy requires same region for direct source ID use, cross-region via snapshot export/import; Cinder cloning typically same backend.
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
high4 diffs›
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
- •Azure's organization model is a four-level hierarchy: Tenant (Entra ID) → Management Groups → Subscriptions → Resource Groups. OpenStack uses a two-level model: Domain → Project. Quake AI exposes Projects within an Organization.
- •Azure Management Groups support up to 10,000 groups with 6 levels of depth; policy and RBAC assigned at a management group cascade to all child subscriptions. OpenStack has no equivalent cascading policy inheritance between projects.
- •Azure subscriptions are both billing containers and resource containers; each has its own cost center and invoice. OpenStack projects are resource containers only; billing is aggregated at the account level.
- •Azure resources must be placed in both a Subscription and a Resource Group; no resource exists outside a Resource Group. OpenStack resources belong to a project with no resource group concept.
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
high4 diffs›
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
- •Proprietary Microsoft identity platform with OAuth2/OIDC, MSAL libraries, Microsoft Graph API integration; OpenStack Keystone provides OpenStack-specific token auth with pluggable backends (LDAP/SQL).
- •Entra ID supports external identities (B2B/B2C), social logins (Google/Facebook); Keystone focuses on domain/project/role auth, federation via SAML/OIDC possible but secondary.
- •Integrated with Azure subscriptions (one tenant per sub); Keystone is deployment-wide, not subscription-scoped.
- •Advanced features like PIM, app provisioning; OpenStack roles are simpler, assigned per project.
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
high4 diffs›
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
- •Azure Blob Storage has no native S3-compatible endpoint; S3 compatibility requires third-party gateways (Flexify.IO, S3Proxy). Applications using AWS SDK pointing at Quake AI's S3 endpoint require zero code changes; migrating to Azure Blob requires SDK replacement (azure-storage-blob).
- •Azure Blob uses a different REST API with Azure-specific URL paths and x-ms-* headers; Quake AI's S3 endpoint uses standard AWS SigV4 authentication with EC2 credentials issued by Keystone.
- •Azure Blob's hierarchy is Storage Account → Container → Blob; Quake AI's Swift S3 layer maps S3 Buckets to Swift containers and Keys to objects, preserving the S3 mental model.
- •Azure auth uses Shared Access Signatures (SAS) or Azure AD RBAC; Quake AI's S3 endpoint uses AWS SigV4 with project-scoped access key/secret pairs (EC2 credentials in Keystone).
NAT Gateway
→ Rumble: NAT
high4 diffs›
NAT Gateway
→ Rumble: NAT
- •Managed subnet-level service w/ dynamic SNAT ports (no exhaustion), up to 16 static Public IPs ().
- •Highest precedence over LB/instance Public IP; zonal/zone-redundant SKUs; billed.
- •No router namespace; scales to 100Gbps; TCP/UDP only vs OpenStack L3 agent/OVN router SNAT.
- •Subnet attachment (one per subnet); overrides default Internet route.
Network Interfaces
→ Rumble: Ports
›
Network Interfaces
→ Rumble: Ports
No specific divergences documented yet.
View Azure docs →Network Security Groups (NSGs)
→ Rumble: Security groups
high4 diffs›
Network Security Groups (NSGs)
→ Rumble: Security groups
- •NSGs can associate to both subnets and NICs with specific processing order (inbound: subnet then NIC; outbound: NIC then subnet) ().
- •Stateful with priority-based rules (100-4096); augmented rules allow multiple IPs/ports per rule (Resource Manager only).
- •Default rules allow VNet/LB/Internet out; service tags like VirtualNetwork.
- •No direct port-level only like OpenStack; subnet-level affects all instances.
Public IP addresses
→ Rumble: Floating IPs
high4 diffs›
Public IP addresses
→ Rumble: Floating IPs
- •Public IP is a dedicated ARM resource with SKUs (Basic/Standard); IPv4 billed, IPv6 free ().
- •Static/dynamic allocation (Standard static only); zone-redundant option (Standard v2).
- •Associated directly to NIC/LB/gateway vs via router DNAT in OpenStack.
- •Dynamic outbound uses ephemeral IPs even without assoc; no pool allocation like Neutron external nets.
Snapshots
→ Rumble: Snapshots
high4 diffs›
Snapshots
→ Rumble: Snapshots
- •Snapshots of managed disks (Microsoft.Compute/snapshots), billed on used size, separate from volumes unlike Cinder volume snapshots integration.
- •Supports incremental snapshots for efficiency, ZRS storage in zones.
- •API /providers/Microsoft.Compute/snapshots vs Nova/Cinder volume snapshot APIs.
- •Primarily for disks, not full instances; instance snapshots via images instead.
SSH public keys
→ Rumble: Key pairs
high4 diffs›
SSH public keys
→ Rumble: Key pairs
- •Managed as ARM resources (Microsoft.Compute/sshPublicKeys), reusable across VMs, vs OpenStack's keypairs injected only at boot.
- •API /providers/Microsoft.Compute/sshPublicKeys, supports ED25519/RSA, no private key storage.
- •Keys provided during VM create or via portal/CLI, not listed/injected separately post-boot like OpenStack.
- •No deletion/re-import of injected keys; new VM for changes.
Storage Service Encryption (SSE)
→ Rumble: Encryption
high3 diffs›
Storage Service Encryption (SSE)
→ Rumble: Encryption
- •Both SSE transparent; Azure SSE default with Microsoft-managed keys (256-bit AES), optional CMK in Key Vault/CPK/client-side; Swift encryption middleware (AES-256 CTR) derives keys from root secret, internal not API-exposed.
- •Azure scopes keys to account, container, or blob and integrates Key Vault. Swift can encrypt object data and metadata at the storage layer.
- •Azure client-side explicit in SDKs; Swift recommends client-side for full protection, server-side mitigates disk theft.
Terraform AzureRM provider
→ Rumble: Terraform
high2 diffs›
Terraform AzureRM provider
→ Rumble: Terraform
- •Uses azurerm_virtual_machine/azurerm_linux_virtual_machine; OpenStack uses openstack_compute_instance_v2.
- •AzureRM provider requires subscription_id, tenant_id, client_id, client_secret; OpenStack uses auth_url and application credentials.
Virtual Machines
→ Rumble: Instances
high4 diffs›
Virtual Machines
→ Rumble: Instances
- •Uses Azure Resource Manager (ARM) REST API at /providers/Microsoft.Compute/virtualMachines instead of OpenStack Nova API at /v2.1/servers.
- •Tightly integrated with Azure services like Azure Active Directory for authentication, unlike OpenStack's Keystone.
- •VM creation requires specifying size from predefined series with hardware-specific features (e.g., AMD/Intel/ARM), not custom flavor configs.
- •Billed per second with complex pricing tiers based on series/reservation options, vs OpenStack's typically hourly or usage-based.
Virtual Network (VNet)
→ Rumble: Networks
high4 diffs›
Virtual Network (VNet)
→ Rumble: Networks
- •Azure VNets are strictly regional Layer 3 overlays scoped to one subscription with no L2 VLAN support ().
- •VNets and subnets creation free, but subnets min /29 with Azure reserving 5 IPs per subnet ().
- •Managed via ARM REST APIs/PowerShell/CLI vs Neutron REST API.
- •Isolated per subscription; peering for cross-VNet connectivity vs OpenStack project networks connected via routers.
Virtual Network Gateway
→ Rumble: Routers
›
Virtual Network Gateway
→ Rumble: Routers
No specific divergences documented yet.
View Azure docs →Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
high4 diffs›
Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
- •Azure subnets are child resources of a Virtual Network defined as /providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}; Neutron subnets are top-level resources with their own UUIDs associated to a network via network_id.
- •Azure subnets support service endpoints (for Azure Storage, SQL) and delegations (reserving a subnet for specific Azure services) with no Neutron equivalent.
- •Azure subnet CIDR cannot overlap with other subnets in the same VNet or peered VNets and is immutable after creation; Neutron supports updating allocation pools but not the CIDR block post-creation.
- •Network Security Groups (NSGs) attach at the Azure subnet level (and optionally at NIC level); Neutron security groups attach to ports/interfaces, not to subnets.
VM sizes
→ Rumble: Flavors
high4 diffs›
VM sizes
→ Rumble: Flavors
- •Predefined hardware-optimized series (e.g., D-family general purpose) with complex naming (e.g., Standard_D4as_v5), not user-defined vCPU/RAM like OpenStack flavors.
- •Sizes listed via API /providers/Microsoft.Compute/locations/{location}/vmSizes, region-specific availability.
- •Includes accelerator features (GPU, FPGA) baked into sizes, unavailable in basic OpenStack flavors without extensions.
- •Cannot create custom sizes; selection from catalog, limiting flexibility vs OpenStack flavor creation.
Object storage· 31 mappings
AKS Cluster
→ Rumble: Kubernetes
high4 diffs›
AKS Cluster
→ Rumble: Kubernetes
- •Azure automatically provisions and manages the control plane at no additional cost (Free tier) or fixed fee (Standard tier with SLA), offloading health monitoring and upgrades; on Quake AI you provision a cluster through Magnum (openstack coe cluster create) or self-managed Kubernetes on Nova instances (OpenTofu plus kubeadm, k3s, or RKE2), and you operate the cluster after creation.
- •No OpenStack integration; uses Azure Resource Manager for cluster lifecycle.
- •Pre-configured with Azure-specific defaults and add-ons like application routing.
- •Managed via Azure Virtual Machine Scale Sets (VMSS) with auto-scaling and upgrades; Quake AI uses Nova instances provisioned via OpenTofu with user-managed scaling and upgrades.
AKS Networking
→ Rumble: Networking
high3 diffs›
AKS Networking
→ Rumble: Networking
- •Azure CNI or kubenet, integrates Azure Load Balancer/Application Gateway; Quake AI Kubernetes clusters use Neutron private networks and routers with CNI plugins (Flannel, Calico, Cilium).
- •Bring-your-own CNI supported; Quake AI tenant-isolated Neutron.
- •Azure-specific: Application routing add-on (nginx), no native Neutron.
Availability sets
→ Rumble: Server groups
high4 diffs›
Availability sets
→ Rumble: Server groups
- •Uses fault/update domains (max 3/20) for HA, fixed at creation, vs flexible OpenStack server group policies (affinity/anti-affinity).
- •ARM resource (Microsoft.Compute/availabilitySets), VMs assigned at create, no dynamic move.
- •No extra cost, but requires 2+ VMs for SLA; prefers zones/scale sets.
- •Lower latency between VMs in set vs zones, hardware-specific isolation.
Azure Billing
→ Rumble: Billing
high4 diffs›
Azure Billing
→ Rumble: Billing
- •Consumption-based metered billing via Microsoft Commerce pipeline with rated usage, monthly invoices, discounts/reservations; OpenStack has no built-in billing, relies on add-ons like CloudKitty for rating/chargeback.
- •Scopes include subscriptions/RGs for cost analysis, anomaly detection, budgets; OpenStack usage collected via Ceilometer, rated externally.
- •Enterprise Agreements/MCA with complex scopes (billing profiles); OpenStack operator-defined.
- •Cost Management + Billing portal for payments/invoices; OpenStack requires custom integration.
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
high4 diffs›
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
- •Azure requires choosing between generalized (sysprep'd, removes machine identity, destroys the source VM's bootability) and specialized (exact clone, source VM survives). OpenStack Nova createImage is always non-destructive — the server continues running and the image captures the current disk state.
- •Capturing a generalized Azure image requires running waagent -deprovision inside the VM, then deallocating and marking as generalized (az vm generalize) before capture — a multi-step destructive process. OpenStack createImage (POST /v2.1/servers/{id}/action {"createImage": {...}}) requires no VM shutdown.
- •Azure stores instance images in Azure Compute Gallery with versioning and multi-region replication support. Glance stores images with no built-in versioning (images are replaced or new images created).
- •Azure ARM API for capture: POST /providers/Microsoft.Compute/virtualMachines/{vm}/capture (legacy) or via Compute Gallery image versions. Nova API: POST /v2.1/servers/{id}/action.
Azure Compute Gallery image definitions and versions
→ Rumble: Images
high4 diffs›
Azure Compute Gallery image definitions and versions
→ Rumble: Images
- •Organized in galleries with image definitions and versioned images (Microsoft.Compute/galleries/images/versions), more structured than flat Glance images.
- •Supports global replication to regions with replicas (up to 100), ZRS storage, unlike OpenStack's store-only model.
- •Sharing via RBAC, community galleries, or direct share; requires gallery setup vs simple OpenStack image sharing.
- •New features like Trusted Launch only in Gallery, legacy managed images deprecated.
Azure Load Balancer
→ Rumble: Load balancer
high4 diffs›
Azure Load Balancer
→ Rumble: Load balancer
- •Pure L4 (TCP/UDP) pass-through; no L7 features (use App Gateway) ().
- •SKUs: Standard w/ zones/HA, health probes, outbound SNAT rules; Basic free but retiring 2025.
- •Azure provides a regional managed service integrated with VNets. Quake AI workloads use a self-managed reverse proxy or Kubernetes LoadBalancer Service.
- •API via ARM; frontend configs w/ multiple IPs/ports.
Azure Managed Disks
→ Rumble: Volumes
high3 diffs›
Azure Managed Disks
→ Rumble: Volumes
- •Azure Managed Disks are fully managed with automatic redundancy (3 replicas, 99.999% SLA); Cinder durability depends on backend.
- •Predefined disk types (Ultra Disk, Premium SSD v2, Premium SSD, Standard SSD, Standard HDD) with fixed performance tiers; Cinder uses volume types with configurable QoS.
- •Disks billed on provisioned size regardless of use; Cinder billing typically on provisioned size too but varies by provider.
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
high4 diffs›
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
- •Azure bills Linux VMs per second; pricing is not included in the VM size API and requires the Azure Retail Prices API (GET https://prices.azure.com/api/retail/prices) or the Pricing Calculator.
- •Azure Hybrid Benefit allows using on-premises Windows Server and SQL Server licenses to reduce Azure VM costs; no equivalent in OpenStack.
- •Azure pricing includes Basic, Standard, and Premium tiers for many services (load balancers, public IPs) with different SLAs per tier. Quake AI uses a flat pricing model without service tiers.
- •Azure reserved instances (1-year or 3-year commitments) offer up to 72% discount vs. on-demand. Quake AI does not currently offer reserved capacity pricing.
Azure RBAC / ABAC / SAS
→ Rumble: Access control
high3 diffs›
Azure RBAC / ABAC / SAS
→ Rumble: Access control
- •Azure uses RBAC/ABAC with Entra ID (AAD), SAS, shared keys; Quake AI/OpenStack Swift S3 uses Keystone/S3 token auth mapped to Swift ACLs, bucket policies via s3api middleware.
- •Azure granular roles/conditions at account/container/blob; Swift ACLs are read/write/ACL granularities per account/container.
- •Azure recommends Entra over keys; Swift s3api translates S3 auth to Swift accounts.
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
high4 diffs›
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
- •Authoring format differs: ARM templates are JSON documents for Azure Resource Manager deployments, whereas Quake AI offers Heat (legacy, HOT/YAML format) and recommends OpenTofu (HCL) for new infrastructure automation.
- •Deployment target/scope differs: ARM templates can deploy at multiple scopes (resource group, subscription, management group, tenant) via Azure Resource Manager's management layer, while Heat orchestrates within a single OpenStack project/tenant. OpenTofu can target multiple projects via provider configuration.
- •Change-preview behavior differs: ARM supports a built-in “what-if” style preview of changes via Resource Manager deployments, while OpenTofu provides `tofu plan` for change previews. Heat relies on stack update events (legacy workflow).
- •Resource coverage lifecycle differs: ARM templates support Azure resource types exposed by Azure resource providers; OpenTofu covers OpenStack resource types via the OpenStack provider, and Heat (legacy) supports a narrower set via built-in resource plugins.
Azure Subscriptions
→ Rumble: Projects
high4 diffs›
Azure Subscriptions
→ Rumble: Projects
- •Resource Groups store metadata in a specific region and support resources from multiple regions; OpenStack lacks formal grouping beyond projects, resources directly scoped to projects.
- •Built-in features like ARM locks (Read-only/Delete), integrated tags for cost allocation, and deployment history views; OpenStack uses project quotas and locks via extensions, no native group-level deployments.
- •Lifecycle management: Easy group delete/update via ARM templates; OpenStack deletes resources individually or via OpenTofu destroy/Heat stacks scoped to projects.
- •Portal views aggregate metrics/deployments across group; OpenStack Horizon shows per-project.
Blob lifecycle management
→ Rumble: S3
high3 diffs›
Blob lifecycle management
→ Rumble: S3
- •Azure supports automated tiering (hot/cool/cold/archive) and expiration rules based on age, access time; Quake AI Swift S3 API lacks native lifecycle management per official OpenStack docs and no Quake AI-specific extension found.
- •Azure policies apply account-wide or filtered by prefix/tags; Swift requires external cron/object-expirer daemon for deletes, no built-in tiering.
- •Azure charges for tiering API calls; Swift has no equivalent billing as feature missing.
Blob versioning
→ Rumble: Versioning
medium3 diffs›
Blob versioning
→ Rumble: Versioning
- •Both support versioning via S3 API in Quake AI and Blob REST API in Azure, but Azure automatic on write/delete for supported accounts; Swift native uses container headers (X-Versions-Location) requiring archive container, two modes differing on DELETE behavior.
- •Azure versions immutable, one current version; Swift POST metadata doesn't version, DELETE promotes or moves to history based on mode.
- •Azure integrates with soft delete/lifecycle; Swift S3 emulation may differ in delete markers/version listing behaviors from pure S3.
Copy Managed Disk
→ Rumble: Clones
high3 diffs›
Copy Managed Disk
→ Rumble: Clones
- •Azure cloning via 'az disk create --source' from disk ID or snapshot, supports cross-subscription/region with grants; Cinder uses 'cinder create --source-volid' or from snapshot, backend-local unless multi-backend.
- •No direct thin-clone in Azure (full copy via snapshot); Cinder supports thin cloning depending on backend (e.g., Ceph clone).
- •Azure copy requires same region for direct source ID use, cross-region via snapshot export/import; Cinder cloning typically same backend.
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
high4 diffs›
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
- •Azure's organization model is a four-level hierarchy: Tenant (Entra ID) → Management Groups → Subscriptions → Resource Groups. OpenStack uses a two-level model: Domain → Project. Quake AI exposes Projects within an Organization.
- •Azure Management Groups support up to 10,000 groups with 6 levels of depth; policy and RBAC assigned at a management group cascade to all child subscriptions. OpenStack has no equivalent cascading policy inheritance between projects.
- •Azure subscriptions are both billing containers and resource containers; each has its own cost center and invoice. OpenStack projects are resource containers only; billing is aggregated at the account level.
- •Azure resources must be placed in both a Subscription and a Resource Group; no resource exists outside a Resource Group. OpenStack resources belong to a project with no resource group concept.
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
high4 diffs›
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
- •Proprietary Microsoft identity platform with OAuth2/OIDC, MSAL libraries, Microsoft Graph API integration; OpenStack Keystone provides OpenStack-specific token auth with pluggable backends (LDAP/SQL).
- •Entra ID supports external identities (B2B/B2C), social logins (Google/Facebook); Keystone focuses on domain/project/role auth, federation via SAML/OIDC possible but secondary.
- •Integrated with Azure subscriptions (one tenant per sub); Keystone is deployment-wide, not subscription-scoped.
- •Advanced features like PIM, app provisioning; OpenStack roles are simpler, assigned per project.
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
high4 diffs›
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
- •Azure Blob Storage has no native S3-compatible endpoint; S3 compatibility requires third-party gateways (Flexify.IO, S3Proxy). Applications using AWS SDK pointing at Quake AI's S3 endpoint require zero code changes; migrating to Azure Blob requires SDK replacement (azure-storage-blob).
- •Azure Blob uses a different REST API with Azure-specific URL paths and x-ms-* headers; Quake AI's S3 endpoint uses standard AWS SigV4 authentication with EC2 credentials issued by Keystone.
- •Azure Blob's hierarchy is Storage Account → Container → Blob; Quake AI's Swift S3 layer maps S3 Buckets to Swift containers and Keys to objects, preserving the S3 mental model.
- •Azure auth uses Shared Access Signatures (SAS) or Azure AD RBAC; Quake AI's S3 endpoint uses AWS SigV4 with project-scoped access key/secret pairs (EC2 credentials in Keystone).
NAT Gateway
→ Rumble: NAT
high4 diffs›
NAT Gateway
→ Rumble: NAT
- •Managed subnet-level service w/ dynamic SNAT ports (no exhaustion), up to 16 static Public IPs ().
- •Highest precedence over LB/instance Public IP; zonal/zone-redundant SKUs; billed.
- •No router namespace; scales to 100Gbps; TCP/UDP only vs OpenStack L3 agent/OVN router SNAT.
- •Subnet attachment (one per subnet); overrides default Internet route.
Network Interfaces
→ Rumble: Ports
›
Network Interfaces
→ Rumble: Ports
No specific divergences documented yet.
View Azure docs →Network Security Groups (NSGs)
→ Rumble: Security groups
high4 diffs›
Network Security Groups (NSGs)
→ Rumble: Security groups
- •NSGs can associate to both subnets and NICs with specific processing order (inbound: subnet then NIC; outbound: NIC then subnet) ().
- •Stateful with priority-based rules (100-4096); augmented rules allow multiple IPs/ports per rule (Resource Manager only).
- •Default rules allow VNet/LB/Internet out; service tags like VirtualNetwork.
- •No direct port-level only like OpenStack; subnet-level affects all instances.
Public IP addresses
→ Rumble: Floating IPs
high4 diffs›
Public IP addresses
→ Rumble: Floating IPs
- •Public IP is a dedicated ARM resource with SKUs (Basic/Standard); IPv4 billed, IPv6 free ().
- •Static/dynamic allocation (Standard static only); zone-redundant option (Standard v2).
- •Associated directly to NIC/LB/gateway vs via router DNAT in OpenStack.
- •Dynamic outbound uses ephemeral IPs even without assoc; no pool allocation like Neutron external nets.
Snapshots
→ Rumble: Snapshots
high4 diffs›
Snapshots
→ Rumble: Snapshots
- •Snapshots of managed disks (Microsoft.Compute/snapshots), billed on used size, separate from volumes unlike Cinder volume snapshots integration.
- •Supports incremental snapshots for efficiency, ZRS storage in zones.
- •API /providers/Microsoft.Compute/snapshots vs Nova/Cinder volume snapshot APIs.
- •Primarily for disks, not full instances; instance snapshots via images instead.
SSH public keys
→ Rumble: Key pairs
high4 diffs›
SSH public keys
→ Rumble: Key pairs
- •Managed as ARM resources (Microsoft.Compute/sshPublicKeys), reusable across VMs, vs OpenStack's keypairs injected only at boot.
- •API /providers/Microsoft.Compute/sshPublicKeys, supports ED25519/RSA, no private key storage.
- •Keys provided during VM create or via portal/CLI, not listed/injected separately post-boot like OpenStack.
- •No deletion/re-import of injected keys; new VM for changes.
Storage Service Encryption (SSE)
→ Rumble: Encryption
high3 diffs›
Storage Service Encryption (SSE)
→ Rumble: Encryption
- •Both SSE transparent; Azure SSE default with Microsoft-managed keys (256-bit AES), optional CMK in Key Vault/CPK/client-side; Swift encryption middleware (AES-256 CTR) derives keys from root secret, internal not API-exposed.
- •Azure scopes keys to account, container, or blob and integrates Key Vault. Swift can encrypt object data and metadata at the storage layer.
- •Azure client-side explicit in SDKs; Swift recommends client-side for full protection, server-side mitigates disk theft.
Terraform AzureRM provider
→ Rumble: Terraform
high2 diffs›
Terraform AzureRM provider
→ Rumble: Terraform
- •Uses azurerm_virtual_machine/azurerm_linux_virtual_machine; OpenStack uses openstack_compute_instance_v2.
- •AzureRM provider requires subscription_id, tenant_id, client_id, client_secret; OpenStack uses auth_url and application credentials.
Virtual Machines
→ Rumble: Instances
high4 diffs›
Virtual Machines
→ Rumble: Instances
- •Uses Azure Resource Manager (ARM) REST API at /providers/Microsoft.Compute/virtualMachines instead of OpenStack Nova API at /v2.1/servers.
- •Tightly integrated with Azure services like Azure Active Directory for authentication, unlike OpenStack's Keystone.
- •VM creation requires specifying size from predefined series with hardware-specific features (e.g., AMD/Intel/ARM), not custom flavor configs.
- •Billed per second with complex pricing tiers based on series/reservation options, vs OpenStack's typically hourly or usage-based.
Virtual Network (VNet)
→ Rumble: Networks
high4 diffs›
Virtual Network (VNet)
→ Rumble: Networks
- •Azure VNets are strictly regional Layer 3 overlays scoped to one subscription with no L2 VLAN support ().
- •VNets and subnets creation free, but subnets min /29 with Azure reserving 5 IPs per subnet ().
- •Managed via ARM REST APIs/PowerShell/CLI vs Neutron REST API.
- •Isolated per subscription; peering for cross-VNet connectivity vs OpenStack project networks connected via routers.
Virtual Network Gateway
→ Rumble: Routers
›
Virtual Network Gateway
→ Rumble: Routers
No specific divergences documented yet.
View Azure docs →Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
high4 diffs›
Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
- •Azure subnets are child resources of a Virtual Network defined as /providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}; Neutron subnets are top-level resources with their own UUIDs associated to a network via network_id.
- •Azure subnets support service endpoints (for Azure Storage, SQL) and delegations (reserving a subnet for specific Azure services) with no Neutron equivalent.
- •Azure subnet CIDR cannot overlap with other subnets in the same VNet or peered VNets and is immutable after creation; Neutron supports updating allocation pools but not the CIDR block post-creation.
- •Network Security Groups (NSGs) attach at the Azure subnet level (and optionally at NIC level); Neutron security groups attach to ports/interfaces, not to subnets.
VM sizes
→ Rumble: Flavors
high4 diffs›
VM sizes
→ Rumble: Flavors
- •Predefined hardware-optimized series (e.g., D-family general purpose) with complex naming (e.g., Standard_D4as_v5), not user-defined vCPU/RAM like OpenStack flavors.
- •Sizes listed via API /providers/Microsoft.Compute/locations/{location}/vmSizes, region-specific availability.
- •Includes accelerator features (GPU, FPGA) baked into sizes, unavailable in basic OpenStack flavors without extensions.
- •Cannot create custom sizes; selection from catalog, limiting flexibility vs OpenStack flavor creation.
Block storage· 2 mappings
Azure Managed Disks
→ Rumble: Volumes
high3 diffs›
Azure Managed Disks
→ Rumble: Volumes
- •Azure Managed Disks are fully managed with automatic redundancy (3 replicas, 99.999% SLA); Cinder durability depends on backend.
- •Predefined disk types (Ultra Disk, Premium SSD v2, Premium SSD, Standard SSD, Standard HDD) with fixed performance tiers; Cinder uses volume types with configurable QoS.
- •Disks billed on provisioned size regardless of use; Cinder billing typically on provisioned size too but varies by provider.
Copy Managed Disk
→ Rumble: Clones
high3 diffs›
Copy Managed Disk
→ Rumble: Clones
- •Azure cloning via 'az disk create --source' from disk ID or snapshot, supports cross-subscription/region with grants; Cinder uses 'cinder create --source-volid' or from snapshot, backend-local unless multi-backend.
- •No direct thin-clone in Azure (full copy via snapshot); Cinder supports thin cloning depending on backend (e.g., Ceph clone).
- •Azure copy requires same region for direct source ID use, cross-region via snapshot export/import; Cinder cloning typically same backend.
Kubernetes· 31 mappings
AKS Cluster
→ Rumble: Kubernetes
high4 diffs›
AKS Cluster
→ Rumble: Kubernetes
- •Azure automatically provisions and manages the control plane at no additional cost (Free tier) or fixed fee (Standard tier with SLA), offloading health monitoring and upgrades; on Quake AI you provision a cluster through Magnum (openstack coe cluster create) or self-managed Kubernetes on Nova instances (OpenTofu plus kubeadm, k3s, or RKE2), and you operate the cluster after creation.
- •No OpenStack integration; uses Azure Resource Manager for cluster lifecycle.
- •Pre-configured with Azure-specific defaults and add-ons like application routing.
- •Managed via Azure Virtual Machine Scale Sets (VMSS) with auto-scaling and upgrades; Quake AI uses Nova instances provisioned via OpenTofu with user-managed scaling and upgrades.
AKS Networking
→ Rumble: Networking
high3 diffs›
AKS Networking
→ Rumble: Networking
- •Azure CNI or kubenet, integrates Azure Load Balancer/Application Gateway; Quake AI Kubernetes clusters use Neutron private networks and routers with CNI plugins (Flannel, Calico, Cilium).
- •Bring-your-own CNI supported; Quake AI tenant-isolated Neutron.
- •Azure-specific: Application routing add-on (nginx), no native Neutron.
Availability sets
→ Rumble: Server groups
high4 diffs›
Availability sets
→ Rumble: Server groups
- •Uses fault/update domains (max 3/20) for HA, fixed at creation, vs flexible OpenStack server group policies (affinity/anti-affinity).
- •ARM resource (Microsoft.Compute/availabilitySets), VMs assigned at create, no dynamic move.
- •No extra cost, but requires 2+ VMs for SLA; prefers zones/scale sets.
- •Lower latency between VMs in set vs zones, hardware-specific isolation.
Azure Billing
→ Rumble: Billing
high4 diffs›
Azure Billing
→ Rumble: Billing
- •Consumption-based metered billing via Microsoft Commerce pipeline with rated usage, monthly invoices, discounts/reservations; OpenStack has no built-in billing, relies on add-ons like CloudKitty for rating/chargeback.
- •Scopes include subscriptions/RGs for cost analysis, anomaly detection, budgets; OpenStack usage collected via Ceilometer, rated externally.
- •Enterprise Agreements/MCA with complex scopes (billing profiles); OpenStack operator-defined.
- •Cost Management + Billing portal for payments/invoices; OpenStack requires custom integration.
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
high4 diffs›
Azure Compute Gallery Image (Generalized or Specialized)
→ Rumble: Snapshots
- •Azure requires choosing between generalized (sysprep'd, removes machine identity, destroys the source VM's bootability) and specialized (exact clone, source VM survives). OpenStack Nova createImage is always non-destructive — the server continues running and the image captures the current disk state.
- •Capturing a generalized Azure image requires running waagent -deprovision inside the VM, then deallocating and marking as generalized (az vm generalize) before capture — a multi-step destructive process. OpenStack createImage (POST /v2.1/servers/{id}/action {"createImage": {...}}) requires no VM shutdown.
- •Azure stores instance images in Azure Compute Gallery with versioning and multi-region replication support. Glance stores images with no built-in versioning (images are replaced or new images created).
- •Azure ARM API for capture: POST /providers/Microsoft.Compute/virtualMachines/{vm}/capture (legacy) or via Compute Gallery image versions. Nova API: POST /v2.1/servers/{id}/action.
Azure Compute Gallery image definitions and versions
→ Rumble: Images
high4 diffs›
Azure Compute Gallery image definitions and versions
→ Rumble: Images
- •Organized in galleries with image definitions and versioned images (Microsoft.Compute/galleries/images/versions), more structured than flat Glance images.
- •Supports global replication to regions with replicas (up to 100), ZRS storage, unlike OpenStack's store-only model.
- •Sharing via RBAC, community galleries, or direct share; requires gallery setup vs simple OpenStack image sharing.
- •New features like Trusted Launch only in Gallery, legacy managed images deprecated.
Azure Load Balancer
→ Rumble: Load balancer
high4 diffs›
Azure Load Balancer
→ Rumble: Load balancer
- •Pure L4 (TCP/UDP) pass-through; no L7 features (use App Gateway) ().
- •SKUs: Standard w/ zones/HA, health probes, outbound SNAT rules; Basic free but retiring 2025.
- •Azure provides a regional managed service integrated with VNets. Quake AI workloads use a self-managed reverse proxy or Kubernetes LoadBalancer Service.
- •API via ARM; frontend configs w/ multiple IPs/ports.
Azure Managed Disks
→ Rumble: Volumes
high3 diffs›
Azure Managed Disks
→ Rumble: Volumes
- •Azure Managed Disks are fully managed with automatic redundancy (3 replicas, 99.999% SLA); Cinder durability depends on backend.
- •Predefined disk types (Ultra Disk, Premium SSD v2, Premium SSD, Standard SSD, Standard HDD) with fixed performance tiers; Cinder uses volume types with configurable QoS.
- •Disks billed on provisioned size regardless of use; Cinder billing typically on provisioned size too but varies by provider.
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
high4 diffs›
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
- •Azure bills Linux VMs per second; pricing is not included in the VM size API and requires the Azure Retail Prices API (GET https://prices.azure.com/api/retail/prices) or the Pricing Calculator.
- •Azure Hybrid Benefit allows using on-premises Windows Server and SQL Server licenses to reduce Azure VM costs; no equivalent in OpenStack.
- •Azure pricing includes Basic, Standard, and Premium tiers for many services (load balancers, public IPs) with different SLAs per tier. Quake AI uses a flat pricing model without service tiers.
- •Azure reserved instances (1-year or 3-year commitments) offer up to 72% discount vs. on-demand. Quake AI does not currently offer reserved capacity pricing.
Azure RBAC / ABAC / SAS
→ Rumble: Access control
high3 diffs›
Azure RBAC / ABAC / SAS
→ Rumble: Access control
- •Azure uses RBAC/ABAC with Entra ID (AAD), SAS, shared keys; Quake AI/OpenStack Swift S3 uses Keystone/S3 token auth mapped to Swift ACLs, bucket policies via s3api middleware.
- •Azure granular roles/conditions at account/container/blob; Swift ACLs are read/write/ACL granularities per account/container.
- •Azure recommends Entra over keys; Swift s3api translates S3 auth to Swift accounts.
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
high4 diffs›
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
- •Authoring format differs: ARM templates are JSON documents for Azure Resource Manager deployments, whereas Quake AI offers Heat (legacy, HOT/YAML format) and recommends OpenTofu (HCL) for new infrastructure automation.
- •Deployment target/scope differs: ARM templates can deploy at multiple scopes (resource group, subscription, management group, tenant) via Azure Resource Manager's management layer, while Heat orchestrates within a single OpenStack project/tenant. OpenTofu can target multiple projects via provider configuration.
- •Change-preview behavior differs: ARM supports a built-in “what-if” style preview of changes via Resource Manager deployments, while OpenTofu provides `tofu plan` for change previews. Heat relies on stack update events (legacy workflow).
- •Resource coverage lifecycle differs: ARM templates support Azure resource types exposed by Azure resource providers; OpenTofu covers OpenStack resource types via the OpenStack provider, and Heat (legacy) supports a narrower set via built-in resource plugins.
Azure Subscriptions
→ Rumble: Projects
high4 diffs›
Azure Subscriptions
→ Rumble: Projects
- •Resource Groups store metadata in a specific region and support resources from multiple regions; OpenStack lacks formal grouping beyond projects, resources directly scoped to projects.
- •Built-in features like ARM locks (Read-only/Delete), integrated tags for cost allocation, and deployment history views; OpenStack uses project quotas and locks via extensions, no native group-level deployments.
- •Lifecycle management: Easy group delete/update via ARM templates; OpenStack deletes resources individually or via OpenTofu destroy/Heat stacks scoped to projects.
- •Portal views aggregate metrics/deployments across group; OpenStack Horizon shows per-project.
Blob lifecycle management
→ Rumble: S3
high3 diffs›
Blob lifecycle management
→ Rumble: S3
- •Azure supports automated tiering (hot/cool/cold/archive) and expiration rules based on age, access time; Quake AI Swift S3 API lacks native lifecycle management per official OpenStack docs and no Quake AI-specific extension found.
- •Azure policies apply account-wide or filtered by prefix/tags; Swift requires external cron/object-expirer daemon for deletes, no built-in tiering.
- •Azure charges for tiering API calls; Swift has no equivalent billing as feature missing.
Blob versioning
→ Rumble: Versioning
medium3 diffs›
Blob versioning
→ Rumble: Versioning
- •Both support versioning via S3 API in Quake AI and Blob REST API in Azure, but Azure automatic on write/delete for supported accounts; Swift native uses container headers (X-Versions-Location) requiring archive container, two modes differing on DELETE behavior.
- •Azure versions immutable, one current version; Swift POST metadata doesn't version, DELETE promotes or moves to history based on mode.
- •Azure integrates with soft delete/lifecycle; Swift S3 emulation may differ in delete markers/version listing behaviors from pure S3.
Copy Managed Disk
→ Rumble: Clones
high3 diffs›
Copy Managed Disk
→ Rumble: Clones
- •Azure cloning via 'az disk create --source' from disk ID or snapshot, supports cross-subscription/region with grants; Cinder uses 'cinder create --source-volid' or from snapshot, backend-local unless multi-backend.
- •No direct thin-clone in Azure (full copy via snapshot); Cinder supports thin cloning depending on backend (e.g., Ceph clone).
- •Azure copy requires same region for direct source ID use, cross-region via snapshot export/import; Cinder cloning typically same backend.
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
high4 diffs›
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
- •Azure's organization model is a four-level hierarchy: Tenant (Entra ID) → Management Groups → Subscriptions → Resource Groups. OpenStack uses a two-level model: Domain → Project. Quake AI exposes Projects within an Organization.
- •Azure Management Groups support up to 10,000 groups with 6 levels of depth; policy and RBAC assigned at a management group cascade to all child subscriptions. OpenStack has no equivalent cascading policy inheritance between projects.
- •Azure subscriptions are both billing containers and resource containers; each has its own cost center and invoice. OpenStack projects are resource containers only; billing is aggregated at the account level.
- •Azure resources must be placed in both a Subscription and a Resource Group; no resource exists outside a Resource Group. OpenStack resources belong to a project with no resource group concept.
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
high4 diffs›
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
- •Proprietary Microsoft identity platform with OAuth2/OIDC, MSAL libraries, Microsoft Graph API integration; OpenStack Keystone provides OpenStack-specific token auth with pluggable backends (LDAP/SQL).
- •Entra ID supports external identities (B2B/B2C), social logins (Google/Facebook); Keystone focuses on domain/project/role auth, federation via SAML/OIDC possible but secondary.
- •Integrated with Azure subscriptions (one tenant per sub); Keystone is deployment-wide, not subscription-scoped.
- •Advanced features like PIM, app provisioning; OpenStack roles are simpler, assigned per project.
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
high4 diffs›
N/A (No native S3 API — Azure Blob Storage REST API only)
→ Rumble: S3 compatibility
- •Azure Blob Storage has no native S3-compatible endpoint; S3 compatibility requires third-party gateways (Flexify.IO, S3Proxy). Applications using AWS SDK pointing at Quake AI's S3 endpoint require zero code changes; migrating to Azure Blob requires SDK replacement (azure-storage-blob).
- •Azure Blob uses a different REST API with Azure-specific URL paths and x-ms-* headers; Quake AI's S3 endpoint uses standard AWS SigV4 authentication with EC2 credentials issued by Keystone.
- •Azure Blob's hierarchy is Storage Account → Container → Blob; Quake AI's Swift S3 layer maps S3 Buckets to Swift containers and Keys to objects, preserving the S3 mental model.
- •Azure auth uses Shared Access Signatures (SAS) or Azure AD RBAC; Quake AI's S3 endpoint uses AWS SigV4 with project-scoped access key/secret pairs (EC2 credentials in Keystone).
NAT Gateway
→ Rumble: NAT
high4 diffs›
NAT Gateway
→ Rumble: NAT
- •Managed subnet-level service w/ dynamic SNAT ports (no exhaustion), up to 16 static Public IPs ().
- •Highest precedence over LB/instance Public IP; zonal/zone-redundant SKUs; billed.
- •No router namespace; scales to 100Gbps; TCP/UDP only vs OpenStack L3 agent/OVN router SNAT.
- •Subnet attachment (one per subnet); overrides default Internet route.
Network Interfaces
→ Rumble: Ports
›
Network Interfaces
→ Rumble: Ports
No specific divergences documented yet.
View Azure docs →Network Security Groups (NSGs)
→ Rumble: Security groups
high4 diffs›
Network Security Groups (NSGs)
→ Rumble: Security groups
- •NSGs can associate to both subnets and NICs with specific processing order (inbound: subnet then NIC; outbound: NIC then subnet) ().
- •Stateful with priority-based rules (100-4096); augmented rules allow multiple IPs/ports per rule (Resource Manager only).
- •Default rules allow VNet/LB/Internet out; service tags like VirtualNetwork.
- •No direct port-level only like OpenStack; subnet-level affects all instances.
Public IP addresses
→ Rumble: Floating IPs
high4 diffs›
Public IP addresses
→ Rumble: Floating IPs
- •Public IP is a dedicated ARM resource with SKUs (Basic/Standard); IPv4 billed, IPv6 free ().
- •Static/dynamic allocation (Standard static only); zone-redundant option (Standard v2).
- •Associated directly to NIC/LB/gateway vs via router DNAT in OpenStack.
- •Dynamic outbound uses ephemeral IPs even without assoc; no pool allocation like Neutron external nets.
Snapshots
→ Rumble: Snapshots
high4 diffs›
Snapshots
→ Rumble: Snapshots
- •Snapshots of managed disks (Microsoft.Compute/snapshots), billed on used size, separate from volumes unlike Cinder volume snapshots integration.
- •Supports incremental snapshots for efficiency, ZRS storage in zones.
- •API /providers/Microsoft.Compute/snapshots vs Nova/Cinder volume snapshot APIs.
- •Primarily for disks, not full instances; instance snapshots via images instead.
SSH public keys
→ Rumble: Key pairs
high4 diffs›
SSH public keys
→ Rumble: Key pairs
- •Managed as ARM resources (Microsoft.Compute/sshPublicKeys), reusable across VMs, vs OpenStack's keypairs injected only at boot.
- •API /providers/Microsoft.Compute/sshPublicKeys, supports ED25519/RSA, no private key storage.
- •Keys provided during VM create or via portal/CLI, not listed/injected separately post-boot like OpenStack.
- •No deletion/re-import of injected keys; new VM for changes.
Storage Service Encryption (SSE)
→ Rumble: Encryption
high3 diffs›
Storage Service Encryption (SSE)
→ Rumble: Encryption
- •Both SSE transparent; Azure SSE default with Microsoft-managed keys (256-bit AES), optional CMK in Key Vault/CPK/client-side; Swift encryption middleware (AES-256 CTR) derives keys from root secret, internal not API-exposed.
- •Azure scopes keys to account, container, or blob and integrates Key Vault. Swift can encrypt object data and metadata at the storage layer.
- •Azure client-side explicit in SDKs; Swift recommends client-side for full protection, server-side mitigates disk theft.
Terraform AzureRM provider
→ Rumble: Terraform
high2 diffs›
Terraform AzureRM provider
→ Rumble: Terraform
- •Uses azurerm_virtual_machine/azurerm_linux_virtual_machine; OpenStack uses openstack_compute_instance_v2.
- •AzureRM provider requires subscription_id, tenant_id, client_id, client_secret; OpenStack uses auth_url and application credentials.
Virtual Machines
→ Rumble: Instances
high4 diffs›
Virtual Machines
→ Rumble: Instances
- •Uses Azure Resource Manager (ARM) REST API at /providers/Microsoft.Compute/virtualMachines instead of OpenStack Nova API at /v2.1/servers.
- •Tightly integrated with Azure services like Azure Active Directory for authentication, unlike OpenStack's Keystone.
- •VM creation requires specifying size from predefined series with hardware-specific features (e.g., AMD/Intel/ARM), not custom flavor configs.
- •Billed per second with complex pricing tiers based on series/reservation options, vs OpenStack's typically hourly or usage-based.
Virtual Network (VNet)
→ Rumble: Networks
high4 diffs›
Virtual Network (VNet)
→ Rumble: Networks
- •Azure VNets are strictly regional Layer 3 overlays scoped to one subscription with no L2 VLAN support ().
- •VNets and subnets creation free, but subnets min /29 with Azure reserving 5 IPs per subnet ().
- •Managed via ARM REST APIs/PowerShell/CLI vs Neutron REST API.
- •Isolated per subscription; peering for cross-VNet connectivity vs OpenStack project networks connected via routers.
Virtual Network Gateway
→ Rumble: Routers
›
Virtual Network Gateway
→ Rumble: Routers
No specific divergences documented yet.
View Azure docs →Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
high4 diffs›
Virtual Network Subnets (VNet Subnets)
→ Rumble: Subnets
- •Azure subnets are child resources of a Virtual Network defined as /providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}; Neutron subnets are top-level resources with their own UUIDs associated to a network via network_id.
- •Azure subnets support service endpoints (for Azure Storage, SQL) and delegations (reserving a subnet for specific Azure services) with no Neutron equivalent.
- •Azure subnet CIDR cannot overlap with other subnets in the same VNet or peered VNets and is immutable after creation; Neutron supports updating allocation pools but not the CIDR block post-creation.
- •Network Security Groups (NSGs) attach at the Azure subnet level (and optionally at NIC level); Neutron security groups attach to ports/interfaces, not to subnets.
VM sizes
→ Rumble: Flavors
high4 diffs›
VM sizes
→ Rumble: Flavors
- •Predefined hardware-optimized series (e.g., D-family general purpose) with complex naming (e.g., Standard_D4as_v5), not user-defined vCPU/RAM like OpenStack flavors.
- •Sizes listed via API /providers/Microsoft.Compute/locations/{location}/vmSizes, region-specific availability.
- •Includes accelerator features (GPU, FPGA) baked into sizes, unavailable in basic OpenStack flavors without extensions.
- •Cannot create custom sizes; selection from catalog, limiting flexibility vs OpenStack flavor creation.
Automation· 2 mappings
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
high4 diffs›
Azure Resource Manager deployment (deployment)
→ Rumble: Automation
- •Authoring format differs: ARM templates are JSON documents for Azure Resource Manager deployments, whereas Quake AI offers Heat (legacy, HOT/YAML format) and recommends OpenTofu (HCL) for new infrastructure automation.
- •Deployment target/scope differs: ARM templates can deploy at multiple scopes (resource group, subscription, management group, tenant) via Azure Resource Manager's management layer, while Heat orchestrates within a single OpenStack project/tenant. OpenTofu can target multiple projects via provider configuration.
- •Change-preview behavior differs: ARM supports a built-in “what-if” style preview of changes via Resource Manager deployments, while OpenTofu provides `tofu plan` for change previews. Heat relies on stack update events (legacy workflow).
- •Resource coverage lifecycle differs: ARM templates support Azure resource types exposed by Azure resource providers; OpenTofu covers OpenStack resource types via the OpenStack provider, and Heat (legacy) supports a narrower set via built-in resource plugins.
Terraform AzureRM provider
→ Rumble: Terraform
high2 diffs›
Terraform AzureRM provider
→ Rumble: Terraform
- •Uses azurerm_virtual_machine/azurerm_linux_virtual_machine; OpenStack uses openstack_compute_instance_v2.
- •AzureRM provider requires subscription_id, tenant_id, client_id, client_secret; OpenStack uses auth_url and application credentials.
Account· 3 mappings
Azure Subscriptions
→ Rumble: Projects
high4 diffs›
Azure Subscriptions
→ Rumble: Projects
- •Resource Groups store metadata in a specific region and support resources from multiple regions; OpenStack lacks formal grouping beyond projects, resources directly scoped to projects.
- •Built-in features like ARM locks (Read-only/Delete), integrated tags for cost allocation, and deployment history views; OpenStack uses project quotas and locks via extensions, no native group-level deployments.
- •Lifecycle management: Easy group delete/update via ARM templates; OpenStack deletes resources individually or via OpenTofu destroy/Heat stacks scoped to projects.
- •Portal views aggregate metrics/deployments across group; OpenStack Horizon shows per-project.
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
high4 diffs›
Management Groups + Subscriptions + Resource Groups hierarchy
→ Rumble: Organizations
- •Azure's organization model is a four-level hierarchy: Tenant (Entra ID) → Management Groups → Subscriptions → Resource Groups. OpenStack uses a two-level model: Domain → Project. Quake AI exposes Projects within an Organization.
- •Azure Management Groups support up to 10,000 groups with 6 levels of depth; policy and RBAC assigned at a management group cascade to all child subscriptions. OpenStack has no equivalent cascading policy inheritance between projects.
- •Azure subscriptions are both billing containers and resource containers; each has its own cost center and invoice. OpenStack projects are resource containers only; billing is aggregated at the account level.
- •Azure resources must be placed in both a Subscription and a Resource Group; no resource exists outside a Resource Group. OpenStack resources belong to a project with no resource group concept.
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
high4 diffs›
Microsoft Entra ID (formerly Azure AD)
→ Rumble: Authentication
- •Proprietary Microsoft identity platform with OAuth2/OIDC, MSAL libraries, Microsoft Graph API integration; OpenStack Keystone provides OpenStack-specific token auth with pluggable backends (LDAP/SQL).
- •Entra ID supports external identities (B2B/B2C), social logins (Google/Facebook); Keystone focuses on domain/project/role auth, federation via SAML/OIDC possible but secondary.
- •Integrated with Azure subscriptions (one tenant per sub); Keystone is deployment-wide, not subscription-scoped.
- •Advanced features like PIM, app provisioning; OpenStack roles are simpler, assigned per project.
Billing· 3 mappings
Azure Billing
→ Rumble: Billing
high4 diffs›
Azure Billing
→ Rumble: Billing
- •Consumption-based metered billing via Microsoft Commerce pipeline with rated usage, monthly invoices, discounts/reservations; OpenStack has no built-in billing, relies on add-ons like CloudKitty for rating/chargeback.
- •Scopes include subscriptions/RGs for cost analysis, anomaly detection, budgets; OpenStack usage collected via Ceilometer, rated externally.
- •Enterprise Agreements/MCA with complex scopes (billing profiles); OpenStack operator-defined.
- •Cost Management + Billing portal for payments/invoices; OpenStack requires custom integration.
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
high4 diffs›
Azure Pay-As-You-Go (per-second billing for Linux VMs, regional pricing)
→ Rumble: Pricing
- •Azure bills Linux VMs per second; pricing is not included in the VM size API and requires the Azure Retail Prices API (GET https://prices.azure.com/api/retail/prices) or the Pricing Calculator.
- •Azure Hybrid Benefit allows using on-premises Windows Server and SQL Server licenses to reduce Azure VM costs; no equivalent in OpenStack.
- •Azure pricing includes Basic, Standard, and Premium tiers for many services (load balancers, public IPs) with different SLAs per tier. Quake AI uses a flat pricing model without service tiers.
- •Azure reserved instances (1-year or 3-year commitments) offer up to 72% discount vs. on-demand. Quake AI does not currently offer reserved capacity pricing.
Azure Subscriptions
→ Rumble: Projects
high4 diffs›
Azure Subscriptions
→ Rumble: Projects
- •Resource Groups store metadata in a specific region and support resources from multiple regions; OpenStack lacks formal grouping beyond projects, resources directly scoped to projects.
- •Built-in features like ARM locks (Read-only/Delete), integrated tags for cost allocation, and deployment history views; OpenStack uses project quotas and locks via extensions, no native group-level deployments.
- •Lifecycle management: Easy group delete/update via ARM templates; OpenStack deletes resources individually or via OpenTofu destroy/Heat stacks scoped to projects.
- •Portal views aggregate metrics/deployments across group; OpenStack Horizon shows per-project.
Self-managed services and deployment patterns#
| Azure service | Status on Quake AI | Alternative |
|---|---|---|
| Azure Functions | Not available | Containers on VMs or Kubernetes |
| Azure SQL / Cosmos DB | Not available | Self-managed databases on VMs |
| Azure Service Bus | Not available | Self-managed RabbitMQ, Redis, or NATS |
| Azure App Service | Not available | Deploy on VMs with Docker or Kubernetes |
| Azure Cache for Redis | Not available | Self-managed Redis on a VM |
| Azure DNS | Not available | External DNS provider (Cloudflare or similar) |
For the full comparison, see Coming from Azure: What Azure has that Quake AI does not.
Next steps#
- Coming from Azure: concept translation reference
- Migrate from Azure Blob Storage
- Infrastructure as Code with OpenTofu
- All migration guides
Usage Guidelines
The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.
Comparisons to third-party providers in this material reflect publicly documented behavior as of the validation date below. Pricing, quotas, service limits, and feature availability change frequently on every cloud. Verify provider-specific claims against the provider's own current documentation before relying on them for a procurement, architecture, or migration decision.
For the full policy, see Usage Guidelines.
Last validated: 22.06.2026
See Also
Migrating from AWS to Quake AI
Shares: Automation, Migration
Migrating from DigitalOcean to Quake AI
Shares: Automation, Migration
Migrating from GCP to Quake AI
Shares: Automation, Migration
Migrating from Hetzner Cloud to Quake AI
Shares: Automation, Migration
Migrating from Linode (Akamai Cloud Computing) to Quake AI
Shares: Automation, Migration