[Feature Request]: AVM alignment tracker #4020
Labels
[cat] modules
category: modules
[cat] pipelines
category: pipelines
[cat] testing
category: testing
[cat] utilities
category: utilities
documentation
Improvements or additions to documentation
enhancement
New feature or request
help wanted
Extra attention is needed
Milestone
Description
This issue is intended to track the efforts for alinging the CARML modules to the Azure Verified Module (AVM) specs, ultimately enabling us to publish the CARML modules to the Public Bicep Registry.
Bulk edits
These can ideally be updated 'on scale', with the already defined interfaces & conventions (e.g., folder structure), that must be updated in all modules (while taking individual characterists into account).
Checklist
Set-ModuleReadMe
script is updated, remove & regenerate all ReadMesnull
values) #4207Per-module edits
Side-by-side / following the alignment to the extension interface, the following list should be used to track the 'full' alignment of the modules (e.g., PSRule compliance, etc.)
Checklist
aad/domain-service
to AVM specsanalysis-services/server
to AVM specs #4398api-management/service
to AVM specs #4355app/container-app
to AVM specs #4489app/jobs
to AVM specsapp/managed-environment
to AVM specs #4442app-configuration/configuration-store
to AVM specs #4504automation/automation-account
to AVM specs #4311batch/batch-account
to AVM specs #4056cache/redis
to AVM specs #4399cache/redis-enterprise
to AVM specscdn/profile
to AVM specs #4510cognitive-services/account
to AVM specs #4055compute/availability-set
to AVM specs #4411compute/disk
to AVM specs #4406compute/disk-encryption-set
to AVM specs #4425compute/gallery
to AVM specs #4422compute/image
to AVM specs #4400compute/proximity-placement-group
to AVM specs #4426compute/ssh-public-key
to AVM specs #4075compute/virtual-machine
to AVM specs #4107compute/virtual-machine-scale-set
to AVM specs #4502consumption/budget
to AVM specs #4407container-instance/container-group
to AVM specs #4481container-registry/registry
to AVM specs #4456container-service/managed-cluster
to AVM specs #4194data-factory/factory
to AVM specs #4376data-protection/backup-vault
to AVM specs #4405databricks/workspace
to AVM specs #4402db-for-my-sql/flexible-server
to AVM specs #4401db-for-postgre-sql/flexible-server
to AVM specs #4305desktop-virtualization/application-group
to AVM specs #4473desktop-virtualization/host-pool
to AVM specs #4475desktop-virtualization/scaling-plan
to AVM specs #4474desktop-virtualization/workspace
to AVM specs #4476dev-test-lab/lab
to AVM specs #4412digital-twins/digital-twins-instance
to AVM specs #4141document-db/database-account
to AVM specs #4321event-grid/domain
to AVM specs #4384event-grid/system-topic
to AVM specs #4148event-grid/topic
to AVM specs #4385event-hub/namespace
to AVM specs #4479health-bot/health-bot
to AVM specs #4404healthcare-apis/workspace
to AVM specs #4531insights-actiongroup
to AVM specs #4074insights/activity-log-alert
to AVM specs #4344insights/component
to AVM specs #4268insights/data-collection-endpoint
to AVM specs #4332insights/data-collection-rule
to AVM specs #4333insights/diagnostic-setting
to AVM specs #4249insights/metric-alert
to AVM specs #4343insights/private-link-scope
to AVM specs #4413insights/scheduled-query-rule
to AVM specs #4345insights/webtest
to AVM specs #4377key-vault/vault
to AVM specs #4063kubernetes-configuration/extension
to AVM specs #4054kubernetes-configuration/flux-configuration
to AVM specs #4053logic/workflow
to AVM specs #4180machine-learning-services/workspace
to AVM specs #4458maintenance/maintenance-configuration
to AVM specs #4378managed-identity/user-assigned-identity
to AVM specs #4149managed-services/registration-definition
to AVM specsmanagement/management-group
to AVM specs #4496net-app/net-app-account
to AVM specs #4403network/application-gateway
to AVM specsnetwork/application-gateway-web-application-firewall-policy
to AVM specs #4532network/application-security-group
to AVM specs #4490network/azure-firewall
to AVM specs #4507network/bastion-host
to AVM specs #4324network/connection
to AVM specs #4389network/ddos-protection-plan
to AVM specs #4408network/dns-forwarding-ruleset
to AVM specs #4139network/dns-resolver
to AVM specs #4101network/dns-zone
to AVM specs #4163network/express-route-circuit
to AVM specs #4264network/express-route-gateway
to AVM specs #4265network/firewall-policy
to AVM specs #4432network/front-door
to AVM specs #4433network/front-door-web-application-firewall-policy
to AVM specs #4434network/ip-group
to AVM specs #4414network/load-balancer
to AVM specs #4044network/local-network-gateway
to AVM specs #4383network/nat-gateway
to AVM specs #4382network/network-interface
to AVM specs #4062network/network-manager
to AVM specs #4415network/network-security-group
to AVM specs #4443network/private-dns-zone
to AVM specs #4140network/private-endpoint
to AVM specs #4064network/private-link-service
to AVM specs #4416network/public-ip-address
to AVM specs #4043network/public-ip-prefix
to AVM specs #4323network/route-table
to AVM specs #4444network/service-endpoint-policy
to AVM specsnetwork/trafficmanagerprofile
to AVM specs #4314network/virtual-hub
to AVM specsnetwork/virtual-network
to AVM specs #4061network/virtual-network-gateway
to AVM specs #4386network/virtual-wan
to AVM specsnetwork/vpn-gateway
to AVM specs #4387network/vpn-site
to AVM specs #4390operational-insights/workspace
to AVM specs #4060operations-management/solution
to AVM specs #4059power-bi-dedicated/capacity
to AVM specs #4337purview/account
to AVM specs #4460recovery-services/vault
to AVM specs #4494relay/namespace
to AVM specs #4528resource-graph/query
to AVM specs #4445resources/deployment-script
to AVM specs #4198resources/resource-group
to AVM specs #4430search/search-service
to AVM specs #4266security/azure-security-center
to AVM specsservice-bus/namespace
to AVM specs #4179service-fabric/cluster
to AVM specssignal-r-service/signal-r
to AVM specs #4511signal-r-service/web-pub-sub
to AVM specs #4514sql/managed-instance
to AVM specssql/server
to AVM specs #4270storage/storage-account
to AVM specs #4058synapse/private-link-hub
to AVM specs #4480synapse/workspace
to AVM specs #4467virtual-machine-images/image-template
to AVM specs #4417web/connection
to AVM specs #4529web/hosting-environment
to AVM specsweb/serverfarm
to AVM specs #4423web/site
to AVM specs #4438web/static-site
to AVM specs #4446Migration Guide
This section provides a checklist of things to look out for per module to ensure they're AVM compliant, both as per module specifications & the Contribution Guide.
Checklist
Tests (ref)
e2e
folder (ref)min
folder todefaults
common
folder tomax
waf-aligned
folder (e.g., based oncommon
). This test should not fail PSRule & show the module being deployed with best-practicesserviceShort
parameter to align with the new naming (e.g.,waf
forwaf-aligned
). For now, we should continue usingmin
fordefaults
to align with PSRule.namePrefix
input parameter value from[[namePrefix]]
to#_namePrefix_#
(the reason being that Bicep has a compilation issue because of the prefix & suffix in another location)../../main.bicep
module template reference to../../../main.bicep
namePrefix
. For example:For each module that supports
Diagnostic Settings
diagnosticSettingType
described in the above reference to a// Definitions
block at the bottom of the template filediagnosticSettings
parameter as per the specs to the templateRole Assignments
roleAssignmentType
described in the above reference to a// Definitions
block at the bottom of the template fileroleAssignments
parameter as per the specs (- should now reference the User-defined-type)builtInRoleNames
from thenested_roleAssignments.bicep
file and add them to the variables block of the main template. The new schema does not require the nested template. Also, reduce the list of specified roles to only those that make sense for this resource (ref)/ For, for example, Cognitive Services, we should only provide the important ones as Owner, Contributor, etc. + all service specific roles such as 'Cognitive Services User'.Resource Locks
lockType
described in the above reference to a// Definitions
block at the bottom of the template filelock
parameter as per the specs (- should now reference the User-defined-type)Tags
tags
parameter as per the specsManaged Identities
managedIdentitiesType
described in the above reference to a// Definitions
block at the bottom of the template filemanagedIdentities
parameter as per the specs to the templatePrivate Endpoints
privateEndpointType
described in the above reference to a// Definitions
block at the bottom of the template fileprivateEndpoints
parameter as per the specs (- should now reference the User-defined-type)Customer Managed Keys
customerManagedKeyType
described in the above reference to a// Definitions
block at the bottom of the template filecustomerManagedKey
parameter as per the specs to the templateexisting
resource references as per the specs-
- Note also that the new schema SHOULD support system-assigned-identities. As this cannot be done in a single deployment, you can find a reference how this would look like here
Other
version.json
back to0.1
nullable
feature for parameters where-ever it makes sense to you (and ensure to test it). This enables us to simplify logic like in the following exampleReadMe
main.bicep
fileHelper script (work in progress)
Snippet
Final steps: Migration
For the final AVM contribution a few more changes will be necessary as described in the following
avm/utilities/e2e-template-assets/templates/diagnostic.dependencies.bicep
enableTelemetry
flag through likeenableTelemetry: enableTelemetry
to enable users to enable/disable for the entire deployment. Child resources should remain with the telemetry switched off for now.version.json
files from child modules (as can't publish them yet)ORPHANED.md
file with the following content to the module in AVM onlyThese changes should be done after creating a fork of the public bicep registory respository and the module is added in the
/avm/res/
folder. From there you can not only test the module using the AVM CI, but also open the Pull Request to the Upstream repository.The text was updated successfully, but these errors were encountered: