new1234.jpg

Archive

Posts Tagged ‘Automating’

VMware: Configure new vSphere 6 host with PowerCLI

August 17th, 2015 2 comments

Last week I upgraded my original Configure vSphere 4 PowerCLI script I created in 2011 . When you run the script with PowerShell ICE or PowerCLI you have two options: 1. Configure a new vSphere 6 host. 2. Add the new configured host to vCenter Server. I’m still not a PowerCLI Pro so.. please comment if you have any tips or suggestions.

Benefits:

— When you use this script, the script is your vSphere configuration documentation
— You don’t need a license for Host Profiles or revert temporary to Evaluation Mode
— Fresh (new) host configuration takes ~10 minutes
— vSphere Host configuration standardization
— Easy add variables during deployment
— Easy GUI menu

 

Function:

Menu option: 1 – Configure new vSphere host

— Connect to the target ESXi Host
— Enter Maintenance mode
— Set Hostname and Domain name
— Configure DNS settings
— Configure NTP settings
— Configuring Simple Network Management Protocol (SNMP)
— Delete the default VM Network
— Configure vSwitch0 – Management / vMotion
— Configure vSwitch1 – Production Network
— Configure vSwitch2 – iSCSI
— Configure vSwitch3 – iSCSI
— Install Software iSCSI Initiator
— Configure iSCSI target address
— Configure iSCSI initiator name
— Enable iSCSI Initiator
— Rescan on all HBAs and Rescan for VMFS volumes
— Exit Maintenance Mode

Menu option: 2 – Configure new vSphere host to vCenter Server

— Connect vCenter server
— Add vSphere Host to vCenter server
— Re-balance Cluster

Menu option: 0 – Quit

 


Script upgraded for hardware setup:

Host

— Type: Dell PowerEdge R630
— Network: 6x 10 GB
— Storage: flash (2×8 GB)
— Memory: 256 GB
— CPU:  2x E5-2660 v3

Storage

— Dell Compellent SC4020 (iSCSI)

Network

— DellForce 10


Script:

#====================================================================#
#   SCRIPT:        VMP_Configure_new_vSphere6_Host_with_Menu.ps1     #
#   FUNCTION:      Configure fresh installed host                    #
#   CREATED:       05/07/2011                                        #
#   MODIFIED:      17/08/2015                                        #
#   OWNER:         S.Daems / VMpros.nl                               #
#   VERSION:       v.1.7                                             #
#====================================================================#
#   CHANGELOG:                                                       #
#                                                                    #
#   v.1.7                                                            #
#                                                                    #
#    - Script upgraded to vSphere 6.0                                #
#    -- Updated obsolete commands (vSphere 6 proof)                  #
#    - Install and configure 10GB iSCSI storage network              #
#    -- Configure iSCSI initiator                                    #
#    -- Configure iSCSI initator IQN name                            #
#    - Updated and configure SMNP                                    #
#    - Updated DNS settings                                          #
#    - Updated Custom Definitions field                              #
#    - Updated Network Configuration parameters                      #
#                                                                    #
#   USAGE:                                                           #
#                                                                    #
#    - Edit script in Windows PowerShell ISE / Notepad ++            #
#    - Add static values in "Custom Definitions" section             #
#    - Run script with Windows PowerShell ISE or PowerCLI 6.0        #                                                                    #
#    - Answer dynamic values during script                           #                                                                 #
#    - Enjoy!                                                        #
#                                                                    #
#                                                                    #
#   NOTE:                                                            #
#                                                                    #
#    - Run this script only on a empty vSphere 6 host                #
#    - Check if the correct pNIC's are configured for NIC Teaming    #
#    - This script is written with VMware vSphere PowerCLI 6.0       #
#                                                                    #
#                                                                    #
#====================================================================#
#   MENU                                                             #
#====================================================================#
do {
 
Write-Host "Please make your choice:" -foregroundcolor yellow
Write-Host " 1. Configure new vSphere host"
Write-Host " 2. Configure new vSphere host to vCenter Server"
Write-Host " 0. Quit"
Write-Host " "
$response = Read-Host "Select 0-2"
Write-Host " "
 
switch ($response)
{
1 {
#====================================================================#
#   HOST = CUSTOM DEFINITIONS                                        #
#====================================================================#
$ESX_host = read-host "Select ESXi host by DNS to connect"
$New_hostname = read-host "Select hostname to configure"
$New_domainname = "VMpros.lan"
$Root_user = "root"
$Root_password = "VMpros#2015!"
$DNS01 = "10.32.17.5"
$DNS02 = "10.32.17.6"
$VMK01 = read-host "Select iSCSI VMkernel 01 IP-address to configure"
$VMK02 = read-host "Select iSCSI VMkernel 02 IP-address to configure"
$VLAN01_label = "VMP-VLAN200"
$VLAN02_label = "VMP-VLAN300"
$VLAN03_label = "VMP-VLAN400"
$VLAN04_label = "VMP-VLAN500"
$VLAN05_label = "VMP-VLAN600"
$VLAN06_label = "VMP-VLAN700"
$VLAN01_id = "200"
$VLAN02_id = "300"
$VLAN03_id = "400"
$VLAN04_id = "500"
$VLAN05_id = "600"
$VLAN06_id = "700"
$iSCSI_sub = "255.255.255.0"
$iSCSI_target_A = "172.45.21.40"
$iSCSI_target_B = "172.45.22.40"
$vMotion_ip = read-host "Select vMotion VMkernel IP-address to configure"
$vMotion_sub = "255.255.255.0"
$NTP01 = "0.nl.pool.ntp.org"
$NTP02 = "1.nl.pool.ntp.org"
$MTU = "9000"
#
#
#
#====================================================================#
# ***LOAD PLUGINS***                                                 #
#====================================================================#
Add-PSSnapin vmware.vimautomation.core
#====================================================================#
#
#
#
#====================================================================#
Write-Host "-- vSphere Host-configuration starting..." -foregroundcolor yellow
#====================================================================#
Write-Host "-- Connect to the target ESXi Host" -foregroundcolor green
#====================================================================#
Set-PowerCLIConfiguration -invalidCertificateAction "ignore" -confirm:$false | out-null
Connect-VIServer "$ESX_host" -User "$Root_user" -Password "$Root_password" | out-null
Start-Sleep -Seconds 10
#--------------------------------------------------------------------#
Write-Host "-- Enter Maintenance mode" -foregroundcolor green | out-null
#--------------------------------------------------------------------#
Get-VMHost | Set-VMHost -State maintenance | out-null
#--------------------------------------------------------------------#
#
#
#
#====================================================================#
# ***CONFIGURE HOST SETTINGS***                                      #
#====================================================================#
Write-Host "-- Set Hostname and Domain name" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHostNetwork | Set-VMHostNetwork -DomainName $New_domainname -HostName $New_hostname | out-null
Start-Sleep -Seconds 10
#--------------------------------------------------------------------#
Write-Host "-- Configure DNS settings" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHostNetwork | Set-VMHostNetwork -DnsAddress "$DNS01" , "$DNS02" -SearchDomain "$New_domainname" | out-null
#--------------------------------------------------------------------#
Write-Host "-- Configure NTP settings" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHost | Add-VmHostNtpServer -NtpServer "$NTP01" , "$NTP02" | out-null
Get-VMHost | Get-VMHostFirewallException | where {$_.Name -eq "NTP client"} | Set-VMHostFirewallException -Enabled:$true | out-null
Get-VMHost | Get-VmHostService | Where-Object {$_.key -eq "ntpd"} | Start-VMHostService | out-null
Get-VMhost | Get-VmHostService | Where-Object {$_.key -eq "ntpd"} | Set-VMHostService -policy "automatic" | out-null
#--------------------------------------------------------------------#
Write-Host "-- Configuring Simple Network Management Protocol (SNMP)" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VMHostSNMP | Set-VMhostSnmp -ReadOnlyCommunity 'public' | out-null
Get-VMHostSnmp | Set-VMHostSnmp -Enabled:$true | out-null
#--------------------------------------------------------------------#
#
#
#
#====================================================================#
# ***CONFIGURE NETWORK SWITCHES***                                   #
#====================================================================#
Write-Host "-- Delete the default VM Network" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VirtualPortGroup -Name "VM Network" | Remove-VirtualPortGroup -Confirm:$false | out-null
#--------------------------------------------------------------------#
Write-Host "-- Configure vSwitch0 - Management / vMotion" -foregroundcolor green
#--------------------------------------------------------------------#
Get-VirtualSwitch -Name vSwitch0 | Set-VirtualSwitch -Nic vmnic0,vmnic7 -Confirm:$false | out-null
New-VMHostNetworkAdapter -PortGroup vMotion -VirtualSwitch vSwitch0 -IP "$vMotion_ip" -SubnetMask "$vMotion_sub" -vMotionEnabled:$true -Confirm:$false | out-null
Get-virtualportgroup -name vMotion | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic7 | out-null
Get-virtualportgroup -name vMotion | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic0 | out-null
Get-virtualportgroup -name "Management Network" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicStandby vmnic7 | out-null
Get-virtualportgroup -name "Management Network" | Get-NicTeamingPolicy | Set-NicTeamingPolicy -MakeNicActive vmnic0 | out-null
#--------------------------------------------------------------------#
Write-Host "-- Configure vSwitch1 - Production Network" -foregroundcolor green
#--------------------------------------------------------------------#
New-VirtualSwitch -Name vSwitch1 -Nic vmnic4,vmnic6 -Confirm:$false | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "$VLAN01_label" -VLANID "$VLAN01_id" | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "$VLAN02_label" -VLANID "$VLAN02_id" | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "$VLAN03_label" -VLANID "$VLAN03_id" | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "$VLAN04_label" -VLANID "$VLAN04_id" | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "$VLAN05_label" -VLANID "$VLAN05_id" | out-null
Get-VirtualSwitch -Name vSwitch1 | New-VirtualPortGroup -Name "$VLAN06_label" -VLANID "$VLAN06_id" | out-null
#--------------------------------------------------------------------#
Write-Host "-- Configure vSwitch2 - iSCSI" -foregroundcolor green
#--------------------------------------------------------------------#
New-VirtualSwitch -Name vSwitch2 -Nic vmnic5 -MTU $MTU | out-null
New-VMHostNetworkAdapter -PortGroup "iSCSI01" -VirtualSwitch vSwitch2 -IP $VMK01 -SubnetMask "$iSCSI_sub" -MTU "$MTU" | out-null
#--------------------------------------------------------------------#
Write-Host "-- Configure vSwitch3 - iSCSI" -foregroundcolor green
#--------------------------------------------------------------------#
New-VirtualSwitch -Name vSwitch3 -Nic vmnic1 -MTU $MTU | out-null
New-VMHostNetworkAdapter -PortGroup "iSCSI02" -VirtualSwitch vSwitch3 -IP $VMK02 -SubnetMask "$iSCSI_sub" -MTU "$MTU" | out-null
#------------------------------------------------------------------
#
#
#
#=====================================================================#
# ***CONFIGURE STORAGE***                                             #
#=====================================================================#
Write-Host "-- Install Software iSCSI Initiator" -foregroundcolor green
#---------------------------------------------------------------------#
Get-VMHostStorage $ESX_host | Set-VMHostStorage -SoftwareIScsiEnabled $false | out-null
Start-Sleep -Seconds 15 
#---------------------------------------------------------------------#
Write-Host "-- Configure iSCSI target address" -foregroundcolor green
#---------------------------------------------------------------------#
$iSCSI_HBA = Get-VMHost | Get-VMHostHba | Where {$_.Type -eq "Iscsi"} | Where {$_.Model -eq "iSCSI Software Adapter"}
Get-VMHostHba "$iSCSI_HBA" | New-IScsiHbaTarget -Address "$iSCSI_target_A" | out-null
Get-VMHostHba "$iSCSI_HBA" | New-IScsiHbaTarget -Address "$iSCSI_target_B" | out-null
#---------------------------------------------------------------------#
Write-Host "-- Configure iSCSI initiator name" -foregroundcolor green
#---------------------------------------------------------------------#
Get-VMHost | Get-VMHostHba | Where {$_.Type -eq "Iscsi"} | Where {$_.Model -eq "iSCSI Software Adapter"} | Set-VMHostHba -IScsiName "iqn.1998-01.com.vmware$ESX_host" | out-null
#---------------------------------------------------------------------#
Write-Host "-- Enable iSCSI Initiator" -foregroundcolor green
#---------------------------------------------------------------------#
Get-VMHostStorage $ESX_host | Set-VMHostStorage -SoftwareIScsiEnabled $True | out-null
#---------------------------------------------------------------------#
Write-Host "-- Rescan on all HBAs and Rescan for VMFS volumes" -foregroundcolor green
#---------------------------------------------------------------------#
Get-VMHostStorage -VMHost $ESX_host -RescanAllHba | out-null
Get-VMHostStorage -VMHost $ESX_host -RescanVmfs | out-null
#---------------------------------------------------------------------#
#
#
#
#=====================================================================#
# ***FINISHING CONFIGURATION***                                       #
#=====================================================================#
Write-Host "-- Exit Maintenance Mode" -foregroundcolor green
#---------------------------------------------------------------------#
Get-VMHost | Set-VMHost -State connected | out-null
#---------------------------------------------------------------------#
#
#
#
Write-Host "vSphere Host-configuration has finished.." -foregroundcolor yellow
break;
}
2 {
#====================================================================#
#   vCenter - CUSTOM DEFINITIONS                                     #
#====================================================================#
$vCenter_server = read-host "Select vCenter server to connect"
$vCenter_administrator = read-host "Select vCenter Administrator"
$vCenter_password = read-host "Select vCenter Administrator password"
$vCenter_cluster = read-host "Select Cluster to add host"
Write-Host "vSphere Host will be added in vCenter server..." -foregroundcolor Green
#====================================================================#
Write-Host "Connect to the target vCenter server" -foregroundcolor green
#====================================================================#
Connect-VIServer "$vCenter_server" -User "$vCenter_administrator" -Password "$vCenter_password"
#====================================================================#
Add-VMHost $ESX_host -Force -Location (Get-Cluster "$vCenter_cluster") -User root -Password "$Root_password" | out-null
#====================================================================#
#
#
#
#====================================================================#
# ***FINISHING CONFIGURATION***                                      #
#====================================================================#
Write-Host "Re-balance VMs in cluster using DRS" -foregroundcolor green
#====================================================================#
Get-DrsRecommendation -Cluster (Get-Cluster "$vCenter_cluster") -Refresh | out-null
#====================================================================#
#
#
#
Write-Host "Host is added to vCenter Server.." -foregroundcolor yellow
break;
}
}
 
}
while ($response -ne "0")

 

 

Script output:

image

 

 

sanderdaems

Sander Daems is founder and author of this blog and working as a Lead (Sr.) Consultant by UNICA ICT Solutions. Sander has over 15 years experience in IT, primary focus: virtualization and modern worksplace.

More Posts - Website

Follow Me:
TwitterLinkedIn

VMware: Automating VMware Tools upgrade in vCenter Server 4.0 (1010796)

May 26th, 2009 No comments

his article provides information about and steps for automating the VMware Tools upgrade in vCenter Server 4.0.

The following are required for automatic upgrades:

  • Virtual machines must have a version of VMware Tools shipped with ESX Server 3.0.1 or greater installed.
  • Virtual machines must be hosted on an ESX Server 3.0.1 or greater, and the vCenter Server must be version 2.0.1 or greater.
  • Virtual machines must be running a Linux or Windows guest operating system that is supported by ESX Server 3.0.1 or greater and vCenter 2.0.1 or greater.
  • Virtual machines must be powered on.

To configure virtual machines to automatically upgrade VMware Tools:

  1. Power off the virtual machine.
  2. Right-click the virtual machine and click Edit Settings.
  3. On the Options tab, click VMware Tools.
  4. In the Advanced pane, select Check and upgrade Tools before each power-on and click OK.

Note: The next time the virtual machine is powered on, it checks the ESX/ESXi host for a newer version of VMware Tools. If one is available, it is installed and the guest operating system is restarted (if required).

For more information, see Upgrading an ESX 3.x virtual machine to ESX 4.0 (1010675).

Source: 1010796