├── LICENSE ├── README.md ├── index.html ├── script.js └── style.css /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Digger 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Terraform Automation and Collaboration tools (TACOS) pricing calculator 2 | 3 | We created a TACOS (Terraform Automation and Collaboration Software) pricing calculator, and wanted to share it with the community. The inspiration to build this came from [this](https://www.reddit.com/r/Terraform/comments/13jgzc5/terraform_new_pricing/) reddit thread, where users of TF cloud complained about Hashicorp’s new [resource based pricing model](https://www.hashicorp.com/products/terraform/pricing). 4 | 5 | Here are some quotes from that thread above that sums it up: 6 | 7 | 8 | Here's one that speaks about how the new pricing model does not scale: 9 | 10 | 11 | >“I don’t think Hashicorp have thought about this at all. The page has been left extremely vague. What is incredibly stupid with this pricing model is that it doesn’t scale at all. 12 | > 13 | >With 600 managed resources across several TFC “prod” workspaces, the expected cost is $122 per year. That’s not unreasonable. But if I want to clone the “prod” workspaces to create “pre-prod”, I’ll be charged for 1200 managed resources. The expected isn’t 2x $122, but a massive $858.” 14 | \-- 15 | Your assessment of the pricing scale is correct. (Replying to another user who had stated that with TF cloud, “As you get larger, you pay more on average per resource.” 16 | > 17 | >600 resources costs $122/yr — 20c per resource per year. 18 | > 19 | >1200 resources costs $858/yr — 72c per resource per year. 20 | > 21 | >1800 resources costs $1595/yr — 89c per resource per year. 22 | > 23 | >2400 resources costs $2330/yr — 97c per resource per year. 24 | > 25 | >At 2700 resources, it’s $1 per resource per year. 26 | > 27 | >Hashicorp has designed a pricing model that encourages reducing your usage with TFC. Or becoming creative in the way you use organisations and the Free tier. 28 | > 29 | > 30 | > 31 | >\- r/toorightvegemite 32 | 33 | 34 | Another user mentioned why they would not recommend upgrading pricing tiers and how they are looking to migrate off of Terraform Cloud. 35 | 36 | 37 | 38 | 39 | >“Generally, I do NOT recommend it! (Upgrading to the new tier) 40 | > 41 | >It does depend on individual circumstances, I guess. If you only ever expect to provision less than 500 resources at any one time ever and don’t expect you will ever grow (ever (ever)), you might be better off. For everyone else, I would avoid it if you don’t need to. There are a few more new features available as well, such as no longer being limited to 5 users, SSO, Policy Enforcement and Run Tasks. 42 | > 43 | >Do note, however, that they didn’t ever say “upgrade”…the terminology used is “Migrate”. 44 | > 45 | >Whenever I am using a product and new features don’t automatically get added but you instead need to accept/migrate to a new plan option, I always expect I am losing something very important. I recommend considering very closely what is happening here. Of course, usually the writing is on the wall at that point IMHO, and it can just be a matter of time before something like this is forced upon everyone, rather than being optional. You can just never really know… 46 | > 47 | >This is why in my circumstances, I expect I will migrate state away from Terraform Cloud completely. I don’t think it makes sense in my use case anymore.” 48 | > 49 | > 50 | > 51 | >r/GregAndo 52 | 53 | We broadly observed the following: 54 | 55 | 56 | 1. Pricing per hour per resource meant that TF cloud would get prohibitively expensive for organisations at scale. 57 | 2. TF cloud users are looking for alternatives to move to so that their TF bill doesn't wreak havoc. 58 | 59 | 60 | This got us to think, since we ourselves are building an alternative. We ended up looking at pricing of several alternatives as a result. We decided that it would be a fun project to build a calculator to see what it would cost on different platforms. 61 | 62 | 63 | The tools the calculator currently covers are: Digger, Spacelift (only includes Cloud tier), Env0 (only includes pro tier) and Terraform Cloud (Only includes standard tier). The pricing for all of the above tools have been taken from publicly available data on their websites. 64 | 65 | This is a fun project built in just a day so please be kind if there are any inadvertant mistakes! 66 | 67 | Check it out [here](https://tacosprice.com/) 68 | 69 | 70 | PS: If you are building a TACO/ TF cloud alternative and want it to be added, feel free to create a PR! 71 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 8 |34 | Created by Digger - an Open Source Terraform Automation and Collaboration tool 35 |
36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /script.js: -------------------------------------------------------------------------------- 1 | function calculatePricing() { 2 | var resources = parseInt(document.getElementById('resources').value); 3 | var users = parseInt(document.getElementById('users').value); 4 | var runs = parseInt(document.getElementById('runs').value); 5 | var deployments = parseInt(document.getElementById('deployments').value); 6 | 7 | var result = document.getElementById('result'); 8 | 9 | var d1, d2, d3, d4; 10 | 11 | // Spacelift Formula (Middle Tier) 12 | if (users <= 5) { 13 | d1 = 250; 14 | } else { 15 | d1 = 250 + ((users - 5) * 10); 16 | } 17 | 18 | // TF Cloud Formula (Middle Tier) 19 | if (resources <= 500) { 20 | d2 = 0; 21 | } else { 22 | d2 = (resources - 500) * 0.00014 * 8760; 23 | // Pricing calculated per hour, per resource, per year. 24 | } 25 | // Env0 Formula (Middle Tier) 26 | if (users <= 10 && deployments <= 100) { 27 | d3 = 349; 28 | } else if (users <= 10 && deployments <= 200) { 29 | d3 = 599; 30 | } else if (users <= 50 && deployments <= 100) { 31 | d3 = 549; 32 | } else if (users <= 50 && deployments <= 200) { 33 | d3 = 799; 34 | } else { 35 | d3 = "You would have to talk to sales"; 36 | } 37 | 38 | // Digger Formula 39 | if (users <= 5) { 40 | d4 = 300; 41 | } else { 42 | d4 = 300 + ((users - 5) * 10); 43 | } 44 | 45 | let resultText = "" 46 | resultText += "TF Cloud Pricing: $" + d2.toFixed(2) + "\n"; 47 | resultText += "Spacelift Pricing: $" + d1 + "\n"; 48 | resultText += "Env0 Pricing: $" + d3 + "\n"; 49 | resultText += "Digger Pricing: $" + d4; 50 | result.textContent = resultText; 51 | } 52 | -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | body { 2 | font-family: Arial, sans-serif; 3 | margin: 20px; 4 | } 5 | 6 | h1 { 7 | text-align: center; 8 | } 9 | 10 | form { 11 | margin-bottom: 20px; 12 | } 13 | 14 | label { 15 | display: block; 16 | margin-bottom: 5px; 17 | } 18 | 19 | input[type="number"] { 20 | width: 100%; 21 | padding: 8px; 22 | font-size: 16px; 23 | } 24 | 25 | button[type="button"] { 26 | padding: 8px 16px; 27 | font-size: 16px; 28 | } 29 | 30 | #result { 31 | text-align: center; 32 | font-size: 18px; 33 | white-space: pre; 34 | } 35 | --------------------------------------------------------------------------------