VcfEdgeAtScale.psd1

# Copyright (c) 2026 Broadcom. All Rights Reserved.
# Broadcom Confidential. The term "Broadcom" refers to Broadcom Inc.
# and/or its subsidiaries.
#
# =============================================================================
#
# SOFTWARE LICENSE AGREEMENT
#
# Copyright (c) CA, Inc. All rights reserved.
#
# You are hereby granted a non-exclusive, worldwide, royalty-free license
# under CA, Inc.'s copyrights to use, copy, modify, and distribute this
# software in source code or binary form for use in connection with CA, Inc.
# products.
#
# This copyright notice shall be included in all copies or substantial
# portions of the software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
#
# =============================================================================
#
# Module manifest for 'VcfEdgeAtScale'
# Generated by: Broadcom
# Generated on: 2026-05-18

@{

# Script module or binary module file associated with this manifest.
RootModule = 'VcfEdgeAtScale.psm1'

# Version number of this module.
ModuleVersion = '1.0.3.1014'

# Supported PSEditions
CompatiblePSEditions = @('Core')

# ID used to uniquely identify this module
GUID = '5E183D7F-7168-4C35-8528-363630F3BFB5'

# Author of this module
Author = 'Broadcom'

# Company or vendor of this module
CompanyName = 'Broadcom'

# Copyright statement for this module
Copyright = 'Copyright (c) 2026 Broadcom. All Rights Reserved.'

# Description of the functionality provided by this module
Description = @'
VcfEdgeAtScale automates end-to-end vSphere Supervisor deployment in VMware Cloud Foundation 9.x,
driven by two JSON files (infrastructure.json and supervisor.json).

It handles the following:

- vSphere cluster creation with host addition and vLCM image compliance
- VMFS, vSAN OSA, and vSAN ESA storage (including witness, disk claim, and health checks)
- Virtual Distributed Switch (VDS) creation, port groups, and VMkernel interfaces
- vSphere Supervisor enablement with auto-updates enabled by default
- Optional Argo CD instance per edge site for GitOps workflows
- Optional Harbor registry deployment as a Supervisor Service per edge site
- Multi-site deployments (-EdgeSite) and compute-only runs (-ComputeOnly)
- Scoped cleanup (-CleanUp Supervisor|Compute|All|ArgoCD|Harbor) with rollback on failure
- JSON and YAML pre-flight validation (-ValidateOnly) without a vCenter connection
- Interactive configuration layout (-Initialize) and support bundle collection (-CollectLogs)

Requires VCF PowerCLI 9.0+, kubectl, and the VCF CLI.
'@


# Minimum version of the PowerShell engine required by this module
PowerShellVersion = '7.4'

# Name of the Windows PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the Windows PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This requirement is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module. This requirement is valid for the PowerShell Desktop edition only.
# CLRVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module.
#
# NOTE: RequiredModules is intentionally empty. VCF PowerCLI 9.0+ (which provides
# VMware.Sdk.vSphere, VMware.VimAutomation.Core, VMware.VimAutomation.Storage,
# VMware.VimAutomation.Vds, VMware.VimAutomation.WorkloadManagement) is distributed by
# Broadcom's own installer and is NOT installed from PSGallery. Listing those modules in
# RequiredModules caused PowerShellGet v2 to attempt a recursive PSGallery install of the
# entire 10-level VMware dependency chain, which fails with "Unable to resolve module
# reference ''" due to a known bug in PowerShellGet v2's dependency resolver.
# VCF PowerCLI presence and minimum version are validated at runtime by
# Initialize-ScriptVcfPowerCliModuleVersion, which is called on every Start-VcfEdgeAtScale run.
# PowerShell's auto-import mechanism loads the VMware cmdlets on first use as long as
# VCF PowerCLI is installed (i.e. on $env:PSModulePath).
RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module. For best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = @(
    'Show-InfrastructureJsonConfigurationHelp',
    'Show-SupervisorJsonConfigurationHelp',
    'Start-VcfEdgeAtScale'
)

# Cmdlets to export from this module. For best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @()

# Variables to export from this module
VariablesToExport = @()

# Aliases to export from this module. For best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
FileList = @(
    'PSScriptAnalyzerSettings.psd1',
    'VcfEdgeAtScale.psd1',
    'VcfEdgeAtScale.psm1',
    'Private/Cluster.ps1',
    'Private/EntryPoints.ps1',
    'Private/Logging.ps1',
    'Private/Networking.ps1',
    'Private/Supervisor.ps1',
    'Private/Validation.ps1',
    'Templates/1.1.0-25100889.yml',
    'Templates/EXAMPLE.rtf',
    'Templates/README.rtf',
    'Templates/argocd-deployment.yml',
    'Templates/harbor-data-values-v2.14.2.yml',
    'Templates/infrastructure-config-help.json',
    'Templates/infrastructure.json',
    'Templates/legacy-harbor-svs-v2.14.2+vmware.2-vks.1-25220498.yml',
    'Templates/supervisor-config-help.json',
    'Templates/supervisor.json',
    'Tools/veas-json-generator.py'
)

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        # PSEdition_Core, Windows, Linux, MacOS populate the Gallery's left-side filter panes.
        Tags = @(
            'VMware', 'VCF', 'vSphere', 'Supervisor', 'Kubernetes', 'ArgoCD', 'Harbor',
            'Deployment', 'Automation', 'VKS',
            'PSEdition_Core', 'Windows', 'Linux', 'MacOS'
        )

        # A URL to the license for this module.
        LicenseUri = 'https://github.com/vmware/powershell-module-for-vcf-edge-at-scale/blob/main/LICENSE.md'

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/vmware/powershell-module-for-vcf-edge-at-scale'

        # A URL to an icon representing this module.
        IconUri = 'https://raw.githubusercontent.com/vmware/powershell-module-for-vcf-edge-at-scale/main/.github/icon-85px.svg'

        # Release notes displayed on the PowerShell Gallery package page.
        ReleaseNotes = 'https://github.com/vmware/powershell-module-for-vcf-edge-at-scale/blob/main/CHANGELOG.md'

    } # End of PSData hashtable

} # End of PrivateData hashtable

# URI of a help page for this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}