Azure / terraform-azurerm-avm-res-compute-virtualmachinescaleset

MIT License
4 stars 10 forks source link

AVM-Review #25

Closed mbilalamjad closed 2 months ago

mbilalamjad commented 8 months ago

Dear module owner,

As per the agreed module ownership requirements & responsibilities at the time of assignment, the AVM Team is opening this issue to request you to kindly review your module against the below AVM specs and confirm that they are met by the module. We appreciate if you don't close this issue till the review is complete. This review is required as a pre-req to be able to eventually publish the module as v1. AVM team would be happy to assist with the review and any questions that you might have around this.

Requested action is to complete below tasks and update the status column in the table below.

### Tasks
- [x] Per SFR2, kindly confirm your module is WAF aligned, in particular the service specific [WAF reliability](https://learn.microsoft.com/en-us/azure/well-architected/service-guides/) & [APRL](https://azure.github.io/Azure-Proactive-Resiliency-Library/services/) recommendations are implemented by default if applicable.
- [x] Comparing the reliability recommendations in WAF & APRL against the VMSS AVM, these are the parameters that you should consider making mandatory: automatic_instance_repair=true, os_profile.patch_assessment_mode=AutomaticByPlatform, os_profile.patch_mode=AutomaticByPlatform and os_profile.provision_vm_agent=true.  **NOTE: patch_mode was defaulted to AutomaticByPlatform, but patch_assessment_mode was not as it is not supported in VMSS Flex**
# Spec Status [Y/N/NA] Comments
1 ID: SFR1 - Category: Composition - Preview Services Y
2 ID: SFR2 - Category: Composition - WAF Aligned Y
3 ID: SFR3 - Category: Telemetry - Deployment/Usage Telemetry Y
4 ID: SFR4 - Category: Telemetry - Telemetry Enablement Flexibility Y
5 ID: SFR5 - Category: Composition - Availability Zones Y
6 ID: SFR6 - Category: Composition - Data Redundancy NA
7 ID: SNFR25 - Category: Composition - Resource Naming Y
8 ID: SNFR1 - Category: Testing - Prescribed Tests Y
9 ID: SNFR2 - Category: Testing - E2E Testing Y
10 ID: SNFR3 - Category: Testing - AVM Compliance Tests Y
11 ID: SNFR4 - Category: Testing - Unit Tests Y
12 ID: SNFR5 - Category: Testing - Upgrade Tests Y
13 ID: SNFR6 - Category: Testing - Static Analysis/Linting Tests Y
14 ID: SNFR7 - Category: Testing - Idempotency Tests Y
15 ID: SNFR24 - Category: Testing - Testing Child, Extension & Interface Resources Y
16 ID: SNFR8 - Category: Contribution/Support - Module Owner(s) GitHub Y
17 ID: SNFR20 - Category: Contribution/Support - GitHub Teams Only Y
18 ID: SNFR9 - Category: Contribution/Support - AVM & PG Teams GitHub Repo Permissions Y
19 ID: SNFR10 - Category: Contribution/Support - MIT Licensing Y
20 ID: SNFR11 - Category: Contribution/Support - Issues Response Times Y
21 ID: SNFR12 - Category: Contribution/Support - Versions Supported Y
22 ID: SNFR23 - Category: Contribution/Support - GitHub Repo Labels Y
23 ID: SNFR14 - Category: Inputs - Data Types Y
24 ID: SNFR22 - Category: Inputs - Parameters/Variables for Resource IDs Y
25 ID: SNFR15 - Category: Documentation - Automatic Documentation Generation Y
26 ID: SNFR16 - Category: Documentation - Examples/E2E Y
27 ID: SNFR17 - Category: Release - Semantic Versioning Y
28 ID: SNFR18 - Category: Release - Breaking Changes Y
29 ID: SNFR19 - Category: Publishing - Registries Targeted Y
30 ID: SNFR21 - Category: Publishing - Cross Language Collaboration Y
31 ID: RMFR1 - Category: Composition - Single Resource Only Y
32 ID: RMFR2 - Category: Composition - No Resource Wrapper Modules Y
33 ID: RMFR3 - Category: Composition - Resource Groups Y
34 ID: RMFR4 - Category: Composition - AVM Consistent Feature & Extension Resources Value Add Y
35 ID: RMFR5 - Category: Composition - AVM Consistent Feature & Extension Resources Value Add Interfaces/Schemas Y
36 ID: RMFR8 - Category: Composition - Dependency on child and other resources Y
37 ID: RMFR6 - Category: Inputs - Parameter/Variable Naming Y
38 ID: RMFR7 - Category: Outputs - Minimum Required Outputs Y
39 ID: RMNFR1 - Category: Naming - Module Naming Y
40 ID: RMNFR2 - Category: Inputs - Parameter/Variable Naming Y
41 ID: RMNFR3 - Category: Composition - RP Collaboration Y
42 ID: PMFR1 - Category: Composition - Resource Group Creation Y
43 ID: PMNFR1 - Category: Naming - Module Naming Y
44 ID: PMNFR2 - Category: Composition - Use Resource Modules to Build a Pattern Module NA
45 ID: PMNFR3 - Category: Composition - Use other Pattern Modules to Build a Pattern Module NA
46 ID: PMNFR4 - Category: Hygiene - Missing Resource Module(s) Y
47 ID: PMNFR5 - Category: Inputs - Parameter/Variable Naming Y
48 ID: TFFR1 - Category: Composition - Cross-Referencing Modules Y
49 ID: TFFR2 - Category: Outputs - Additional Terraform Outputs Y
50 ID: TFNFR1 - Category: Documentation - Descriptions Y
51 ID: TFNFR2 - Category: Documentation - Module Documentation Generation Y
52 ID: TFNFR3 - Category: Contribution/Support - GitHub Repo Branch Protection Y
53 ID: TFNFR4 - Category: Composition - Code Styling - lower snake_casing Y
54 ID: TFNFR5 - Category: Testing - Test Tooling Y
55 ID: TFNFR6 - Category: Code Style - The Order of resource and data in the Same File Y
56 ID: TFNFR7 - Category: Code Style - The Use of count and for_each Y
57 ID: TFNFR8 - Category: Code Style - Orders Within resource and data Blocks Y
58 ID: TFNFR9 - Category: Code Style - Order within a module block Y
59 ID: TFNFR10 - Category: Code Style - Values in ignore_changes passed to provider, depends_on, lifecycle blocks are not allowed to use double quotations Y
60 ID: TFNFR11 - Category: Code Style - null comparison as creation toogle Y
61 ID: TFNFR12 - Category: Code Style - Optional nested object argument should use dynamic Y
62 ID: TFNFR13 - Category: Code Style - Use coalesce or try when setting default values for nullable expressions Y
63 ID: TFFR14 - Category: Inputs - No enabled or module_depends_on variable Y
64 ID: TFNFR15 - Category: Code Style - Order to define variable Y
65 ID: TFNFR16 - Category: Code Style - Name of a variable MUST follow rules Y
66 ID: TFNFR17 - Category: Code Style - Every variable MUST come with a description Y
67 ID: TFNFR18 - Category: Code Style - Every variable MUST have an appropriate type Y
68 ID: TFNFR19 - Category: Code Style - variable containing confidential data should be declared as sensitive = true Y
69 ID: TFNFR20 - Category: Code Style - Declare nullable = false when it’s possible Y
70 ID: TFNFR21 - Category: Code Style - MUST NOT declare nullable = true Y
71 ID: TFNFR22 - Category: Code Style - MUST NOT declare sensitive = false Y
72 ID: TFNFR23 - Category: Code Style - variable with sensitive = true MUST NOT have default value unless the default value represents turning off a feature, like default = null or default = []
73 ID: TFNFR24 - Category: Code Style - Deal with deprecated variable Y
74 ID: TFNFR25 - Category: Code Style - All verified modules MUST have terraform.tf file and required_version MUST be set Y
75 ID: TFNFR26 - Category: Code Style - Providers MUST be declared in the required_providers block in terraform.tf and MUST have a constraint on minimum and maximum major version
76 ID: TFNFR27 - Category: Code Style - Declaration of a provider in the module Y
77 ID: TFNFR28 - Category: Code Style - output MUST be arranged alphabetically Y
78 ID: TFNFR29 - Category: Code Style - output contains confidential data should declare sensitive = true Y
79 ID: TFNFR30 - Category: Code Style - Dealing with Deprecated outputs Y
80 ID: TFNFR31 - Category: Code Style - locals.tf MUST contain only locals blocks Y
81 ID: TFNFR32 - Category: Code Style - local should be arranged alphabetically Y
82 ID: TFNFR33 - Category: Code Style - local should use types as precise as possible Y
83 ID: TFNFR34 - Category: Code Style - Feature toggle MUST be used to ensure forward compatibility of versions and avoid unexpected changes caused by upgrades Y
84 ID: TFNFR35 - Category: Code Style - Changes that might be breaking change MUST be reviewed with caution Y
85 ID: TFNFR36 - Category: Code Style - Example code MUST set prevent_deletion_if_contains_resources to false in provider block Y
86 ID: TFNFR37 - Category: Code Style - Module owner MAY use tools like newres Y