BrownField/Auto-assessment/scripts/All-Recommendations.ps1 (591 lines of code) (raw):
. ./New-Recommendation.ps1
function New-NSXT-Password-Rotation-Recommendation {
param (
[string]$sddcName
)
return New-Recommendation -Category "Identity" `
-Observation "NSX-T Manager password has not been rotated in the last 90 days for SDDC '$sddcName'." `
-Recommendation "Rotate the NSX-T Manager password." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/rotate-cloudadmin-credentials?tabs=azure-portal#reset-your-nsx-manager-credentials" `
-Priority "High"
}
function New-vCenter-Password-Rotation-Recommendation {
param (
[string]$sddcName
)
return New-Recommendation -Category "Identity" `
-Observation "vCenter Server password has not been rotated in the last 90 days for SDDC '$sddcName'." `
-Recommendation "Rotate the vCenter Server password." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/rotate-cloudadmin-credentials?tabs=azure-portal#reset-your-vcenter-server-credentials" `
-Priority "High"
}
function New-NoPIMLicense-Recommendation {
return New-Recommendation -Category "Identity" `
-Observation "Tenant doesn't have licenses needed for PIM." `
-Recommendation "The tenant needs to have Microsoft Entra ID P2 or Microsoft Entra ID Governance license." `
-LinkUrl "https://learn.microsoft.com/entra/id-governance/privileged-identity-management/groups-assign-member-owner" `
-Priority "High"
}
function New-No-ActivePIMAccess-Recommendation {
param (
[string]$sddcName
)
return New-Recommendation -Category "Identity" `
-Observation "There is no eligible PIM access for AVS SDDC." `
-Recommendation "SDDC '$sddcName' should have eligible PIM access." `
-LinkUrl "https://learn.microsoft.com/entra/id-governance/privileged-identity-management/groups-assign-member-owner" `
-Priority "Medium"
}
function New-NoExternalIdentitySource-Recommendation {
param (
[string]$sddcName
)
return New-Recommendation -Category "Identity" `
-Observation "SDDC '$sddcName' has no external identity source configured." `
-Recommendation "Configure external identity source." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-identity-and-access-management" `
-Priority "Medium"
}
function New-ExternalIdentitySource-Recommendation {
param (
[string]$sddcName,
[string]$externalIdentitySource
)
return New-Recommendation -Category "Identity" `
-Observation "SDDC '$sddcName' has '$externalIdentitySource' as an external identity source." `
-Recommendation "Ensure BaseDNGroups and BaseDNUsers are configured with only those groups/users who need access to SDDC." `
-LinkUrl "https://docs.microsoft.com/en-us/azure/azure-vmware/overview" `
-Priority "Low"
}
function New-LDAPIdentitySource-Recommendation {
param (
[string]$sddcName,
[string]$ldapServer
)
return New-Recommendation -Category "Identity" `
-Observation "SDDC '$sddcName' has '$ldapServer' as an LDAP identity source." `
-Recommendation "Configure Identity Source to use LDAPS" `
-LinkUrl "https://docs.microsoft.com/en-us/azure/azure-vmware/overview" `
-Priority "High"
}
function New-LDAPSIdentitySource-Recommendation {
param (
[string]$sddcName,
[string]$ldapServer
)
return New-Recommendation -Category "Identity" `
-Observation "SDDC '$sddcName' has '$ldapServer' as an LDAPS identity source." `
-Recommendation "Ensure you check and renew LDAPS certificate before expiry." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter" `
-Priority "Low"
}
function New-NoGlobalReach-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' doesn't have active ExpressRoute GlobalReach connection." `
-Recommendation "ExpressRoute GLobalReach is recommended for connectivity with on-premises environment." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/on-premises-connectivity" `
-Priority "High"
}
function New-SingleGlobalReach-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' has only one active ExpressRoute GlobalReach connection." `
-Recommendation "SDDC should have multiple ExpressRoute GlobalReach connections for resilient connectivity with on-premises environment." `
-LinkUrl "https://learn.microsoft.com/azure/expressroute/design-architecture-for-resiliency" `
-Priority "Medium"
}
function New-MultipleGlobalReach-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' has multiple active ExpressRoute GlobalReach connection." `
-Recommendation "Use AS PATH Prepend when advertising routes from on-premises to avoid asymmetric routing." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/architecture-network-design-considerations" `
-Priority "High"
}
function New-NoAuthKeyRedemption-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' has not redeemed any ER Auth Key." `
-Recommendation "Use ER Auth Key Redemption for connectivity with Azure." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/tutorial-configure-networking" `
-Priority "Low"
}
function New-MultipleAuthKeyRedemption-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' has multiple redemptions of ER Auth Key." `
-Recommendation "Ensure multiple Auth Key redemptions do not cause IP address conflict." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/tutorial-configure-networking" `
-Priority "Low"
}
function New-NoManagedSNAT-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' has no internet connectivity." `
-Recommendation "Ensure default route is injected from either Azure or on-premises." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/network-design-guide-internet-outbound-connectivity" `
-Priority "Low"
}
function New-ManagedSNAT-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is using AVS Managed SNAT for internet connectivity." `
-Recommendation "AVS Managed SNAT is not a preferred solution for outbound to internet traffic for production workloads." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/network-design-guide-internet-outbound-connectivity" `
-Priority "Medium"
}
function New-NSXTPIP-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is using public IP @ NSX-T edge for internet connectivity." `
-Recommendation "Ensure that proper No-NAT, SNAT and DNAT rules are configured." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/enable-public-ip-nsx-edge" `
-Priority "High"
}
function New-ZoneRedundantGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is conected to a zone-redundant ER gateway." `
-Recommendation "Monitor network latency sensitive workloads for performance issues." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/virtual-network-connectivity" `
-Priority "Low"
}
function New-NonZoneRedundantGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is conected to a non zone-redundant ER gateway." `
-Recommendation "Connect AVS SDDC to zone-redundant ER gateway for resiliency." `
-LinkUrl "https://learn.microsoft.com/azure/vpn-gateway/about-zone-redundant-vnet-gateways" `
-Priority "High"
}
function New-FastPathGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is conected to a FastPath enabled ER gateway." `
-Recommendation "Ensure that peered VNets and hub VNet are in same region." `
-LinkUrl "https://learn.microsoft.com/azure/expressroute/about-fastpath" `
-Priority "Low"
}
function New-NonFastPathGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is conected to a non-FastPath enabled ER gateway." `
-Recommendation "Connect AVS SDDC to FastPath enabled ER gateway to improve data path performance." `
-LinkUrl "https://learn.microsoft.com/azure/expressroute/about-fastpath" `
-Priority "Medium"
}
function New-ZoneRedundantvWANGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is conected to a zone-redundant ER gateway in Azure vWAN." `
-Recommendation "Monitor network latency sensitive workloads for performance issues." `
-LinkUrl "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-expressroute-about" `
-Priority "Low"
}
function New-NonFastPathvWANGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is conected to a non-FastPath enabled ER gateway in Azure vWAN." `
-Recommendation "Connect AVS SDDC to FastPath enabled ER gateway to improve data path performance." `
-LinkUrl "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-expressroute-about" `
-Priority "Low"
}
function New-DefaultDNSZone-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is using default DNS Zone." `
-Recommendation "Configure custom DNS Zone for SDDC." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-dns-azure-vmware-solution" `
-Priority "High"
}
function New-CustomDNSZone-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is using custom DNS Zone." `
-Recommendation "Test DNS resolution is responding within acceptable timeframe." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-dns-azure-vmware-solution" `
-Priority "Low"
}
function New-NoDHCP-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is not using DHCP." `
-Recommendation "Configure DHCP for SDDC." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-dhcp-azure-vmware-solution" `
-Priority "High"
}
function New-CustomDHCP-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Networking" `
-Observation "SDDC '$sddcName' is using custom DHCP." `
-Recommendation "Ensure DHCP is configured on AVS segments." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-dhcp-azure-vmware-solution" `
-Priority "Low"
}
function New-NoPIMLogs-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "Azure subscription containing SDDC '$sddcName' has no PIM logs." `
-Recommendation "Ensure PIM logs are enabled on Azure subscription containing SDDC." `
-LinkUrl "https://learn.microsoft.com/entra/id-governance/privileged-identity-management/groups-audit" `
-Priority "Medium"
}
function New-NoEntraIDDiagnostics-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has no Entra ID diagnostics." `
-Recommendation "Ensure Entra ID diagnostics are enabled for SDDC for long term storage requirements." `
-LinkUrl "https://learn.microsoft.com/entra/identity/monitoring-health/howto-configure-diagnostic-settings" `
-Priority "High"
}
function New-NoCustomUsers-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' is not configured with custom users for access." `
-Recommendation "Ensure custom users are added to SDDC for role based access control." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter" `
-Priority "High"
}
function New-NoCustomGroups-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' is not configured with custom groups for access." `
-Recommendation "Ensure custom groups are added to SDDC for role based access control." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter" `
-Priority "High"
}
function New-NoDomainJoin-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "A VM in SDDC '$sddcName' is not domain joined." `
-Recommendation "Ensure that all VMs in SDDC are domain joined for centralized identity/policy management." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter" `
-Priority "Medium"
}
function New-NoUserDefinedDistributedFirewall-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' is not configured with user defined NSX-T filtering." `
-Recommendation "Ensure that NSX-T distributed firewall rules are defined for SDDC for security." `
-LinkUrl "https://techcommunity.microsoft.com/blog/azuremigrationblog/firewall-integration-in-azure-vmware-solution/2254961" `
-Priority "High"
}
function New-DisabledGatewayFirewall-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has at least one disabled gateway firewall." `
-Recommendation "Ensure that gateway firewall is enabled for SDDC for security." `
-LinkUrl "https://techcommunity.microsoft.com/blog/azuremigrationblog/firewall-integration-in-azure-vmware-solution/2254961" `
-Priority "High"
}
function New-NoDDoSProtectionPlan-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' is connected to an Azure VNet which has no DDoS protection plan." `
-Recommendation "Ensure that DDoS protection plan is enabled for the VNet connected with SDDC for security." `
-LinkUrl "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview" `
-Priority "High"
}
function New-NovSANEncryption-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has no vSAN encryption." `
-Recommendation "Ensure that vSAN encryption is enabled on SDDC for security." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-customer-managed-keys?tabs=azure-portal" `
-Priority "High"
}
function New-NoVMEncryption-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "A VM in SDDC '$sddcName' has no encryption." `
-Recommendation "Ensure that VM encryption is enabled for VMs in SDDC for security." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-customer-managed-keys?tabs=azure-portal" `
-Priority "High"
}
function New-AccessControl-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has multiple Azure role assignments." `
-Recommendation "Ensure that access control is limited to under 3 for direct and inherited scope for SDDC for security." `
-LinkUrl "https://learn.microsoft.com/azure/role-based-access-control/best-practices" `
-Priority "High"
}
function New-DisabledAlert-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has at least one disabled alert for critical metric." `
-Recommendation "Ensure that alert for critical metric is enabled on SDDC for security." `
-LinkUrl "https://azure.github.io/azure-monitor-baseline-alerts/patterns/specialized/avs/" `
-Priority "High"
}
function New-NoRecipientForAlert-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has at least one alert with no recipient." `
-Recommendation "Ensure that alert for critical metric has recipient for notification on SDDC for security." `
-LinkUrl "https://azure.github.io/azure-monitor-baseline-alerts/patterns/specialized/avs/" `
-Priority "High"
}
function New-MissingAlerts-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has missing alerts for critical metrics." `
-Recommendation "Ensure that alerts are configured for critical metrics on SDDC for security." `
-LinkUrl "https://azure.github.io/azure-monitor-baseline-alerts/patterns/specialized/avs/" `
-Priority "High"
}
function New-NoAlerts-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "SDDC '$sddcName' has no alerts configured for critical metrics." `
-Recommendation "Ensure that alerts are configured for critical metrics on SDDC for security." `
-LinkUrl "https://azure.github.io/azure-monitor-baseline-alerts/patterns/specialized/avs/" `
-Priority "High"
}
function New-ArcNotProvisioned-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Security" `
-Observation "Azure Arc is not provisioned for SDDC '$sddcName'." `
-Recommendation "Provision Azure Arc on SDDC for security patch and update management." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/deploy-arc-for-azure-vmware-solution?tabs=windows" `
-Priority "Medium"
}
function New-vSANForContentLibrary-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "vSAN is used for Content Library in SDDC '$sddcName'." `
-Recommendation "vSAN should be used for VM disks for efficient storage use." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-NoAVSDiagnostics-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "AVS Diagnostic setting is not configured for SDDC '$sddcName'." `
-Recommendation "Configure AVS Diagnostic setting for SDDC for monitoring and troubleshooting." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-NoAVSSysLogDiagnostic-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "AVS Syslog Diagnostic setting is not configured for SDDC '$sddcName'." `
-Recommendation "Configure AVS Syslog Diagnostic setting for SDDC for monitoring and troubleshooting." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-vSANPolicyNotFTT2-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "vSAN policy for SDDC '$sddcName' is not set to FTT=2 for cluster size larger than 3." `
-Recommendation "Ensure that vSAN policy is set to FTT=2 for cluster size larger than 3 for data resiliency." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-SRMNotProvisioned-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "BCDR" `
-Observation "SRM is not provisioned for SDDC '$sddcName'." `
-Recommendation "Provision SRM on SDDC for disaster recovery." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-business-continuity-and-disaster-recovery" `
-Priority "Medium"
}
function New-LowUtilizationforERGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "BCDR" `
-Observation "ER Gateway for SDDC '$sddcName' has low utilization, which is an indicator for missing backup for guest VMs in SDDC." `
-Recommendation "Configure backup for guest VMs in SDDC." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-business-continuity-and-disaster-recovery" `
-Priority "Medium"
}
function New-LowUtilizationforvWANERGateway-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "BCDR" `
-Observation "vWAN ER Gateway for SDDC '$sddcName' has low utilization, which is an indicator for missing backup for guest VMs in SDDC." `
-Recommendation "Configure backup for guest VMs in SDDC." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-business-continuity-and-disaster-recovery" `
-Priority "Medium"
}
function New-NoResourceLock-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Automation" `
-Observation "SDDC '$sddcName' has no resource lock." `
-Recommendation "Ensure that resource lock is configured for SDDC to prevent accidental deletion." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-platform-automation-and-devops" `
-Priority "High"
}
function New-NoAutomatedDeployment-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Automation" `
-Observation "SDDC '$sddcName' has no deployments using ARM or Bicep scripts." `
-Recommendation "Automate SDDC changes/additions using consistent deployments." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-platform-automation-and-devops" `
-Priority "Medium"
}
function New-NoServiveHealthAlert-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "SDDC '$sddcName' has no Service Health Alert configured." `
-Recommendation "Ensure that Service Health Alert is configured for SDDC for monitoring." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-DisabledServiveHealthAlert-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "SDDC '$sddcName' has at least one disabled Service Health Alert." `
-Recommendation "Ensure that Service Health Alert is enabled for SDDC for monitoring." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-NoRecipientForServiveHealthAlert-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "SDDC '$sddcName' has at least one Service Health Alert with no recipient." `
-Recommendation "Ensure that Service Health Alert has recipient for notification on SDDC for monitoring." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "High"
}
function New-ClusterCountNearLimit-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "SDDC '$sddcName' has cluster count near the limit of 16." `
-Recommendation "Ensure that cluster count is within the limit of 16 for SDDC." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "Medium"
}
function New-NodeCountNearLimit-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "Management" `
-Observation "SDDC '$sddcName' has node count nearing the limit of 96." `
-Recommendation "Ensure that node count is within the limit of 96 for SDDC." `
-LinkUrl "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-management-and-monitoring" `
-Priority "Medium"
}
function New-HCXNotProvisioned-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "HCX" `
-Observation "HCX is not provisioned for SDDC '$sddcName'." `
-Recommendation "Provision HCX on SDDC for workload mobility." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-vmware-hcx" `
-Priority "Medium"
}
function New-NoHCXNEHA-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "HCX" `
-Observation "SDDC '$sddcName' has no HCX Network Extension High Availability configured for at least one HCX Service Mesh." `
-Recommendation "Ensure that HCX Network Extension High Availability is cofnigured on all HCX Service Meshes." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/configure-hcx-network-extension-high-availability" `
-Priority "High"
}
function New-VLANStretchedForMoreThan30Days-Recommendation {
param(
[string]$sddcName
)
return New-Recommendation -Category "HCX" `
-Observation "SDDC '$sddcName' has at least one VLAN stretched for more than 30 days." `
-Recommendation "Keep VLANs stretched only until migration is complete." `
-LinkUrl "https://learn.microsoft.com/azure/azure-vmware/vmware-hcx-mon-guidance" `
-Priority "High"
}