diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 72c8f8e..4ab9367 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,3 +1,3 @@ # AVM core team owns key files -.github/policies/ @Azure/avm-core-team-technical -.github/CODEOWNERS @Azure/avm-core-team-technical +.github/policies/ @Azure/avm-core-team-technical-terraform +.github/CODEOWNERS @Azure/avm-core-team-technical-terraform diff --git a/.github/ISSUE_TEMPLATE/avm_module_issue.yml b/.github/ISSUE_TEMPLATE/avm_module_issue.yml index 8b05245..ec5d7a9 100644 --- a/.github/ISSUE_TEMPLATE/avm_module_issue.yml +++ b/.github/ISSUE_TEMPLATE/avm_module_issue.yml @@ -27,7 +27,6 @@ body: - "" - "Feature Request" - "Bug" - - "Security Bug" - "I'm not sure" validations: required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1346202..534ea7d 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -16,11 +16,11 @@ Closes #456 - [ ] Non-module change (e.g. CI/CD, documentation, etc.) - [ ] Azure Verified Module updates: - - [ ] Bugfix containing backwards compatible bug fixes, and I have NOT bumped the MAJOR or MINOR version in `locals.version.tf.json`: + - [ ] Bugfix containing backwards compatible bug fixes - [ ] Someone has opened a bug report issue, and I have included "Closes #{bug_report_issue_number}" in the PR description. - [ ] The bug was found by the module author, and no one has opened an issue to report it yet. - - [ ] Feature update backwards compatible feature updates, and I have bumped the MINOR version in `locals.version.tf.json`. - - [ ] Breaking changes and I have bumped the MAJOR version in `locals.version.tf.json`. + - [ ] Feature update backwards compatible feature updates. + - [ ] Breaking changes. - [ ] Update to documentation # Checklist diff --git a/.github/policies/eventResponder.yml b/.github/policies/eventResponder.yml index 1d5ba40..bad111d 100644 --- a/.github/policies/eventResponder.yml +++ b/.github/policies/eventResponder.yml @@ -17,18 +17,6 @@ configuration: then: - addLabel: label: "Needs: Triage :mag:" - - addReply: - reply: | - > [!IMPORTANT] - > **The "Needs: Triage :mag:" label must be removed once the triage process is complete!** - - - - > [!NOTE] - > This label was added as per [ITA06](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita06). - description: 'ITA09 - When #RR is used in an issue, add the "Needs: Author Feedback :ear:" label' if: @@ -43,10 +31,6 @@ configuration: then: - addLabel: label: "Needs: Author Feedback :ear:" - - addReply: - reply: | - > [!NOTE] - > The "Needs: Author Feedback :ear:" label was added as per [ITA09](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita09). - description: 'ITA10 - When #wontfix is used in an issue, mark it by using the label of "Status: Won''t Fix :broken_heart:"' if: @@ -62,10 +46,6 @@ configuration: - addLabel: label: "Status: Won't Fix :broken_heart:" - closeIssue - - addReply: - reply: | - > [!NOTE] - > The "Status: Won't Fix :broken_heart:" label was added and the issue was closed as per [ITA10](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita10). - description: 'ITA11 - When a reply from anyone to an issue occurs, remove the "Needs: Author Feedback :ear:" label and label with "Needs: Attention :wave:"' if: @@ -82,10 +62,6 @@ configuration: label: "Needs: Author Feedback :ear:" - addLabel: label: "Needs: Attention :wave:" - - addReply: - reply: | - > [!NOTE] - > The "Needs: Author Feedback :ear:" label was removed and the "Needs: Attention :wave:" label was added as per [ITA11](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita11). - description: "ITA12 - Clean email replies on every comment" if: @@ -113,16 +89,10 @@ configuration: label: "Type: New Module Proposal :bulb:" - hasLabel: label: "Type: Question/Feedback :raising_hand:" - - hasLabel: - label: "Type: Security Bug :lock:" - isAssignedToSomeone then: - removeLabel: label: "Needs: Triage :mag:" - - addReply: - reply: | - > [!NOTE] - > The "Needs: Triage :mag:" label was removed as per [ITA15](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita15). - description: 'ITA20 - If the type is feature request, add the "Type: Feature Request :heavy_plus_sign:" label on the issue' if: @@ -140,10 +110,6 @@ configuration: then: - addLabel: label: "Type: Feature Request :heavy_plus_sign:" - - addReply: - reply: | - > [!NOTE] - > The "Type: Feature Request :heavy_plus_sign:" label was added as per [ITA20](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita20). - description: 'ITA21 - If the type is bug, add the "Type: Bug :bug:" label on the issue' if: @@ -161,32 +127,6 @@ configuration: then: - addLabel: label: "Type: Bug :bug:" - - addReply: - reply: | - > [!NOTE] - > The "Type: Bug :bug:" label was added as per [ITA21](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita21). - - - description: 'ITA22 - If the type is security bug, add the "Type: Security Bug :lock:" label on the issue' - if: - - payloadType: Issues - - isAction: - action: Opened - - bodyContains: - pattern: | - ### Issue Type? - - Security Bug - - not: - hasLabel: - label: "Type: Security Bug :lock:" - then: - - addLabel: - label: "Type: Security Bug :lock:" - - addReply: - reply: | - > [!NOTE] - > The "Type: Security Bug :lock:" label was added as per [ITA22](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita22). - - description: 'ITA23 - Remove the "Status: In PR" label from an issue when it''s closed.' if: @@ -198,7 +138,3 @@ configuration: then: - removeLabel: label: "Status: In PR :point_right:" - - addReply: - reply: | - > [!NOTE] - > The "Status: In PR :point_right:" label was removed as per [ITA23](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita23). diff --git a/.github/policies/scheduledSearches.yml b/.github/policies/scheduledSearches.yml index 452cca7..3b4b468 100644 --- a/.github/policies/scheduledSearches.yml +++ b/.github/policies/scheduledSearches.yml @@ -36,9 +36,6 @@ configuration: > [!TIP] > - To prevent further actions to take effect, the "Status: Response Overdue 🚩" label must be removed, once this issue has been responded to. > - To avoid this rule being (re)triggered, the ""Needs: Triage :mag:" label must be removed as part of the triage process (when the issue is first responded to)! - - > [!NOTE] - > This message was posted as per [ITA01TF](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita01tf1-2). - addLabel: label: "Status: Response Overdue :triangular_flag_on_post:" @@ -68,9 +65,6 @@ configuration: > [!TIP] > - To prevent further actions to take effect, the "Status: Response Overdue 🚩" label must be removed, once this issue has been responded to. > - To avoid this rule being (re)triggered, the ""Needs: Triage :mag:" label must be removed as part of the triage process (when the issue is first responded to)! - - > [!NOTE] - > This message was posted as per [ITA01TF](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita01tf1-2). - addLabel: label: "Status: Response Overdue :triangular_flag_on_post:" - assignTo: @@ -105,9 +99,6 @@ configuration: > [!TIP] > - To avoid this rule being (re)triggered, the "Needs: Triage :mag:" and "Status: Response Overdue :triangular_flag_on_post:" labels must be removed when the issue is first responded to! > - Remove the "Needs: Immediate Attention :bangbang:" label once the issue has been responded to. - - > [!NOTE] - > This message was posted as per [ITA02TF](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita02tf1-2). - addLabel: label: "Needs: Immediate Attention :bangbang:" @@ -137,9 +128,6 @@ configuration: > [!TIP] > - To avoid this rule being (re)triggered, the "Needs: Triage :mag:" and "Status: Response Overdue :triangular_flag_on_post:" labels must be removed when the issue is first responded to! > - Remove the "Needs: Immediate Attention :bangbang:" label once the issue has been responded to. - - > [!NOTE] - > This message was posted as per [ITA02TF](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita02tf1-2). - addLabel: label: "Needs: Immediate Attention :bangbang:" @@ -182,9 +170,6 @@ configuration: > [!TIP] > - To avoid this rule being (re)triggered, the "Needs: Triage :mag:" and "Status: Response Overdue :triangular_flag_on_post:" labels must be removed when the issue is first responded to! > - Remove the "Needs: Immediate Attention :bangbang:" label once the issue has been responded to. - - > [!NOTE] - > This message was posted as per [ITA03TF](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita03tf). - addLabel: label: "Needs: Immediate Attention :bangbang:" - assignTo: @@ -213,15 +198,6 @@ configuration: > [!IMPORTANT] > @${issueAuthor}, this issue has been automatically marked as stale because it has been marked as requiring author feedback but has not had any activity for **4 days**. It will be closed if no further activity occurs **within 3 days of this comment**. - > [!TIP] - > To prevent further actions to take effect, one of the following conditions must be met: - > - The author must respond in a comment within 3 days of this comment. - > - The "Status: No Recent Activity :zzz:" label must be removed. - > - If applicable, the "Status: Long Term :hourglass_flowing_sand:" or the "Needs: Module Owner :mega:" label must be added. - - > [!NOTE] - > This message was posted as per [ITA04](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita04). - - description: 'ITA05A - Close issues that have been marked as requiring author feedback but have not had any activity for 3 days, unless it''s been marked with the "Status long term" label.' frequencies: - hourly: @@ -242,12 +218,6 @@ configuration: reply: | > [!WARNING] > @${issueAuthor}, this issue will now be closed, as it has been marked as requiring author feedback but has not had any activity for **7 days**. - - > [!TIP] - > In case this issue needs to be reopened (e.g., the author responds after the issue was closed), the "Status: No Recent Activity :zzz:" label must be removed. - - > [!NOTE] - > This message was posted as per [ITA05](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita05). - closeIssue - description: 'ITA05B - Close issues that have been marked as requiring author feedback but have not had any activity for 3 days, unless it''s been marked with the "Status long term" label.' @@ -270,10 +240,4 @@ configuration: reply: | > [!WARNING] > @${issueAuthor}, this issue will now be closed, as it has been marked as requiring author feedback but has not had any activity for **7 days**. - - > [!TIP] - > In case this issue needs to be reopened (e.g., the author responds after the issue was closed), the "Status: No Recent Activity :zzz:" label must be removed. - - > [!NOTE] - > This message was posted as per [ITA05](https://azure.github.io/Azure-Verified-Modules/help-support/issue-triage/issue-triage-automation/#ita05). - closeIssue diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 9bfb58d..51a7427 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -18,7 +18,7 @@ jobs: outputs: examples: ${{ steps.getexamples.outputs.examples }} steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 #v4.1.2 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 - name: get examples id: getexamples uses: Azure/terraform-azurerm-avm-template/.github/actions/e2e-getexamples@main @@ -38,7 +38,7 @@ jobs: example: ${{ fromJson(needs.getexamples.outputs.examples) }} fail-fast: false steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 #v4.1.2 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 - name: Test example shell: bash diff --git a/.github/workflows/linting.yml b/.github/workflows/linting.yml index 95aa5f4..254164d 100644 --- a/.github/workflows/linting.yml +++ b/.github/workflows/linting.yml @@ -21,7 +21,7 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout repository - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 #v4.1.2 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 - name: check docs uses: Azure/terraform-azurerm-avm-template/.github/actions/docs-check@main @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: checkout repository - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 #v4.1.2 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 - name: lint terraform uses: Azure/terraform-azurerm-avm-template/.github/actions/linting@main @@ -40,12 +40,18 @@ jobs: github-token: ${{ secrets.GITHUB_TOKEN }} avmfix: - if: github.event.repository.name != 'terraform-azurerm-avm-template' && false + if: github.event.repository.name != 'terraform-azurerm-avm-template' name: avmfix runs-on: ubuntu-latest steps: - name: checkout repository - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 #v4.1.2 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 - name: avmfix uses: Azure/terraform-azurerm-avm-template/.github/actions/avmfix@main + + lintcomplete: + needs: [docs, terraform, avmfix] + runs-on: ubuntu-latest + steps: + - run: echo "All linting checks passed" diff --git a/.github/workflows/version-check.yml b/.github/workflows/version-check.yml index 8e3e0fd..c117502 100644 --- a/.github/workflows/version-check.yml +++ b/.github/workflows/version-check.yml @@ -16,7 +16,7 @@ jobs: if: github.event.repository.name != 'terraform-azurerm-avm-template' runs-on: ubuntu-latest steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 #v4.1.2 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 #v4.1.7 - name: Check version uses: Azure/terraform-azurerm-avm-template/.github/actions/version-check@main with: diff --git a/.gitignore b/.gitignore index 6450506..17c784d 100644 --- a/.gitignore +++ b/.gitignore @@ -46,3 +46,5 @@ avm.tflint_example.hcl .DS_Store avm.tflint.merged.hcl avm.tflint_example.merged.hcl +avm.tflint_module.hcl +avm.tflint_module.merged.hcl diff --git a/.terraform-docs.yml b/.terraform-docs.yml index dd5d16b..0587077 100644 --- a/.terraform-docs.yml +++ b/.terraform-docs.yml @@ -23,8 +23,6 @@ content: |- {{ .Requirements }} - {{ .Providers }} - {{ .Resources }} diff --git a/README.md b/README.md index 1a1f525..8af2f50 100644 --- a/README.md +++ b/README.md @@ -28,17 +28,9 @@ The following requirements are needed by this module: - [azapi](#requirement\_azapi) (>= 1.9.0, < 2.0) -- [azurerm](#requirement\_azurerm) (>= 3.71.0, < 4.0) +- [azurerm](#requirement\_azurerm) (~> 3.71) -- [random](#requirement\_random) (>= 3.5.0, < 4.0) - -## Providers - -The following providers are used by this module: - -- [azurerm](#provider\_azurerm) (>= 3.71.0, < 4.0) - -- [random](#provider\_random) (>= 3.5.0, < 4.0) +- [random](#requirement\_random) (~> 3.5) ## Resources @@ -48,10 +40,12 @@ The following resources are used by this module: - [azurerm_private_endpoint.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_endpoint) (resource) - [azurerm_private_endpoint_application_security_group_association.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_endpoint_application_security_group_association) (resource) - [azurerm_resource_group.TODO](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group) (resource) -- [azurerm_resource_group_template_deployment.telemetry](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group_template_deployment) (resource) - [azurerm_role_assignment.this](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/role_assignment) (resource) -- [random_id.telem](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/id) (resource) +- [modtm_telemetry.telemetry](https://registry.terraform.io/providers/hashicorp/modtm/latest/docs/resources/telemetry) (resource) +- [random_uuid.telemetry](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/uuid) (resource) +- [azurerm_client_config.telemetry](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/client_config) (data source) - [azurerm_resource_group.parent](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/data-sources/resource_group) (data source) +- [modtm_module_source.telemetry](https://registry.terraform.io/providers/hashicorp/modtm/latest/docs/data-sources/module_source) (data source) ## Required Inputs diff --git a/avm b/avm index 69f9ce0..6668be7 100755 --- a/avm +++ b/avm @@ -18,4 +18,10 @@ if [ -z "$1" ]; then exit 1 fi -$CONTAINER_RUNTIME run --pull always --rm -v "$(pwd)":/src -w /src -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER mcr.microsoft.com/azterraform make "$1" +# Check if we are running in a container +# If we are then just run make directly +if [ -z "$AVM_IN_CONTAINER" ]; then + $CONTAINER_RUNTIME run --pull always --user "$(id -u):$(id -g)" --rm -v /etc/passwd:/etc/passwd -v /etc/group:/etc/group -v "$(pwd)":/src -w /src -e GITHUB_REPOSITORY -e GITHUB_REPOSITORY_OWNER mcr.microsoft.com/azterraform make "$1" +else + make "$1" +fi diff --git a/examples/.terraform-docs.yml b/examples/.terraform-docs.yml index f97f3a3..a95ea42 100644 --- a/examples/.terraform-docs.yml +++ b/examples/.terraform-docs.yml @@ -27,8 +27,6 @@ content: |- {{ .Requirements }} - {{ .Providers }} - {{ .Resources }} diff --git a/examples/default/README.md b/examples/default/README.md index b9d9ff5..814c557 100644 --- a/examples/default/README.md +++ b/examples/default/README.md @@ -74,14 +74,6 @@ The following requirements are needed by this module: - [random](#requirement\_random) (>= 3.5.0, < 4.0.0) -## Providers - -The following providers are used by this module: - -- [azurerm](#provider\_azurerm) (>= 3.7.0, < 4.0.0) - -- [random](#provider\_random) (>= 3.5.0, < 4.0.0) - ## Resources The following resources are used by this module: diff --git a/locals.telemetry.tf b/locals.telemetry.tf deleted file mode 100644 index ff0467b..0000000 --- a/locals.telemetry.tf +++ /dev/null @@ -1,41 +0,0 @@ -locals { - # TODO: change this to the name of the module. See https://azure.github.io/Azure-Verified-Modules/specs/shared/#id-sfr3---category-telemetry---deploymentusage-telemetry - module_name = "CHANGEME" - # TODO: Change this. Should be either `res` or `ptn` - module_type = "res" - # This constructs the ARM deployment name that is used for the telemetry. - # We shouldn't ever hit the 64 character limit but use substr just in case. - telem_arm_deployment_name = substr( - format( - "%s.%s.%s.v%s.%s", - local.telem_puid, - local.module_type, - substr(local.module_name, 0, 30), - replace(local.module_version, ".", "-"), - local.telem_random_hex - ), - 0, - 64 - ) - # This is an empty ARM deployment template. - telem_arm_template_content = jsonencode( - { - "$schema" = "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", - "contentVersion" = "1.0.0.0", - "parameters" = {}, - "variables" = {}, - "resources" = [], - "outputs" = { - "telemetry" = { - "type" = "String", - "value" = "For more information, see https://aka.ms/avm/telemetry" - } - } - } - ) - # This is the unique id AVM Terraform modules that is supplied by the AVM team. - # See https://azure.github.io/Azure-Verified-Modules/specs/shared/#id-sfr3---category-telemetry---deploymentusage-telemetry - telem_puid = "46d3xgtf" - # This ensures we don't get errors if telemetry is disabled. - telem_random_hex = can(random_id.telem[0].hex) ? random_id.telem[0].hex : "" -} diff --git a/locals.version.tf.json b/locals.version.tf.json deleted file mode 100644 index 6d43988..0000000 --- a/locals.version.tf.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "locals": { - "module_version": "0.1.0" - } -} diff --git a/main.telemetry.tf b/main.telemetry.tf index 90672fa..0419348 100644 --- a/main.telemetry.tf +++ b/main.telemetry.tf @@ -1,17 +1,24 @@ -resource "random_id" "telem" { +data "azurerm_client_config" "telemetry" { count = var.enable_telemetry ? 1 : 0 +} + +data "modtm_module_source" "telemetry" { + count = var.enable_telemetry ? 1 : 0 + module_path = path.module +} - byte_length = 4 +resource "random_uuid" "telemetry" { + count = var.enable_telemetry ? 1 : 0 } -# This is the module telemetry deployment that is only created if telemetry is enabled. -# It is deployed to the resource's resource group. -resource "azurerm_resource_group_template_deployment" "telemetry" { +resource "modtm_telemetry" "telemetry" { count = var.enable_telemetry ? 1 : 0 - deployment_mode = "Incremental" - name = local.telem_arm_deployment_name - resource_group_name = var.resource_group_name - template_content = local.telem_arm_template_content - tags = {} + tags = { + subscription_id = one(data.azurerm_client_config.telemetry).subscription_id + tenant_id = one(data.azurerm_client_config.telemetry).tenant_id + module_source = one(data.modtm_module_source.telemetry).module_source + module_version = one(data.modtm_module_source.telemetry).module_version + random_id = one(random_uuid.telemetry).result + } }