Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[AVM Question/Feedback]: base provider AzAPI instead of AzureRM #149

Open
1 task done
Hi-Fi opened this issue Aug 16, 2024 · 3 comments
Open
1 task done

[AVM Question/Feedback]: base provider AzAPI instead of AzureRM #149

Hi-Fi opened this issue Aug 16, 2024 · 3 comments
Assignees
Labels
Language: Terraform 🌐 This is related to the Terraform IaC language Type: Question/Feedback 🙋 Further information is requested or just some feedback

Comments

@Hi-Fi
Copy link

Hi-Fi commented Aug 16, 2024

Check for previous/existing GitHub issues

  • I have checked for previous/existing GitHub issues

Description

This is more of common for all AVM modules, but we have lately seen quite a lot of issues with AzureRM when working with private endpoint. Many AzureRM resources try in creation time to access to dataplane, which then causes failures and strange things.

Not sure if it's considered, but should AVM modules rely more on AzAPI instead of AzureRM? This would also be beneficial if thinking of Bicep AVM modules, as then it's easy to see that both are at the same level and do same things.

Things related to AzureRM issues that have also come with AVM modules

@Hi-Fi Hi-Fi added Language: Terraform 🌐 This is related to the Terraform IaC language Needs: Triage 🔍 Maintainers need to triage still Type: Question/Feedback 🙋 Further information is requested or just some feedback labels Aug 16, 2024
@matt-FFFFFF
Copy link
Member

Hi!

I think the decision on the provider should be made by the module author. AzAPI v2.0 will be my preferred Azure provider due to the number of features making it into the next release.

How do you think we should handle the significant breaking change?

  • Publish a new module?
  • Manage using removed {} and import {} (removed could be in the module, but import would have to be external
  • Other ideas?

@matt-FFFFFF matt-FFFFFF removed the Needs: Triage 🔍 Maintainers need to triage still label Aug 16, 2024
@matt-FFFFFF matt-FFFFFF self-assigned this Aug 16, 2024
@Hi-Fi
Copy link
Author

Hi-Fi commented Aug 16, 2024

In a way all the AVM modules have kind of issue that name contains "AzureRM" even they already use both. So in that sense new module would be clearer, or then statement that "Azurerm in name is not referring to AzureRM provider". But this case would be against Terraform's naming convention.

Of couse it would be nice to be able to just update version without any manual state handling, but on the other hand modules are still at 0 major version where every change can be breaking one by definition.

So, if name is not an issue an it's possible to do the update "behind the scenes" with just module version changes, that would be nicest. But as that would be against naming convention, maybe renaming would be the best. Of course the migration could still be offered with removed and import if possibe and robust enough.

@kewalaka
Copy link

Its partly an issue of discoverability. People searching for AzureRM module may overlook the azapi option, and honestly the internals of a module should not matter too much - rather whether the input & output specs suits the desired level of abstraction and the functionality it provides.

Modules suffer from bikeshedding - its easy to look inside and get nervous about the complexity, or whether it uses azapi or not. By contrast, far fewer people look inside the provider, or Terraform source code, but treat it as a building block to achieve an outcome. Another concern I have is by highlighting a difference it will amplify prejudices.

It's a shame the registry makes any distinction between the two - but given the current state, I lean more towards using the azurerm name.

Having two module implementations per resource (one based on azurerm the other on azapi), seems like a lot of work, and smells slightly of unfortunate compromise to me - not sure how best to bridge from an existing azurerm-based module to an azapi one in a way that won't annoy people & give chance for real use feedback.

This one is tricky.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Language: Terraform 🌐 This is related to the Terraform IaC language Type: Question/Feedback 🙋 Further information is requested or just some feedback
Projects
None yet
Development

No branches or pull requests

3 participants