Repository Creation Process
Important
This page is for module owners only. If you are an external contributor, skip to the contribution flow.
Important
If this process is not followed exactly, it may result in your repository and any in-progress code being permanently deleted.
1. Add yourself to the Module Owners Team and Open Source orgs
If you have already completed these steps, skip to step 2.
- Open the Open Source Portal and ensure your GitHub account is linked to your Microsoft account.
- Open the Open Source Portal and ensure you are a member of the
AzureandMicrosoftorganizations. - Navigate to Core Identity and request access to the
Azure Verified Module Owners Terraformentitlement.
Info
Until your entitlement request is approved, you can contribute by using JIT elevation.
2. Gather repository information
You’ll need the following from the module request issue:
| Information | Description |
|---|---|
| Module name | Format: avm-<type>-<name> (e.g. avm-res-network-virtualnetwork) |
| Module owner GitHub handle | Your GitHub handle |
| Module owner display name | Firstname Lastname |
| Module description | Auto-prefixed with Terraform Azure Verified <module-type> Module for ... |
| Resource provider namespace | Resource modules only (e.g. Microsoft.Network) |
| Resource type | Resource modules only (e.g. virtualNetworks) |
| Alternative names | Optional comma-separated list |
| Secondary owner handle | Optional |
| Secondary owner display name | Optional |
3. Create the repository
Prerequisites:
- Latest Terraform CLI
- Latest Azure CLI
- Latest PowerShell Core
- GitHub CLI
Clone and prepare
cd ~
git clone "https://github.com/Azure/avm-terraform-governance"
cd ./avm-terraform-governance/tf-repo-mgmtAuthenticate
# GitHub CLI
gh auth login -h "github.com" -w -p "https" -s "delete_repo" -s "workflow" -s "read:user" -s "user:email"
# Azure CLI (if not already logged in)
az login --scope https://graph.microsoft.com/.default --allow-no-subscriptionsRun the creation script
if(!(Test-Path -Path "./scripts/New-Repository.ps1")) {
Write-Error "This script must be run from the tf-repo-mgmt directory."
exit 1
}
# Required Inputs
$moduleProvider = "azurerm" # Allowed: azurerm, azapi, azure
$moduleName = "<module name>" # e.g. avm-res-network-virtualnetwork
$moduleDisplayName = "<module description>"
$resourceProviderNamespace = "" # Leave empty for Pattern/Utility modules
$resourceType = "" # Leave empty for Pattern/Utility modules
$ownerPrimaryGitHubHandle = "<github handle>"
$ownerPrimaryDisplayName = "<display name>"
# Optional
$moduleAlternativeNames = ""
$ownerSecondaryGitHubHandle = ""
$ownerSecondaryDisplayName = ""
./scripts/New-Repository.ps1 `
-moduleProvider $moduleProvider `
-moduleName $moduleName `
-moduleDisplayName $moduleDisplayName `
-resourceProviderNamespace $resourceProviderNamespace `
-resourceType $resourceType `
-ownerPrimaryGitHubHandle $ownerPrimaryGitHubHandle `
-ownerPrimaryDisplayName $ownerPrimaryDisplayName `
-moduleAlternativeNames $moduleAlternativeNames `
-ownerSecondaryGitHubHandle $ownerSecondaryGitHubHandle `
-ownerSecondaryDisplayName $ownerSecondaryDisplayNameComplete Open Source Portal Setup
The script will pause and prompt you to configure the Open Source Portal. Follow the link in the script output.
Return to the terminal and type yes to complete repository configuration.
The script will automatically:
- Create a PR to add module metadata to the
avm-terraform-governancerepository. - Create an issue to install the
Azure Verified ModulesGitHub App.
4. Update the issue status
- Add the Status: Repository Created 📄 label.
- Remove the Status: Ready For Repository Creation 📝 label if present.
5. Wait for the GitHub App
Once installed (usually within 24 hours), the environment sync runs automatically at 15:30 UTC on weekdays to complete the repository setup.