/arm-estimator

ACE (Azure Cost Estimator) - automated cost estimations for ARM Templates, Bicep and Terraform

Primary LanguageC#MIT LicenseMIT

ACE (Azure Cost Estimator) GitHub all releases

arm-estimator-demo Automated cost estimation of your Azure infrastructure made easy. Works with ARM Templates, Bicep and Terraform.

Demo

asciicast

Philosophy

As adoption of cloud services progresses, understanding how cloud billing works becomes more and more critical for keeping everything under control. Most of the time initial infrastructure cost estimation is done only during design phase and gets neglected as development progresses. Many development teams don't have enough understanding how to calculate impact of their changes and find difficult to get an immediate feedback whether they're still withing acceptable level of money spent for their services.

Infrastructure-as-Code (IaC) makes things even more difficult - it solves the problem of cloud infrastructure treated as a separate development stream, but doesn't give you control over cost of components under your control.

ACE follows a concept of running cost as architecture fitness function. You can make it an integral part of your CICD pipeline and quickly gather information of how much you're going to spend.

Main features

  • Supports 49 Azure services (~92 resource types)
  • Native support for Bicep, ARM Templates and Terraform
  • Detailed output containing information about cost of your infrastructure and metrics used for calculation
  • Seamless integration with ARM Templates and Bicep (with a little help of Bicep CLI)
  • Always fresh data thanks to direct calls to Azure Retail API
  • Native tool experience - no third-party services / proxies, everything relies on componenets delivered and used by Microsoft
  • Multi-option authentication based on Azure.Identity package - project automatically uses cached credentials from the running environment (supports Azure CLI / Environment credentials / Managed Identity and more)
  • Allows you to validate your deployment before it happens - if the template you used is invalid, an error with detailed information is returned
  • Support for both Incremental / Complete deployment modes (see Usage section)
  • Displaying delta describing difference between your current estimated cost and after changes are applied
  • An option to stop CICD process if estimations exceed given limit (see Usage section)
  • Supports passing parameters along with your template (including .bicepparam files)
  • Handles extension resources as long as they're correctly configured (i.e. define scope parameter)
  • Works with both individually defined resources and nested resources
  • Supports 17 different currencies
  • Allows for generating output as an artifact for further processing
  • Ability to consume custom usage patterns for enhancing calculations
  • Multiple deployment scopes support (resource group / subscription / management group / tenant)

Documentation

Check wiki for detailed information about installation, usage and available features

GitHub Action

ACE comes with a dedicated GitHub Action for your worflows for easy integration. See this repository for more information.

Services support

Services not listed are considered TBD. Below list represents the latest commit available, which isn't always aligned with the most recent release.

Service Support level Terraform support More information
Active Directory B2C Not Supported Not Supported -
Active Directory Domain Services Not Supported Not Supported -
Advanced Data Security Not Supported Not Supported -
Advanced Threat Protection Not Supported Not Supported -
AKS Stable Supported Supports only VMSS agent pools
APIM Stable Supported -
App Configuration Stable Supported -
Application Gateway Stable Supported -
Application Insights Stable Supported Supports classic mode, doesn't support Enteprise Nodes and Multi-step Web Test
Analysis Services Stable Supported -
ASR Stable Supported Doesn't support recovery to customer-owned sites
Automation Account Stable Supported Supports Process Automation only
Azure App Service Stable Supported Supports Azure App Service Plans (without Isolated tiers) and Azure Functions (Consumption / Premium / App Service Plan)
Azure Firewall Stable Not Supported -
Availability Set Stable Not Supported -
Backup Stable Not Supported -
Bastion Stable Not Supported -
Bot Service Stable Not Supported -
Chaos Studio Stable Not Supported -
Cognitive Search In development Not Supported Doesn't support Document Cracking / Semantic Search / Custom Entity Skills Text Records
Confidential Ledger Stable Not Supported -
Container Apps Stable Not Supported -
Container Registry Stable Supported -
Cosmos DB In development Not Supported Supports only single-region writes with manual throughput provisioning
Data Factory In Development Not Supported Doesn't support IR and SSIS
Event Hub Stable Not Supported -
Event Grid Stable Not Supported -
Health Bot Stable Not Supported -
Key Vault Stable Not Supported Doesn't support Azure Dedicated HSM
Log Analytics In development Not Supported Estimations doesn't include commitment tiers & logs retention
Logic Apps In development Not Supported Doesn't support ISE scale units
Maria DB Stable Not Supported -
Monitor In development Not Supported Alerts estimations doesn't include frequency / metrics count
Network Interface Stable Not Supported -
Network Security Group Stable Not Supported -
PostgreSQL Stable Not Supported Doesn't include Hyperscale being part of Cosmos DB
Public IP Address Stable Not Supported -
Public IP Address Prefixes Stable Not Supported -
Redis Stable Not Supported -
Sentinel In development Not Supported Estimations doesn't include commitment tiers
Service Bus Stable Not Supported Doesn't support Hybrid Connections and WCF Relay
SignalR Stable Not Supported -
SQL Database Stable Not Supported -
SQL Server Elastic Pools Stable Not Supported -
Static Web App Stable Not Supported -
Storage Account In development Not Supported Supports only StorageV2 (without File Service & Data Lake Storage)
Stream Analytics Stable Not Supported Stream Analytics on Edge requires separate estimation
Time Series Stable Not Supported -
Virtual Machine Stable Not Supported Supports Ax, Bx and Dx VM families
VMSS Stable Not Supported Supports the same VM families as Virtual Machines
Virtual Network Stable Supported -
VPN Gateway Stable Not Supported -

Contributions

Contributions are more than welcome!

Acknowledgements