cycloidio / terracost

Cloud cost estimation for Terraform in your CLI
MIT License
278 stars 29 forks source link

Support Azure resources #3

Open patrislav opened 3 years ago

patrislav commented 3 years ago

Planned

evhiness commented 3 years ago

Hello, has anyone begun work on this topic? I would like to work on this if this repository is still being maintained and you're still looking to add Azure. I see from the guide that new providers are discouraged.

I would like to implement windows and linux vms and managed disks at least.

Seraf commented 3 years ago

Hello @evhiness !

It would be a pleasure! This project is still maintained, and we are still looking to add Azure provider (and even more!). I will let my colleagues get back to you to give some guidance about implementation/discussions/help.

ev-hines commented 3 years ago

That would great! Looking forward to hearing back with some more information.

I'll get familiarized with the code base in the meantime.

ev-hines commented 3 years ago

So I went through the code base over the weekend and it seems that adding a new provider isn't all that difficult. If I understand correctly, I just need to write an ingester that returns a list of Product types from the Azure Price API. With that, it seems that a good portion of the more generic code inside the 'aws' folder could be reused across providers. Is the plan to fully rewrite the ingester/filter logic for each provider in order to stay flexible or would you be open to extracting out some of the more generic code?

xescugc commented 2 years ago

Hi @ev-hines sorry to respond that late hehe.

If I understand correctly, I just need to write an ingester that returns a list of Product types from the Azure Price API

Yes that's a big part of it as the rest relies on the data from the DB which was ingested using that.

You'll also need the terraform.ProviderInitializer and terraform.Provider, because it's needed by the 2 estimate functions.

Is the plan to fully rewrite the ingester/filter logic for each provider in order to stay flexible or would you be open to extracting out some of the more generic code?

If we see repeated code yes, but IMO I prefer to see first the repetition and then make the abstraction, so for now I would suggest to copy any needed code from AWS if you need. I have plan to potentially make some architectural changes but it's just on my mind for now haha.

If you want you can open a Draft PR if you want us to comment things directly on the code, if you still plan to do it.

We'll eventually do it but it's not on the top of the Pipeline of priorities for now, so be free do implement it if you want to :).

ev-hines commented 2 years ago

That sounds good. We are heavily invested in Azure and I think this tool would be helpful, especially as we do have some AWS footprint as well. Hopefully, I can begin working on it more seriously in the next couple of weeks.

ev-hines commented 2 years ago

Update: I recently switched positions to an AWS only organization so sadly I will not be able to make progress on this feature. :-(

xlr-8 commented 2 years ago

Update: I recently switched positions to an AWS only organization so sadly I will not be able to make progress on this feature. :-(

Thank you for letting us know! We are still lacking various resources for AWS, so feel free to take a look! :wink:

cbcoutinho commented 1 year ago

Azure has recently released a retail pricing API. You can determine the prices of various resources, with some limitations such as USD-only. It may be possible to use this as a reference

https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices