Introduction
As part of my Intel NUC As A ESXi Host series, the following script helps to automate almost all the configuration steps needed for me to quickly provision a new NUC server, or to rebuild an existing one.
It performs the following basic steps…
- Set root password,
- Enables the ESXi SSH Shell, and disables the warning associated with it,
- Renames the local datastore name to be “Local – [hostname]“,
- Sets up all the networking virtual switches and VLANs that I need,
- Enables vMotion,
- Enables and configures the software iSCSI adapter,
- Puts the host into maintenance mode before the final reboot
I’ll go through the script in detail below.
The Script
vmaccepteula rootpw [enter-password-here] keyboard 'United Kingdom' install --firstdisk --overwritevmfs network --bootproto=dhcp reboot %firstboot --interpreter=busybox # Enable & start remote ESXi shell vim-cmd hostsvc/enable_ssh vim-cmd hostsvc/start_ssh # Enable & start ESXi shell vim-cmd hostsvc/enable_esx_shell vim-cmd hostsvc/start_esx_shell # Suppress ESXi shell shell warning and set time-out esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1 esxcli system settings advanced set -o /UserVars/ESXiShellInteractiveTimeOut -i 3600 # Rename local data store vim-cmd hostsvc/datastore/rename datastore1 "Local - $(hostname -s)" # Configure networking and disable IPv6 esxcli network ip set --ipv6-enabled=false esxcli network vswitch standard portgroup add -p "Live" -v vSwitch0 esxcli network vswitch standard portgroup add -p "Private" -v vSwitch0 esxcli network vswitch standard portgroup set -p "Private" -v 42 esxcli network vswitch standard portgroup remove -p "VM Network" -v vSwitch0 # Enable vMotion on adapter vim-cmd hostsvc/vmotion/vnic_set vmk0 # Enable and configure iSCSI software adapter esxcli iscsi software set --enabled=true sleep 5 iscsi_adapter=$(esxcli iscsi physicalnetworkportal list | grep vmhba | awk '{print $1}') esxcli iscsi networkportal add -A ${iscsi_adapter} -n vmk0 esxcli iscsi adapter set -A ${iscsi_adapter} -a $(hostname -s) esxcli iscsi adapter param set -A ${iscsi_adapter} -k HeaderDigest -v required esxcli iscsi adapter param set -A ${iscsi_adapter} -k DataDigest -v required esxcli iscsi adapter discovery sendtarget add -A ${iscsi_adapter} -a [iscsi-target-address-here] esxcli storage core adapter rescan -A ${iscsi_adapter} # Enter maintenance mode, then reboot esxcli system maintenanceMode set -e true esxcli system shutdown reboot -d 10 -r "Rebooting"
Detailed Line-By-Line Descriptions
- Line 1 : Accept the VMware End User Licence Agreement
- Line 2 : Set the master ROOT password for this ESXi host
- Line 3 : Set keyboard to British English, United Kingdom – the correct type of English.
- Line 4 : Install ESXi to the first drive, overwriting anything it finds
- Line 5 : Use DHCP to obtain an IP address for the network
- Line 6 : Reboot
- Line 8 : Set the command interpreter to ‘BusyBox’ for the following instructions
- Line 10-16 : Enable and start SSH and the ESXi Shell
- Line 18-20 : Disable the SSH warning, and set the shell timeout to 1 hour
- Line 23 : Rename the local datastore name to “Local – [hostname]”
- Line 25-30 : Set up networking. I use two networks…
- LIVE : For all the virtual machines that are available on my live home network
- PRIVATE : For all the virtual machines that are only available to each other, and can’t be accessed from anywhere.
- This network also uses a different VLAN to help separate the network traffic – VLAN 42.
- Line 33 : Enable vMotion on the interface
- Line 35-44 : Enable the software iSCSI adapter and configure it. Perform a adapter rescan too
- Line 47 : Put host into maintenance mode
- Line 48 : One final reboot, ready for homelab production