StackDeploy.psm1
Function Start-StackDeploy { #region Global Variables and Check If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { $arguments = "-Command {Start-StackDeploy}" Start-Process "C:\program Files\Powershell\7\pwsh.exe" -Verb runAs -ArgumentList $arguments Break } $global:config = $null $global:cookie = $null $global:servers = @() $global:deployserverIP = $null Clear-Host Get-SDConfig New-SDMainMenu } #endregion Function Get-SDWelcome { write-host "Welcome to the Data Entry Tool for Network Deployments" Write-Host "" } Function Get-SDConfig { If (!(Test-Path C:\StackDeploy)) { New-Item C:\StackDeploy -ItemType Directory } $pathYAML = "C:\StackDeploy\Config.yml" $global:config = (Get-Content $pathYAML -Raw) $global:config = ($config | ConvertFrom-YAML) } Function Set-SDConfig { [CmdletBinding()] param ( # Key to modify [Parameter(Mandatory = $true)] [String] $key, # Parameter help description [Parameter(Mandatory = $true)] [String] $value ) $configUpdate = Get-Content 'C:\StackDeploy\Config.yml' -raw | ConvertFrom-YAML $configUpdate.config.$key = $value $configUpdate | ConvertTo-Yaml | set-content 'C:\StackDeploy\Config.yml' } Function Start-SDInstall { [CmdletBinding()] param ( [Parameter(Mandatory = $false)] [int] $step = 1, # Parameter help description [Parameter(Mandatory = $false)] [int] $StopAfterStep = 0 ) $site = $global:config.config.SiteNumber if (step -eq 1 ) { foreach ($server in $servers) { #Set Inital settings for IMC Set-SDIMCSetup -imcip $server.IMCDHCPAddress #Set Boot Order for Set-SDIMCBootOrder -imcip $server.IMCDHCPAddress New-SDVMwareConfig -vmwareIP $server.VMwareIPAddress -domainName $config.config.DomainName -hostname $server.hostname ` -rootPw "12qwaszx!@QWASZX" -siteNumberIP $config.config.siteNumber -hypenMAC (Set-SDMacFormat -Format Hypen-Notation -mac $server.LAN1MAC) } Start-Sleep -Seconds 900 if ($StopAfterStep -eq 1) { break } $step ++ } if ($step -eq 2) { New-SDVCenterConfig -esxiIP $servers[0].VMwareIPAddress $exitCode = Install-VCenterServer if ($StopAfterStep -eq 1) { break } $step ++ } if ($exitCode -eq 0 -or $step -eq 3) { Set-SDVCenterSettings if ($StopAfterStep -eq 1) { break } $step ++ } if ($step -eq 4) { if ($server.count -le 3) { Add-SDVMHost -esxiip $server[1].VMwareIPAddress -witnessHost $false } elseif ($server.count -gt 3) { Add-SDVMHost -esxiip $server[0].VMwareIPAddress -witnessHost $false Add-SDVMHost -esxiip $server[1].VMwareIPAddress -witnessHost $false Add-SDVMHost -esxiip $server[2].VMwareIPAddress -witnessHost $false Add-SDVMHost -esxiip $server[3].VMwareIPAddress -witnessHost $false Add-SDVMHost -esxiip $server[4].VMwareIPAddress -witnessHost $false Add-SDVMHost -esxiip $server[5].VMwareIPAddress -witnessHost $false Add-SDVMHost -esxiip $server[6].VMwareIPAddress -witnessHost $true } if ($StopAfterStep -eq 1) { break } $step ++ } if ($step -eq 5) { foreach ($server in $servers) { Set-SDVMHSettings -esxiip $server.VMwareIPAddress } if ($StopAfterStep -eq 1) { break } $step ++ } if ($step -eq 6) { if ($server.count -le 3) { New-SDVsanStretchedClusterWitness } elseif ($server.count -gt 3) { New-SDVsanStretchedClusterWitnessLarge } } if ($step -eq 7) { if ($server.count -le 3) { New-SDVsanStretchedCluster -Witness "$site-VMH-003v" } elseif ($server.count -gt 3) { New-SDVsanStretchedCluster -Witness "$site-VMH-007v" } } else { break } New-SDVsanStretchedClusterWitness } #Export Module Members Export-ModuleMember Start-StackDeploy Export-ModuleMember Get-SDWelcome Export-ModuleMember Get-SDConfig Export-ModuleMember Set-SDConfig Export-ModuleMember Start-SDInstall |