Upload files to "VMware"
This commit is contained in:
parent
d39abcd74c
commit
3d84c4b08d
230
VMware/setNewESXiHostConfiguration.ps1
Normal file
230
VMware/setNewESXiHostConfiguration.ps1
Normal file
|
|
@ -0,0 +1,230 @@
|
||||||
|
<#
|
||||||
|
#############################################################################################################################################
|
||||||
|
# #
|
||||||
|
# ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! #
|
||||||
|
# #
|
||||||
|
# Am Ende der Durchführung dieses Skripts werden die zu konfigurierenden ESXi Hosts AUTOMATISCH NEU GESTARTET !! #
|
||||||
|
# Bitte ALLE zu konfigurierenden ESXi Hosts vorher in den Maintenance Mode fahren! #
|
||||||
|
# #
|
||||||
|
# ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! W A R N U N G ! ! ! #
|
||||||
|
# #
|
||||||
|
#############################################################################################################################################
|
||||||
|
.SYNOPSIS
|
||||||
|
Skript zum initialen Konfigurieren von neuen ESX-Hosts in der ASL.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
Dieses Skript konfiguriert automatisiert die folgenden Einstellungen für neue in Betrieb zu nehmende ESXi Host anhand einer CSV Datei mit Hostnamen:
|
||||||
|
- NTP Server konfigurieren: ntp.akqui.net
|
||||||
|
- NTP Dienst auf Autostart und durchstarten des Dienstes
|
||||||
|
- Firewallfreischaltung für Update Manager
|
||||||
|
- SSH aktivieren
|
||||||
|
- Shell Warnings unterdrücken
|
||||||
|
- DNS entsprechned Standort konfigurieren
|
||||||
|
- Storage Adapter konfigurieren
|
||||||
|
- Firewallregeln und Freischaltung für NTP
|
||||||
|
- Host rebooten
|
||||||
|
|
||||||
|
.NOTES
|
||||||
|
Historie: v0.1 : 23.01.2019
|
||||||
|
erste laufende Version
|
||||||
|
v1.0 : 23.01.2019
|
||||||
|
|
||||||
|
Author : Axel Weichenhain
|
||||||
|
|
||||||
|
last change : 23.01.2019
|
||||||
|
Testlauf mit erchpxpes01.asl.local
|
||||||
|
|
||||||
|
.INPUTS
|
||||||
|
Skript muss über die Kommandozeile mit bestimmten Parametern aufgerufen werden (siehe unten).
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
Rückmeldung über Aktionen zur Laufzeit
|
||||||
|
|
||||||
|
.PARAMETER vcenter
|
||||||
|
Optional: Name des abzufragenden vCenters. Wird dieser nicht angegeben, verbindet sich das Skript automatisch mit allen vCentern in der ASL.LOCAL
|
||||||
|
Dies sind zur Zeit:
|
||||||
|
"admhpwvvc03.asl.local",
|
||||||
|
"oss0plvvc01.asl.local",
|
||||||
|
"oss0plvvc02.asl.local",
|
||||||
|
"dcc0plvvc01.asl.local",
|
||||||
|
"del0plvvc01.asl.local",
|
||||||
|
"cjd0plvvc01.asl.local"
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
setNewESXiHostConfiguration.ps1 -vCenter "oss0plvvc01.asl.local"
|
||||||
|
|
||||||
|
.PARAMETER Username
|
||||||
|
Mandatory: Benutzer zum Verbinden mit vCenter(n)
|
||||||
|
Wird dieser Parameter nicht gleich beim Aufruf des Skripts angegeben, so wird dieser vom Skript interaktiv abgefragt.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
setNewESXiHostConfiguration.ps1 -vCenter "oss0plvvc01.asl.local" -Username "asl\adm.<nachname>"
|
||||||
|
|
||||||
|
.PARAMETER Password
|
||||||
|
Mandatory: Kennwort zum Verbinden mit vCenter(n)
|
||||||
|
Wird dieser Parameter nicht gleich beim Aufruf des Skripts angegeben, so wird dieser vom Skript interaktiv abgefragt.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
setNewESXiHostConfiguration.ps1 -vCenter "oss0plvvc01.asl.local" -Username "asl\adm.<nachname>" -Password "<yourpasswordhere>"
|
||||||
|
|
||||||
|
.PARAMETER ImportFile
|
||||||
|
Mandatory: Pfad und Dateiname der zu importierenden Liste von Hostnamen
|
||||||
|
Einfache Textdatei mit Hostname pro Zeile:
|
||||||
|
host1.asl.local
|
||||||
|
host2.asl.local
|
||||||
|
.
|
||||||
|
.
|
||||||
|
.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
setNewESXiHostConfiguration.ps1 -vCenter "oss0plvvc01.asl.local" -Username "asl\adm.<nachname>" -Password "<yourpasswordhere>" -ImportFile "c:\temp\import.txt"
|
||||||
|
|
||||||
|
#>
|
||||||
|
|
||||||
|
|
||||||
|
# Parameterabfrage
|
||||||
|
PARAM (
|
||||||
|
[Parameter(HelpMessage="vCenter Server Hostname/IP Address", Mandatory=$false)][string] $vCenter,
|
||||||
|
[Parameter(HelpMessage="Pfad zur Hostliste", Mandatory=$true)][string] $ImportFile,
|
||||||
|
[Parameter(HelpMessage="vCenter account's username.", Mandatory=$true)][string] $Username,
|
||||||
|
[Parameter(HelpMessage="vCenter account's password.", Mandatory=$true)][string] $Password
|
||||||
|
)
|
||||||
|
|
||||||
|
#Primäre DNS Server der einzelnen Standorte
|
||||||
|
$nor01 = "172.20.6.51"
|
||||||
|
$ham02 = "172.20.6.50"
|
||||||
|
$ham01 = "172.20.6.11"
|
||||||
|
$iz = "172.21.6.11"
|
||||||
|
|
||||||
|
cls
|
||||||
|
|
||||||
|
#Initialisierung der Powershell Module
|
||||||
|
import-module vmware.vimautomation.core
|
||||||
|
|
||||||
|
#PowerCLI für ungültige Zertifikate und Verbindung mit mehreren vCentern konfigurieren
|
||||||
|
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -DefaultVIServerMode Multiple -Scope User, allusers -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
|
||||||
|
#Wenn der Parameter "vCenter" mit angegeben wurde:
|
||||||
|
if($vCenter -ne ""){
|
||||||
|
$vcenters = $vCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
#Wenn der Parameter "vCenter" nicht mit angegeben wurde
|
||||||
|
else{
|
||||||
|
$vcenters = @(
|
||||||
|
"admhpwvvc03.asl.local",
|
||||||
|
"oss0plvvc01.asl.local",
|
||||||
|
"oss0plvvc02.asl.local",
|
||||||
|
"dcc0plvvc01.asl.local",
|
||||||
|
"del0plvvc01.asl.local",
|
||||||
|
"cjd0plvvc01.asl.local"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
#Verbindung mit vCenter
|
||||||
|
Connect-VIServer $vcenters -user $Username -Password $Password
|
||||||
|
|
||||||
|
cls
|
||||||
|
|
||||||
|
#Hostliste einlesen
|
||||||
|
#CSV-Datei importieren
|
||||||
|
Write-Host "Importiere Liste der zu konfigurierenden ESXi Hosts" -ForegroundColor Green
|
||||||
|
$HostList = get-content $ImportFile
|
||||||
|
Write-Host "Hostliste wurde importiert" -ForegroundColor Green
|
||||||
|
|
||||||
|
# Hosts abarbeiten
|
||||||
|
Write-Host "Starte Verarbeitung der zu konfigurierenden ESXi Hosts" -ForegroundColor Green
|
||||||
|
# Jeden Host in der Liste bearbeiten
|
||||||
|
foreach($entry in $HostList){
|
||||||
|
#Host aus vCenter einlesen
|
||||||
|
$vmhost = Get-VMHost $entry
|
||||||
|
|
||||||
|
# Schritt Nummer 1 - Standort und Kennwort ermitteln
|
||||||
|
$hostname = $vmhost.Name
|
||||||
|
Write-Host "Konfiguriere " $hostname -ForegroundColor Green
|
||||||
|
#Standort
|
||||||
|
Write-Host "Ermittle Standort von " $hostname -ForegroundColor Green
|
||||||
|
$hostlocation = $hostname.substring(3,1)
|
||||||
|
#Root Kennwort
|
||||||
|
Write-Host "Ermittle Root-Kennwort von " $hostname -ForegroundColor Green
|
||||||
|
$hostnumber = $hostname.substring(($hostname.Length - 12),2)
|
||||||
|
$hostpw = "getXS2ES" + $hostnumber + "!"
|
||||||
|
|
||||||
|
# Schritt Nummer 2 - NTP konfigurieren
|
||||||
|
Write-Host "Konfiguriere NTP von " $hostname -ForegroundColor Green
|
||||||
|
$ntpsrvs = $vmhost | Get-VMHostNtpServer
|
||||||
|
foreach ($ntpsrv in $ntpsrvs){
|
||||||
|
Remove-VMHostNtpServer $ntpsrv -VMHost $vmhost -Confirm:$false
|
||||||
|
}
|
||||||
|
$vmhost | Add-VMHostNtpServer ntp.akqui.net #NTP Server 1
|
||||||
|
|
||||||
|
# Schritt Nummer 3 - Firewall und Dienste konfigurieren
|
||||||
|
Write-Host "Konfiguriere Firewall und starte Dienste von " $hostname -ForegroundColor Green
|
||||||
|
$vmhost | Get-VMHostFirewallException | where {$_.Name -eq "NTP client"} | Set-VMHostFirewallException -Enabled:$true -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
$vmhost | Get-VmHostService | Where-Object {$_.key -eq "ntpd"} | Start-VMHostService -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
$vmhost | Get-VmHostService | Where-Object {$_.key -eq "ntpd"} | ReStart-VMHostService -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
$vmhost | Get-VmHostService | Where-Object {$_.key -eq "ntpd"} | Set-VMHostService -policy "on" -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
$vmhost | Get-VMHostFirewallException | where {$_.Name -eq "vCenter Update Manager"} | Set-VMHostFirewallException -Enabled:$true -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
|
||||||
|
# Schritt Nummer 4 - SSH aktivieren und Shell Warnings unterdrücken
|
||||||
|
Write-Host "Unterdruecke Shell Warnings von " $hostname -ForegroundColor Green
|
||||||
|
$vmhost | Get-VmHostService | Where-Object {$_.key -eq "TSM"} | Set-VMHostService -policy "on"
|
||||||
|
Start-VMHostService -HostService ($vmHost | Get-VMHostService | Where { $_.Key -eq "TSM"}) | Out-null
|
||||||
|
$vmhost | Get-VmHostService | Where-Object {$_.key -eq "TSM-SSH"} | Set-VMHostService -policy "on"
|
||||||
|
Start-VMHostService -HostService ($vmHost | Get-VMHostService | Where { $_.Key -eq "TSM-SSH"}) | Out-null
|
||||||
|
$vmhost | Get-AdvancedSetting UserVars.SuppressShellWarning | Set-AdvancedSetting -Value 1 -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
|
||||||
|
# Schritt Nummer 5 - DNS Konfiguration
|
||||||
|
Write-Host "Prüfe Standort von " $hostname -ForegroundColor Green
|
||||||
|
#Prüfen ob Host in Darmstadt -> muss manuell gepflegt werden.
|
||||||
|
if($hostlocation -eq "d"){
|
||||||
|
Write-Host "Standort Darmstadt wird für DNS nicht beachtet! Host muss manuell konfiguriert werden!" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
# DNS Kpnfiguration entsprechend Standort vornehmen
|
||||||
|
# Nordersted abarbeiten
|
||||||
|
if($hostlocation -eq "n"){
|
||||||
|
Write-Host "Konfiguriere DNS und Domain Name von $vmhost fuer NOR01" -ForegroundColor Green
|
||||||
|
Get-VMHostNetwork -VMHost $vmhost | Set-VMHostNetwork -DomainName "asl.local" -DNSAddress $nor01 , $ham02 -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
}
|
||||||
|
if($hostlocation -eq "z"){
|
||||||
|
Write-Host "Konfiguriere DNS und Domain Name von $vmhost fuer HAM02" -ForegroundColor Green
|
||||||
|
Get-VMHostNetwork -VMHost $vmhost | Set-VMHostNetwork -DomainName "asl.local" -DNSAddress $ham02 , $nor01 -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
}
|
||||||
|
if($hostlocation -eq "h"){
|
||||||
|
Write-Host "Konfiguriere DNS und Domain Name von $vmhost fuer HAM01" -ForegroundColor Green
|
||||||
|
Get-VMHostNetwork -VMHost $vmhost | Set-VMHostNetwork -DomainName "asl.local" -DNSAddress $ham01 , $nor01 -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
}
|
||||||
|
if($hostlocation -eq "i"){
|
||||||
|
Write-Host "Konfiguriere DNS und Domain Name von $vmhost fuer IZ" -ForegroundColor Green
|
||||||
|
Get-VMHostNetwork -VMHost $vmhost | Set-VMHostNetwork -DomainName "asl.local" -DNSAddress $iz , $nor01 -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
|
}
|
||||||
|
#Per SSH mit Host verbidnen und resolv.conf anpassen [Experimentell!]
|
||||||
|
#Write-Host "Passe resolv.conf an fuer " $vmhost -foregroudColor -Green
|
||||||
|
#launch the command to append the options to the /etc/resolv.conf file
|
||||||
|
#echo y | .\plink.exe -v $hostname -l $esxuser -pw $hostpw echo “options timeout:1 attempts:1 rotate >> /etc/resolv.conf”
|
||||||
|
}
|
||||||
|
|
||||||
|
# Schritt Nummer 6 - Storage Adapter Config
|
||||||
|
Write-Host "Konfiguriere Storage Adapter von $vmhost" -ForegroundColor Green
|
||||||
|
$esxcli = Get-EsxCli -VMHost $vmhost
|
||||||
|
$esxcli.storage.nmp.satp.set($null,"VMW_PSP_RR","VMW_SATP_DEFAULT_AA")
|
||||||
|
$esxcli = Get-EsxCli -VMHost $vmhost
|
||||||
|
|
||||||
|
# Schritt Nummer 7 - Firewallregeln NTP VIB file
|
||||||
|
Write-Host "Konfiguriere Firewallregeln für NTP von $vmhost" -ForegroundColor Green
|
||||||
|
$esxcli.software.acceptance.set("CommunitySupported")
|
||||||
|
$esxcli.software.vib.install($null,$null,$null,$null,$null,$null,$null,$null,"http://files.v-front.de/fwenable-ntpd-1.2.0.x86_64.vib")
|
||||||
|
#enabling firewall rule
|
||||||
|
$FirewallExceptions = Get-VMHostFirewallException -VMHost $vmhost | where {$_.Name.StartsWith('NTP D')}
|
||||||
|
$FirewallExceptions | Set-VMHostFirewallException -Enabled $true
|
||||||
|
|
||||||
|
#Reboot ESXi Host to make settings permanent
|
||||||
|
Write-Host "Konfiguration von $vmhost abgeschlossen" -ForegroundColor Green
|
||||||
|
Write-Host "Achtung! der ESXi Host " $vmhost " wird jetzt neu gestartet! Du hattest Deine Chance....." -ForegroundColor red
|
||||||
|
Restart-VMHost -VMHost $vmhost -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue -Force
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#vom vCenter trennen
|
||||||
|
disconnect-viserver -Server * -Confirm:$false -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue
|
||||||
Loading…
Reference in a new issue