Help & Support
Summary
This section provides information about AVM’s support.
This section provides information about AVM’s support.
This section provides information about the issue triage process and its automation, implemented across various AVM repositories.
This page provides guidance for members of the AVM Core Team on how to triage module proposals and generic issues filed in the AVM repository, as well as how to manage these GitHub issues throughout their lifecycle.
During the AVM Core Team Triage step, the following will be checked, completed and actioned by the AVM Core Team during their triage calls (which are currently twice per week).
Every module needs a module proposal to be created in the AVM repository.
During the triage process, the AVM Core Team should also check the status of following queries:
An issue is considered to be a module proposal if
Follow these steps to triage a module proposal:
Add the Status: In Triage 🔍 label to indicate you’re in the process of triaging the issue.
Check module proposal issue/form:
Proposed
” column on the AVM - Modules Triage GitHub project board.avm/res/sql/managed-instance
for a Bicep module, or avm-res-compute-virtualmachine
for a Terraform module.avm/res/sql/managed-instance
”avm-res-sql-managedinstance
”Apply relevant labels
As part of the triage of pattern modules, the following points need to be considered/clarified with the module requestor:
If requestor is interested in becoming a module owner, but is not a Microsoft FTE, the AVM core team will try to find a Microsoft FTE to be the module owner whom the requestor can collaborate with.
Looking for owners
” column on the AVM - Modules Triage GitHub project board.If the requestor indicated they want to become the module owner, the GitHub Policy Service Bot will add the Status: Owners Identified 🤘 label and will assign the issue to the requestor.
You MUST still confirm that the requestor is a Microsoft FTE and that they understand the implications of becoming the owner! If any of these conditions aren’t met, remove the Status: Owners Identified 🤘 label and unassign the issue from the requestor.
In development
” column on the AVM - Modules Triage GitHub Project board.Although, it’s not directly part of the module proposal triage process, to begin development, module owners and contributors might need additional help from the AVM core team, such as:
[Module Proposal]
issue that they have created the required -module-owners-
and -module-contributors-
GitHub teams.-module-owners-
and -module-contributors-
GitHub teams have been assigned to their respective parent teams as outlined here.CODEOWNERS
file in the BRM repo has been updated.AVM Module Issue template
file in the BRM repo has been updated.Once module is developed and v0.1.0
has been published to the relevant registry
Done
” column in AVM - Modules Triage GitHub Project.If a module meets the criteria described in the “Orphaned AVM Modules” chapter, the modules is considered to be orphaned and the below steps must be performed.
An issue is considered to be an orphaned module if
The original Module Proposal issue related to the module in question MUST remain closed and intact.
Instead, a new Orphaned Module issue must be opened that MUST remain open until the ownership is fully confirmed!
Once the Orphaned Module issue was closed, it MUST remain closed. If the module will subsequently become orphaned again, a new Orphaned Module issue must be opened.
Orphaned
” column on the AVM - Modules Triage GitHub Project board.ORPHANED.md
file, in the module’s root.utilities/tools/Set-AVMModule.ps1
utility with the module path as an input. This re-generates the module’s README.md
file, so that the README.md
file will also contain the same notice in its header.ORPHANED.md
file is displayed in the README.md
in its header (right after the title).README.md
file, in the module’s root.Include the following text in the information notice:
To look for Orphaned Modules:
Orphaned
swim lane on the Module Triage board.Done
” column on the AVM - Modules Triage GitHub Project board.-module-owners-
or -module-contributors-
teams. See SNFR20 for more details.⚠️THIS MODULE IS CURRENTLY ORPHANED.⚠️, etc.
):ORPHANED.md
file from the module’s root.utilities/tools/Set-AVMModule.ps1
utility with the module path as an input. This re-generates the module’s README.md
file, so that it will no longer contain the orphaned module notice in its header.README.md
file no longer has the information notice in its header (right after the title).README.md
file in the module’s root.An issue is a “General Question/Feedback ❔” if it was opened through the “General Question/Feedback ❔” issue template, and has the labels of Type: Question/Feedback 🙋♀️ and Needs: Triage 🔍 applied to it.
An issue is a “AVM Documentation Update 📘” if it was opened through the “AVM Documentation Update 📘” issue template, and has the labels of Type: Documentation 📄 and Needs: Triage 🔍 applied to it.
An issue is considered to be a “standard issue” or “blank issue” if it was opened without using an issue template, and hence it does NOT have any labels assigned, OR only has the Needs: Triage 🔍 label assigned.
When triaging the issue, consider adding one of the following labels as fits:
To see the full list of available labels, please refer to the GitHub Repo Labels section.
If an intended module proposal was mistakenly opened as a “General Question/Feedback ❔” or other standard issue, and hence, it doesn’t have the Type: New Module Proposal 💡 label associated to it, a new issue MUST be created using the “New AVM Module Proposal 📝” issue template. The mistakenly created “General Question/Feedback ❔” or other standard issue MUST be closed.
This page provides guidance for Bicep module owners on how to triage AVM module issues and AVM question/feedback items filed in the BRM repository (Bicep Registry Modules repository - where all Bicep AVM modules are published), as well as how to manage these GitHub issues throughout their lifecycle.
As such, the following issues are to be filed in the BRM repository:
Do NOT file the following types of issues in the BRM repository, as they MUST be tracked in the AVM repo:
Every module needs a module proposal to be created in the AVM repository.
During the triage process, module owners are expected to check, complete and follow up on the items described in the sections below.
Module owners MUST meet the SLAs defined on the Module Support page! While there’s automation in place to support meeting these SLAs, module owners MUST check for new issues on a regular basis.
The BRM repository includes other, non-AVM modules and related GitHub issues. As a module owner, make sure you’re only triaging, managing or otherwise working on issues that are related to AVM modules!
An issue is considered to be an “AVM module issue” if
Module issues can only be opened for existing AVM modules. Module issues MUST NOT be used to file a module proposal.
If the issue was opened as a misplaced module proposal, mention the @Azure/AVM-core-team-technical-bicep
team in the comment section and ask them to move the issue to the AVM repository.
fix:
or feat:
is the most common for module related changes.An issue is considered to be an “AVM Question/Feedback” if
An issue is considered to be a “standard issue” or “blank issue” if it was opened without using an issue template, and hence it does NOT have any labels assigned, OR only has the Needs: Triage 🔍 label assigned.
When triaging the issue, consider adding one of the following labels as fits:
To see the full list of available labels, please refer to the GitHub Repo Labels section.
If an intended module proposal was mistakenly opened as a “AVM Question/Feedback ❔” or other standard issue, a new issue MUST be created in the AVM repo using the “New AVM Module Proposal 📝” issue template. The mistakenly created “AVM Question/Feedback ❔” or other standard issue MUST be closed.
This page details the automation that is in place to help with the triage of issues and PRs raised against the AVM modules.
This section details all automation rules that are based on a schedule.
When calculating the number of business days in the issue/triage automation, the built-in logic considers Monday-Friday as business days. The logic doesn’t consider any holidays.
If a bug/feature/request/general question that has the labels of Type: AVM 🅰️ ✌️ ⓜ️ and Needs: Triage 🔍 is not responded to after 3 business days, then the issue will be marked with the Status: Response Overdue 🚩 label and the AVM Core team will be mentioned in a comment on the issue to reach out to the module owner.
Schedule:
Trigger criteria:
Action(s):
Azure/avm-core-team-technical-bicep
team.If a bug/feature/request/general question that has the Needs: Triage 🔍 label added is not responded to after 3 business days, then the issue will be marked with the Status: Response Overdue 🚩 label and the AVM Core team will be mentioned in a comment on the issue to reach out to the module owner.
Schedule:
Trigger criteria:
Action(s):
Azure/avm-core-team-technical-bicep
team.If after an additional 3 business days there’s still no update to the issue that has the labels of Type: AVM 🅰️ ✌️ ⓜ️ and Status: Response Overdue 🚩 , the AVM core team will be mentioned on the issue and a further comment stating module owner is unresponsive will be added. The Needs: Immediate Attention ‼️ label will also be added.
Schedule:
Trigger criteria:
Action(s):
Azure/avm-core-team-technical-bicep
team.If after an additional 3 business days there’s still no update to the issue that has the Status: Response Overdue 🚩 label added, the AVM core team will be mentioned on the issue and a further comment stating module owner is unresponsive will be added. The Needs: Immediate Attention ‼️ label will also be added.
Schedule:
Trigger criteria:
Action(s):
Azure/avm-core-team-technical-bicep
team.If there’s still no response after 5 days (total from start of issue being raised) on an issue that has the labels of Type: AVM 🅰️ ✌️ ⓜ️ , Needs: Triage 🔍 , Type: Security Bug 🔒 and Status: Response Overdue 🚩 , the Bicep PG GitHub Team will be mentioned on the issue to assist. The Needs: Immediate Attention ‼️ label will also be added.
Schedule:
Trigger criteria:
Action(s):
Azure/bicep-admins
team.If there’s still no response after 5 days (total from start of issue being raised) on an issue that has the labels of Needs: Triage 🔍 , Type: Security Bug 🔒 and Status: Response Overdue 🚩 , the Terraform PG GitHub Team will be mentioned on the issue to assist. The Needs: Immediate Attention ‼️ label will also be added.
Schedule:
Trigger criteria:
Action(s):
Azure/terraform-avm
team.If an issue/PR has been labelled with Needs: Author Feedback 👂 and hasn’t had a response in 4 days, label with Status: No Recent Activity 💤 and add a comment.
Schedule:
Trigger criteria:
Action(s):
To prevent further actions to take effect, one of the following conditions must be met:
This rule is currently disabled in the AVM and BRM repositories.
If an issue/PR has been labelled with Status: No Recent Activity 💤 and hasn’t had any update in 3 days from that point, automatically close it and comment, unless the issue/PR has a Status: Long Term ⏳ - in which case, do not close it.
Schedule:
Trigger criteria:
Action(s):
Remind module owner(s) to start or continue working on this module if there was no activity on the Module Proposal issue for more than 3 weeks. Add Needs: Attention 👋 label.
Schedule:
Trigger criteria:
Action(s):
This chapter details all automation rules that are based on an event.
When a new issue or PR of any type is created add the Needs: Triage 🔍 label.
Trigger criteria:
Action(s):
If AVM or “Azure Verified Modules” is mentioned in an uncategorized issue (i.e., one not using any template), apply the label of Type: AVM 🅰️ ✌️ ⓜ️ on the issue.
Trigger criteria:
Action(s):
When #RR is used in an issue, add the label of Needs: Author Feedback 👂 .
Trigger criteria:
Action(s):
When #wontfix is used in an issue, mark it by using the label of Status: Won’t Fix 💔 and close the issue.
Trigger criteria:
Action(s):
When the author replies, remove the Needs: Author Feedback 👂 label and label with Needs: Attention 👋 .
Trigger criteria:
Action(s):
Clean up e-mail replies to GitHub Issues for readability.
Trigger criteria:
Action(s):
If the language is set to Bicep in the Module proposal, add the Language: Bicep 💪 label on the issue.
Trigger criteria:
### Bicep or Terraform?
Bicep
Action(s):
If the language is set to Terraform in the Module proposal, add the Language: Terraform 🌐 label on the issue.
Trigger criteria:
### Bicep or Terraform?
Terraform
Action(s):
Remove the Needs: Triage 🔍 label from a PR, if it already has a “Type: XYZ label added and is assigned to someone at the time of creating it.
Trigger criteria:
Action(s):
Add the Status: Owners Identified 🤘 label when someone is assigned to a Module Proposal.
Trigger criteria:
Action(s):
If the issue author says they want to be the module owner, assign the issue to the author and respond to them.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Do you want to be the owner of this module?
Yes
Action(s):
Assign the issue to the author.
Add the below reply and explain the action(s).
@${issueAuthor}, thanks for volunteering to be a module owner!
**Please don't start the development just yet!**
The AVM core team will review this module proposal and respond to you first. Thank you!
Send automatic response to the issue author if they don’t want to be module owner and don’t have any candidate in mind. Add the Needs: Module Owner 📣 label.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Do you want to be the owner of this module?
No
### Module Owner's GitHub Username (handle)
_No response_
Action(s):
Add the Needs: Module Owner 📣 label.
Add the below reply and explain the action(s).
@${issueAuthor}, thanks for submitting this module proposal!
The AVM core team will review it and will try to find a module owner.
Send automatic response to the issue author if they don’t want to be module owner but have a candidate in mind. Add the Status: Owners Identified 🤘 label.
Trigger criteria:
An issue is opened with its body matching the below pattern…
### Do you want to be the owner of this module?
No
…AND NOT matching the below pattern.
### Module Owner's GitHub Username (handle)
_No response_
Action(s):
Add the Status: Owners Identified 🤘 label.
Add the below reply and explain the action(s).
@${issueAuthor}, thanks for submitting this module proposal with a module owner in mind!
**Please don't start the development just yet!**
The AVM core team will review this module proposal and respond to you and/or the module owner first. Thank you!
If the issue type is feature request, add the Type: Feature Request ➕ label on the issue.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Issue Type?
Feature Request
Action(s):
If the issue type is bug, add the Type: Bug 🐛 label on the issue.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Issue Type?
Bug
Action(s):
If the issue type is security bug, add the Type: Security Bug 🔒 label on the issue.
Trigger criteria:
An issue is opened with its body matching the below pattern.
### Issue Type?
Security Bug
Action(s):
Remove the Status: In PR 👉 label from an issue when it’s closed.
Trigger criteria:
Action(s):
Inform module owners that they need to add the Needs: Core Team 🧞 label to their PR if they’re the sole owner of their module.
Trigger criteria:
Action(s):
Inform module owners that they need to add the Needs: Core Team 🧞 label to their PR if they’re the sole owner of their module.
The below table details which repositories the above rules are applied to.
ID | AVM Core repository | BRM repository | TF repositories |
---|---|---|---|
ITA01BCP1-2 | ✔️ | ||
ITA01TF1-2 | ✔️ | ||
ITA02BCP1-2 | ✔️ | ||
ITA02TF1-2 | ✔️ | ||
ITA03BCP | ✔️ | ||
ITA03TF | ✔️ | ||
ITA04 | ✔️ | ✔️ | ✔️ |
ITA05 | [✔️] | [✔️] | ✔️ |
ITA24 | ✔️ |
The ITA05 rule is currently disabled in the AVM and BRM repositories.
ID | AVM Core repository | BRM repository | TF repositories |
---|---|---|---|
ITA06 | ✔️ | ✔️ | ✔️ |
ITA08BCP | ✔️ | ||
ITA09 | ✔️ | ✔️ | ✔️ |
ITA10 | ✔️ | ✔️ | ✔️ |
ITA11 | ✔️ | ✔️ | ✔️ |
ITA12 | ✔️ | ✔️ | ✔️ |
ITA13 | ✔️ | ||
ITA14 | ✔️ | ||
ITA15 | ✔️ | ✔️ | ✔️ |
ITA16 | ✔️ | ||
ITA17 | ✔️ | ||
ITA18 | ✔️ | ||
ITA19 | ✔️ | ||
ITA20 | ✔️ | ✔️ | |
ITA21 | ✔️ | ✔️ | |
ITA22 | ✔️ | ✔️ | |
ITA23 | ✔️ | ✔️ | |
ITA25 | ✔️ |
This page provides guidance for Terraform Module owners on how to triage AVM module issues and AVM question/feedback items filed in their Terraform Module Repo(s), as well as how to manage these GitHub issues throughout their lifecycle.
The following issues can be filed in a Terraform repository:
Do NOT file the following types of issues in a Terraform repository, as they MUST be tracked in the AVM repo:
Every module needs a module proposal to be created in the AVM repository.
During the triage process, module owners are expected to check, complete and follow up on the items described in the sections below.
Module owners MUST meet the SLAs defined on the Module Support page! While there’s automation in place to support meeting these SLAs, module owners MUST check for new issues on a regular basis.
An issue is considered to be an “AVM module issue” if
Module issues can only be opened for existing AVM modules. Module issues MUST NOT be used to file a module proposal.
If the issue was opened as a misplaced module proposal, mention the @Azure/AVM-core-team-technical-terraform
team in the comment section and ask them to move the issue to the AVM repository.
An issue is considered to be an “AVM Question/Feedback” if
When triaging the issue, consider adding one of the following labels as fits:
To see the full list of available labels, please refer to the GitHub Repo Labels section.
If an intended module proposal was mistakenly opened as a “AVM Question/Feedback ❔” or other standard issue, a new issue MUST be created in the AVM repo using the “New AVM Module Proposal 📝” issue template. The mistakenly created “AVM Question/Feedback ❔” or other standard issue MUST be closed.
Unfortunately, there will be times where issues are out of the AVM core team and module owners/contributor’s control and the issue may be something that has to be lived with for a longer than ideal duration - for example, in case of changes that are due to the way the Azure platform, or a resource behaves, or because of an IaC language issue.
This page will detail any of the known issues that consumers may come across when using AVM modules and provide links to learn more about them and where to get involved in discussions on these known issues with the rest of the community.
Issues related to an AVM module must be raised on the repo they are hosted on, not the AVM Central (Azure/Azure-Verified-Modules
) repo!
Although, if you think a known issue is missing from this page please create an issue on the AVM Central Azure/Azure-Verified-Modules
repo.
If you accidentally raise an issue in the wrong place, we will transfer it to its correct home. 👍
Bicep/ARM What-If has a known issue today where it short-circuits whenever a runtime function is used in a nested template. And due to the way Bicep modules work, all module declarations in a Bicep file end up as a resulting nested template deployment in the underlying generated ARM template, thereby invoking this known issue.
The ARM/Bicep Product Group has recently announced on the issue that they are making progress in this space and are aiming provide a closer ETA in the near future; see the comment here.
While this isn’t an AVM issue, we understand that consumers of AVM Bicep modules may want to use what-if
and are running into this known issue. Please keep adding your support to the issue mentioned above (Azure/arm-template-whatif #157
), as the Product Group are actively engaging in the discussion there. 👍
Currently there are no known issues for AVM Terraform modules. 🥳
As mentioned on the Overview page, we understand that long-term support from Microsoft in an initiative like AVM is critical to its adoption by consumers and therefore the success of AVM. Therefore we have aligned and provide the below support statement/process for AVM modules.
Issues with an AVM module should be raised on the repo they are hosted on, not the AVM Central (Azure/Azure-Verified-Modules
) repo!
Not an issue if you raise in the wrong place, we will transfer it to it’s correct home 👍
Azure Verified Modules are supported by the AVM teams, as defined here, using GitHub issues in the following order of precedence:
Please note that the durations stated above are for a reasonable and useful response towards resolution of the issue raised, if possible, and not for a fix within these durations; although if possible this will of course happen.
All of this will be automated via the use of the Resource Management feature of the Microsoft GitHub Policy Service and GitHub Actions, where possible and appropriate.
Modules that have to have the AVM core team or Product Groups step in due to the module owners/contributors not responding, the AVM module will become “orphaned”; see Module Lifecycle for more info.
You can also raise a ticket with Microsoft CSS (Microsoft Customer Services & Support) and your ticket will be triaged by them for any platform issues and if deemed not the platform but a module issue, it will be redirected to the AVM team and the module owner(s).
Microsoft uses the approach detailed in this section to identify the deployments of the AVM Modules. Microsoft collects this information to provide the best experiences with their products and to operate their business. Telemetry data is captured through the built-in mechanisms of the Azure platform; therefore, it never leaves the platform, providing only Microsoft with access. Deployments are identified through a specific GUID (Globally Unique ID), indicating that the code originated from AVM. The data is collected and governed by Microsoft’s privacy policies, located at the Trust Center.
Telemetry collected as described here does not provide Microsoft with insights into the resources deployed, their configuration or any customer data stored in or processed by Azure resources deployed by using code from AVM. Microsoft does not track the usage/consumption of individual resources using telemetry described here.
While telemetry gathered as described here is only accessible by Microsoft. Bicep customers have access to the exact same deployment information on the Azure portal, under the Deployments section of the corresponding scope (Resource Group, Subscription, etc.). Terraform customers can view the information sent in the main.telemetry.tf
file.
See View deployment history with Azure Resource Manager for further information on how.
As detailed in SFR3 each AVM module contains a avmTelemetry
deployment, which creates a deployment such as 46d3xbcp.res.compute-virtualmachine.1-2-3.eum3
(for Bicep) or 46d3xgtf.res.compute-virtualmachine.1-2-3.eum3
(for Terraform).
Albeit telemetry described in this section is optional, the implementation follows an opt-out logic, as most commercial software solutions, this project also requires continuously demonstrating evidence of usage, hence the AVM core team recommends leaving the telemetry setting on its default, enabled configuration.
This resource enables the AVM core team to query the number of deployments of a given module from Azure - and as such, get insights into its adoption.
To opt out you can set the parameters/variables listed below to false
in the AVM module:
enableTelemetry
enable_telemetry
Though similar in principles, this approach is not to be confused and does not conflict with the usage of CUA IDs that are used to track Azure customer usage attribution of Azure marketplace solutions (partner solutions). The GUID-based telemetry approach described here can coexist and can be used side-by-side with CUA IDs. If you have any partner or customer scenarios that require the addition of CUA IDs, you can customize the AVM modules by adding the required CUA ID deployment while keeping the built-in telemetry solution.
If you’re a partner and want to build a solution that tracks customer usage attribution (using a CUA ID), we recommend implementing it on the consuming template’s level (i.e., the multi-module solution, such as workload/application) and apply the required naming format 'pid-'
(without the suffix).