First, thank you for your interest in contributing to the Azure Provider! And if you're unsure or anything, please do reach out for help. You can open a draft pull request (PR) or an issue with what you know or join the Slack Workspace for Contributors (Request Invite) and we'll do our best to guide you in the right direction.
Note: this documentation is a work-in-progress - if you see something that's not quite right or missing, we'd really appreciate a PR!
This contribution guide assumes you have at least a basic understanding of both Go and Terraform itself (for example you know what a Data Source and a Resource are) - more information on those can be found in the Terraform documentation.
The AzureRM Provider is a Plugin which is invoked by Terraform (Core) and comprised of Data Sources and Resources.
Within the AzureRM Provider, these Data Sources and Resources are grouped into Service Packages - which are logical groupings of Data Sources/Resources based on the Azure Service they're related to.
Each of these Data Sources and Resources has both Acceptance Tests and Documentation associated with each Data Source/Resource - the Acceptance Tests are also located within this Service Package, however the Documentation exists within a dedicated folder.
More granular documentation covers how these fit together - and the most common types of contribution we see:
Basics:
- High-level overview of the Provider
- Building the Provider
- Running the Tests
- Debugging the Provider
- Frequently Asked Questions
- Opening a PR
Common Topics/Guides:
- Adding a new Service Package
- Adding a new Data Source
- Adding a new Resource
- Adding fields to an existing Data Source
- Adding fields to an existing Resource
- Adding State Migrations
- Breaking Changes and Deprecations
- When to create a new Resource vs Inline Block
References:
Maintainer specific: