Skip to content

Commit

Permalink
feat: Updated Bicep feature table to include CMK & Indentity instead …
Browse files Browse the repository at this point in the history
…of Public IP (#879)
  • Loading branch information
AlexanderSehr authored Apr 21, 2024
1 parent 779719a commit a9bbe9b
Show file tree
Hide file tree
Showing 3 changed files with 161 additions and 134 deletions.
256 changes: 128 additions & 128 deletions docs/static/includes/module-features/bicepFeatures.csv
Original file line number Diff line number Diff line change
@@ -1,128 +1,128 @@
#,Module,RBAC,Locks,Tags,Diag,PE,PIP
1,res/aad/domain-service,✅,✅,✅,✅,,
2,res/analysis-services/server,✅,✅,✅,✅,,
3,res/api-management/service,✅,✅,✅,✅,,
4,res/app-configuration/configuration-store,✅,✅,✅,✅,✅,
5,res/app/container-app,✅,✅,✅,,,
6,res/app/managed-environment,✅,✅,✅,,,
7,res/automation/automation-account,✅,✅,✅,✅,✅,
8,res/batch/batch-account,✅,✅,✅,✅,✅,
9,res/cache/redis,✅,✅,✅,✅,✅,
10,res/cdn/profile,✅,✅,✅,,,
11,res/cognitive-services/account,✅,✅,✅,✅,✅,
12,res/compute/availability-set,✅,✅,✅,,,
13,res/compute/disk,✅,✅,✅,,,
14,res/compute/disk-encryption-set,✅,✅,✅,,,
15,res/compute/gallery,✅,✅,✅,,,
16,res/compute/image,✅,,✅,,,
17,res/compute/proximity-placement-group,✅,✅,✅,,,
18,res/compute/ssh-public-key,✅,✅,✅,,,
19,res/compute/virtual-machine,✅,✅,✅,,,
20,res/compute/virtual-machine-scale-set,✅,✅,✅,✅,,
21,res/consumption/budget,,,,,,
22,res/container-instance/container-group,,✅,✅,,,
23,res/container-registry/registry,✅,✅,✅,✅,✅,
24,res/container-service/managed-cluster,✅,✅,✅,✅,,
25,res/data-factory/factory,✅,✅,✅,✅,✅,
26,res/data-protection/backup-vault,✅,✅,✅,,,
27,res/databricks/access-connector,✅,✅,✅,,,
28,res/databricks/workspace,✅,✅,✅,✅,✅,
29,res/db-for-my-sql/flexible-server,✅,✅,✅,✅,,
30,res/db-for-postgre-sql/flexible-server,✅,✅,✅,✅,,
31,res/desktop-virtualization/application-group,✅,✅,✅,✅,,
32,res/desktop-virtualization/host-pool,✅,✅,✅,✅,✅,
33,res/desktop-virtualization/scaling-plan,✅,✅,✅,✅,,
34,res/desktop-virtualization/workspace,✅,✅,✅,✅,✅,
35,res/dev-test-lab/lab,✅,✅,✅,,,
36,res/digital-twins/digital-twins-instance,✅,✅,✅,✅,✅,
37,res/document-db/database-account,✅,✅,✅,✅,✅,
38,res/event-grid/domain,✅,✅,✅,✅,✅,
39,res/event-grid/namespace,✅,✅,✅,✅,✅,
40,res/event-grid/system-topic,✅,✅,✅,✅,,
41,res/event-grid/topic,✅,✅,✅,✅,✅,
42,res/event-hub/namespace,✅,✅,✅,✅,✅,
43,res/health-bot/health-bot,✅,✅,✅,,,
44,res/healthcare-apis/workspace,✅,✅,✅,,,
45,res/insights/action-group,✅,,✅,,,
46,res/insights/activity-log-alert,✅,,✅,,,
47,res/insights/component,✅,,✅,✅,,
48,res/insights/data-collection-endpoint,✅,✅,✅,,,
49,res/insights/data-collection-rule,✅,✅,✅,,,
50,res/insights/diagnostic-setting,,,,,,
51,res/insights/metric-alert,✅,,✅,,,
52,res/insights/private-link-scope,✅,✅,✅,,✅,
53,res/insights/scheduled-query-rule,✅,,✅,,,
54,res/insights/webtest,✅,✅,✅,,,
55,res/key-vault/vault,✅,✅,✅,✅,✅,
56,res/kubernetes-configuration/extension,,,,,,
57,res/kubernetes-configuration/flux-configuration,,,,,,
58,res/load-test-service/load-test,✅,✅,✅,,,
59,res/logic/workflow,✅,✅,✅,✅,,
60,res/machine-learning-services/workspace,✅,✅,✅,✅,✅,
61,res/maintenance/maintenance-configuration,✅,✅,✅,,,
62,res/managed-identity/user-assigned-identity,✅,✅,✅,,,
63,res/management/management-group,,,,,,
64,res/net-app/net-app-account,✅,✅,✅,,,
65,res/network/application-gateway,✅,✅,✅,✅,✅,
66,res/network/application-gateway-web-application-firewall-policy,,,✅,,,
67,res/network/application-security-group,✅,✅,✅,,,
68,res/network/azure-firewall,✅,✅,✅,✅,,
69,res/network/bastion-host,✅,✅,✅,✅,,
70,res/network/connection,,✅,✅,,,
71,res/network/ddos-protection-plan,✅,✅,✅,,,
72,res/network/dns-forwarding-ruleset,✅,✅,✅,,,
73,res/network/dns-resolver,✅,✅,✅,,,
74,res/network/dns-zone,✅,✅,✅,,,
75,res/network/express-route-circuit,✅,✅,✅,✅,,
76,res/network/express-route-gateway,✅,✅,✅,,,
77,res/network/firewall-policy,,,✅,,,
78,res/network/front-door,✅,✅,✅,✅,,
79,res/network/front-door-web-application-firewall-policy,✅,✅,✅,,,
80,res/network/ip-group,✅,✅,✅,,,
81,res/network/load-balancer,✅,✅,✅,✅,,
82,res/network/local-network-gateway,✅,✅,✅,,,
83,res/network/nat-gateway,✅,✅,✅,,,
84,res/network/network-interface,✅,✅,✅,✅,,
85,res/network/network-manager,✅,✅,✅,,,
86,res/network/network-security-group,✅,✅,✅,✅,,
87,res/network/network-watcher,✅,✅,✅,,,
88,res/network/private-dns-zone,✅,✅,✅,,,
89,res/network/private-endpoint,✅,✅,✅,,,
90,res/network/private-link-service,✅,✅,✅,,,
91,res/network/public-ip-address,✅,✅,✅,✅,,
92,res/network/public-ip-prefix,✅,✅,✅,,,
93,res/network/route-table,✅,✅,✅,,,
94,res/network/service-endpoint-policy,✅,✅,✅,,,
95,res/network/trafficmanagerprofile,✅,✅,✅,✅,,
96,res/network/virtual-hub,,✅,✅,,,
97,res/network/virtual-network,✅,✅,✅,✅,,
98,res/network/virtual-network-gateway,✅,✅,✅,✅,,
99,res/network/virtual-wan,✅,✅,✅,,,
100,res/network/vpn-gateway,,✅,✅,,,
101,res/network/vpn-site,✅,✅,✅,,,
102,res/operational-insights/workspace,✅,✅,✅,✅,,
103,res/operations-management/solution,,,,,,
104,res/power-bi-dedicated/capacity,✅,✅,✅,,,
105,res/purview/account,✅,✅,✅,✅,,
106,res/recovery-services/vault,✅,✅,✅,✅,✅,
107,res/relay/namespace,✅,✅,✅,✅,✅,
108,res/resource-graph/query,✅,✅,✅,,,
109,res/resources/deployment-script,✅,✅,✅,,,
110,res/resources/resource-group,✅,✅,✅,,,
111,res/search/search-service,✅,✅,✅,✅,✅,
112,res/service-bus/namespace,✅,✅,✅,✅,✅,
113,res/service-fabric/cluster,✅,✅,✅,,,
114,res/signal-r-service/signal-r,✅,✅,✅,,✅,
115,res/signal-r-service/web-pub-sub,✅,✅,✅,,✅,
116,res/sql/managed-instance,✅,✅,✅,✅,,
117,res/sql/server,✅,✅,✅,,✅,
118,res/storage/storage-account,✅,✅,✅,✅,✅,
119,res/synapse/private-link-hub,✅,✅,✅,,✅,
120,res/synapse/workspace,✅,✅,✅,✅,✅,
121,res/virtual-machine-images/image-template,✅,✅,✅,,,
122,res/web/connection,✅,✅,✅,,,
123,res/web/hosting-environment,✅,✅,✅,✅,,
124,res/web/serverfarm,✅,✅,✅,✅,,
125,res/web/site,✅,✅,✅,✅,✅,
126,res/web/static-site,✅,✅,✅,,✅,
Sum,,114,112,120,54,32,2
#,Module,RBAC,Locks,Tags,Diag,PE,CMK,Identity
1,res/aad/domain-service,✅,✅,✅,✅,,,
2,res/analysis-services/server,✅,✅,✅,✅,,,
3,res/api-management/service,✅,✅,✅,✅,,,✅
4,res/app-configuration/configuration-store,✅,✅,✅,✅,✅,✅,✅
5,res/app/container-app,✅,✅,✅,,,,✅
6,res/app/managed-environment,✅,✅,✅,,,,
7,res/automation/automation-account,✅,✅,✅,✅,✅,✅,✅
8,res/batch/batch-account,✅,✅,✅,✅,✅,✅,✅
9,res/cache/redis,✅,✅,✅,✅,✅,,✅
10,res/cdn/profile,✅,✅,✅,,,,
11,res/cognitive-services/account,✅,✅,✅,✅,✅,✅,✅
12,res/compute/availability-set,✅,✅,✅,,,,
13,res/compute/disk,✅,✅,✅,,,,
14,res/compute/disk-encryption-set,✅,✅,✅,,,,✅
15,res/compute/gallery,✅,✅,✅,,,,
16,res/compute/image,✅,,✅,,,,
17,res/compute/proximity-placement-group,✅,✅,✅,,,,
18,res/compute/ssh-public-key,✅,✅,✅,,,,
19,res/compute/virtual-machine,✅,✅,✅,,,,✅
20,res/compute/virtual-machine-scale-set,✅,✅,✅,✅,,,✅
21,res/consumption/budget,,,,,,,
22,res/container-instance/container-group,,✅,✅,,,✅,✅
23,res/container-registry/registry,✅,✅,✅,✅,✅,✅,✅
24,res/container-service/managed-cluster,✅,✅,✅,✅,,✅,✅
25,res/data-factory/factory,✅,✅,✅,✅,✅,✅,✅
26,res/data-protection/backup-vault,✅,✅,✅,,,,✅
27,res/databricks/access-connector,✅,✅,✅,,,,✅
28,res/databricks/workspace,✅,✅,✅,✅,✅,✅,
29,res/db-for-my-sql/flexible-server,✅,✅,✅,✅,,✅,✅
30,res/db-for-postgre-sql/flexible-server,✅,✅,✅,✅,,✅,✅
31,res/desktop-virtualization/application-group,✅,✅,✅,✅,,,
32,res/desktop-virtualization/host-pool,✅,✅,✅,✅,✅,,
33,res/desktop-virtualization/scaling-plan,✅,✅,✅,✅,,,
34,res/desktop-virtualization/workspace,✅,✅,✅,✅,✅,,
35,res/dev-test-lab/lab,✅,✅,✅,,,,✅
36,res/digital-twins/digital-twins-instance,✅,✅,✅,✅,✅,,✅
37,res/document-db/database-account,✅,✅,✅,✅,✅,,✅
38,res/event-grid/domain,✅,✅,✅,✅,✅,,✅
39,res/event-grid/namespace,✅,✅,✅,✅,✅,,✅
40,res/event-grid/system-topic,✅,✅,✅,✅,,,✅
41,res/event-grid/topic,✅,✅,✅,✅,✅,,✅
42,res/event-hub/namespace,✅,✅,✅,✅,✅,✅,✅
43,res/health-bot/health-bot,✅,✅,✅,,,,✅
44,res/healthcare-apis/workspace,✅,✅,✅,,,,
45,res/insights/action-group,✅,,✅,,,,
46,res/insights/activity-log-alert,✅,,✅,,,,
47,res/insights/component,✅,,✅,✅,,,
48,res/insights/data-collection-endpoint,✅,✅,✅,,,,
49,res/insights/data-collection-rule,✅,✅,✅,,,,
50,res/insights/diagnostic-setting,,,,,,,
51,res/insights/metric-alert,✅,,✅,,,,
52,res/insights/private-link-scope,✅,✅,✅,,✅,,
53,res/insights/scheduled-query-rule,✅,,✅,,,,
54,res/insights/webtest,✅,✅,✅,,,,
55,res/key-vault/vault,✅,✅,✅,✅,✅,,
56,res/kubernetes-configuration/extension,,,,,,,
57,res/kubernetes-configuration/flux-configuration,,,,,,,
58,res/load-test-service/load-test,✅,✅,✅,,,✅,✅
59,res/logic/workflow,✅,✅,✅,✅,,,✅
60,res/machine-learning-services/workspace,✅,✅,✅,✅,✅,✅,✅
61,res/maintenance/maintenance-configuration,✅,✅,✅,,,,
62,res/managed-identity/user-assigned-identity,✅,✅,✅,,,,
63,res/management/management-group,,,,,,,
64,res/net-app/net-app-account,✅,✅,✅,,,,✅
65,res/network/application-gateway,✅,✅,✅,✅,✅,,✅
66,res/network/application-gateway-web-application-firewall-policy,,,✅,,,,
67,res/network/application-security-group,✅,✅,✅,,,,
68,res/network/azure-firewall,✅,✅,✅,✅,,,
69,res/network/bastion-host,✅,✅,✅,✅,,,
70,res/network/connection,,✅,✅,,,,
71,res/network/ddos-protection-plan,✅,✅,✅,,,,
72,res/network/dns-forwarding-ruleset,✅,✅,✅,,,,
73,res/network/dns-resolver,✅,✅,✅,,,,
74,res/network/dns-zone,✅,✅,✅,,,,
75,res/network/express-route-circuit,✅,✅,✅,✅,,,
76,res/network/express-route-gateway,✅,✅,✅,,,,
77,res/network/firewall-policy,,,✅,,,,✅
78,res/network/front-door,✅,✅,✅,✅,,,
79,res/network/front-door-web-application-firewall-policy,✅,✅,✅,,,,
80,res/network/ip-group,✅,✅,✅,,,,
81,res/network/load-balancer,✅,✅,✅,✅,,,
82,res/network/local-network-gateway,✅,✅,✅,,,,
83,res/network/nat-gateway,✅,✅,✅,,,,
84,res/network/network-interface,✅,✅,✅,✅,,,
85,res/network/network-manager,✅,✅,✅,,,,
86,res/network/network-security-group,✅,✅,✅,✅,,,
87,res/network/network-watcher,✅,✅,✅,,,,
88,res/network/private-dns-zone,✅,✅,✅,,,,
89,res/network/private-endpoint,✅,✅,✅,,,,
90,res/network/private-link-service,✅,✅,✅,,,,
91,res/network/public-ip-address,✅,✅,✅,✅,,,
92,res/network/public-ip-prefix,✅,✅,✅,,,,
93,res/network/route-table,✅,✅,✅,,,,
94,res/network/service-endpoint-policy,✅,✅,✅,,,,
95,res/network/trafficmanagerprofile,✅,✅,✅,✅,,,
96,res/network/virtual-hub,,✅,✅,,,,
97,res/network/virtual-network,✅,✅,✅,✅,,,
98,res/network/virtual-network-gateway,✅,✅,✅,✅,,,
99,res/network/virtual-wan,✅,✅,✅,,,,
100,res/network/vpn-gateway,,✅,✅,,,,
101,res/network/vpn-site,✅,✅,✅,,,,
102,res/operational-insights/workspace,✅,✅,✅,✅,,,✅
103,res/operations-management/solution,,,,,,,
104,res/power-bi-dedicated/capacity,✅,✅,✅,,,,
105,res/purview/account,✅,✅,✅,✅,,,✅
106,res/recovery-services/vault,✅,✅,✅,✅,✅,,✅
107,res/relay/namespace,✅,✅,✅,✅,✅,,
108,res/resource-graph/query,✅,✅,✅,,,,
109,res/resources/deployment-script,✅,✅,✅,,,,✅
110,res/resources/resource-group,✅,✅,✅,,,,
111,res/search/search-service,✅,✅,✅,✅,✅,,✅
112,res/service-bus/namespace,✅,✅,✅,✅,✅,✅,✅
113,res/service-fabric/cluster,✅,✅,✅,,,,
114,res/signal-r-service/signal-r,✅,✅,✅,,✅,,
115,res/signal-r-service/web-pub-sub,✅,✅,✅,,✅,,✅
116,res/sql/managed-instance,✅,✅,✅,✅,,,✅
117,res/sql/server,✅,✅,✅,,✅,,✅
118,res/storage/storage-account,✅,✅,✅,✅,✅,✅,✅
119,res/synapse/private-link-hub,✅,✅,✅,,✅,,
120,res/synapse/workspace,✅,✅,✅,✅,✅,✅,✅
121,res/virtual-machine-images/image-template,✅,✅,✅,,,,✅
122,res/web/connection,✅,✅,✅,,,,
123,res/web/hosting-environment,✅,✅,✅,✅,,,✅
124,res/web/serverfarm,✅,✅,✅,✅,,,
125,res/web/site,✅,✅,✅,✅,✅,,✅
126,res/web/static-site,✅,✅,✅,,✅,,✅
Sum,,114,112,120,54,32,48,17
3 changes: 2 additions & 1 deletion utilities/tools/platform/Set-BicepModulesFeatureCSV.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ function Set-BicepModulesFeatureCSV {
'Tags',
'Diag',
'PE',
'PIP'
'CMK',
'Identity'
)
}
$featuresTable = Get-ModulesFeatureOutline @functionInput -Verbose
Expand Down
36 changes: 31 additions & 5 deletions utilities/tools/platform/helper/Get-ModulesFeatureOutline.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ Optional. An array that controls which columns / data points should be added to
- Diag: Adds a column indicating if the module supports Diagnostic Settings
- PE: Adds a column indicating if the module supports Private Endpoints
- PIP: Adds a column indicating if the module supports Public IP Addresses
- CMK: Adds a column indicating if the module supports Customer Managed Keys
- Identity: Adds a column indicating if the module supports managed identities
.PARAMETER RepositoryName
Optional. The name of the repository the code resides in. Required if 'ColumnsToInclude.Status' is 'true'
Expand Down Expand Up @@ -64,8 +66,8 @@ In the above example, the module has 5 direct children, 4 of them have direct ch
#>
function Get-ModulesFeatureOutline {

[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseOutputTypeCorrectly', '', Justification='It has 3 different output types, not one. It''s a false-positive.')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPositionalParameters', '', Justification='For Join-Path it''s very difficult to read the cmdlet without positional parameters.')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseOutputTypeCorrectly', '', Justification = 'It has 3 different output types, not one. It''s a false-positive.')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingPositionalParameters', '', Justification = 'For Join-Path it''s very difficult to read the cmdlet without positional parameters.')]
[CmdletBinding()]
param (
[Parameter(Mandatory = $true)]
Expand All @@ -75,15 +77,17 @@ function Get-ModulesFeatureOutline {
[string] $ModulesRepoRootPath,

[Parameter(Mandatory = $false)]
[ValidateSet('Status', 'RBAC', 'Locks', 'Tags', 'Diag', 'PE', 'PIP')]
[ValidateSet('Status', 'RBAC', 'Locks', 'Tags', 'Diag', 'PE', 'PIP', 'CMK', 'Identity')]
[string[]] $ColumnsToInclude = @(
'Status',
'RBAC',
'Locks',
'Tags',
'Diag',
'PE',
'PIP'
'PIP',
'CMK',
'Identity'
),

[Parameter(Mandatory = $false)]
Expand Down Expand Up @@ -213,6 +217,26 @@ function Get-ModulesFeatureOutline {
$moduleDataItem['PIP'] = $false
}
}

# Supports CMK
if ($ColumnsToInclude -contains 'CMK') {
if ([regex]::Match($moduleContentString, '(?m)^\s*param customerManagedKey customerManagedKeyType').Success) {
$summaryData.supportsCMKDeployment++
$moduleDataItem['CMK'] = $true
} else {
$moduleDataItem['CMK'] = $false
}
}

# Supports Identity
if ($ColumnsToInclude -contains 'Identity') {
if ([regex]::Match($moduleContentString, '(?m)^\s*param managedIdentities managedIdentitiesType').Success) {
$summaryData.supportsIdentityDeployment++
$moduleDataItem['Identity'] = $true
} else {
$moduleDataItem['Identity'] = $false
}
}

# Result
$moduleData += $moduleDataItem
Expand All @@ -235,7 +259,9 @@ function Get-ModulesFeatureOutline {
if ($ColumnsToInclude -contains 'Diag') { $resultObject.Diag = $_.Diag }
if ($ColumnsToInclude -contains 'PE') { $resultObject.PE = $_.PE }
if ($ColumnsToInclude -contains 'PIP') { $resultObject.PIP = $_.PIP }

if ($ColumnsToInclude -contains 'CMK') { $resultObject.CMK = $_.CMK }
if ($ColumnsToInclude -contains 'Identity') { $resultObject.Identity = $_.Identity }
I
# Return result
[PSCustomObject] $resultObject
}
Expand Down

0 comments on commit a9bbe9b

Please sign in to comment.