I thought I would revisit scripted ESXi installation for my lab. It's been since 5.0 or prior since I actually went into depth on this and there are some significant changes for 6.5. The example script draws heavily from other sources and it is now working.
Goals are:
- Install ESXi, set password, IP, hostname, etc.
- enable shess/ssh
- set logfile location
- add NIC to vSwitch0
- add portgroup(s)
- configure VLANs
- add vSwitch for iSCSI
- set MTU for vSwitch
- create vmkernel NICs
- set MTU for vmkernel NICs
- set failover policy for vmkernel compliant with iSCSI port binding
- Enable software iSCSI
- Execute port binding
- add iSCSI discovery
- add NFS 4.1
- configure NTP
- Set password policy
Hope it is useful!
# Accept the VMware End User License Agreement
vmaccepteula
# Set the root password for the DCUI and ESXi Shell
rootpw P@ssw0rd
# Install on the first local disk available on machine
install --firstdisk --overwritevmfs
# Set the network to Static on the first network adapater, use the specified hostname and do not create a portgroup for the VMs
network --bootproto=static --addvmportgroup=true --device=vmnic0 --ip=172.20.100.103 --netmask=255.255.0.0 --gateway=172.20.0.1 --nameserver=172.20.200.10 --hostname=esx103.mydomain.com
# reboots the host after the scripted installation is completed
reboot
%firstboot --interpreter=busybox
# The following commands MAY BE specific to esxXYZ.mydomain.com. Customize the hostname and IP specific for your installation
# Set the network to static on the first network adapter, specifies network properties, sets hostname, must replace network from above script
# enable & start remote ESXi Shell (SSH)
vim-cmd hostsvc/enable_ssh
vim-cmd hostsvc/start_ssh
# enable & start ESXi Shell (TSM)
vim-cmd hostsvc/enable_esx_shell
vim-cmd hostsvc/start_esx_shell
# supress ESXi Shell shell warning - from YellowBricks (http://www.yellow-bricks.com/2011/07/21/esxi-5-suppressing-the-localremote-shell-warning/)
esxcli system settings advanced set -o /UserVars/SuppressShellWarning -i 1
# Set logfile location for ESXi to SAN (volume must exist) (https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2003322)
esxcli system syslog config set --logdir=/vmfs/volumes/103/host-logfiles/esx103
# Add an extra nic to vSwitch0 and set as active (vmnic1)
esxcli network vswitch standard uplink add --uplink-name=vmnic1 --vswitch-name=vSwitch0
esxcli network vswitch standard policy failover set --active-uplinks vmnic0,vmnic1 --vswitch-name vSwitch0
# configure portgroups
esxcli network vswitch standard portgroup add --portgroup-name Production --vswitch-name vSwitch0
esxcli network vswitch standard portgroup set --portgroup-name Production --vlan-id 24
# Add vSwitch 1
esxcli network vswitch standard add --vswitch-name=vSwitch1
# Add NIC's to vSwitch1 (vmnic2,vmnic3)
esxcli network vswitch standard uplink add --uplink-name=vmnic4 --vswitch-name=vSwitch1
esxcli network vswitch standard uplink add --uplink-name=vmnic5 --vswitch-name=vSwitch1
esxcli network vswitch standard policy failover set --active-uplinks vmnic4,vmnic5 --vswitch-name vSwitch1
# configure mtu for vSwitch1
esxcli network vswitch standard set --mtu 9000 --vswitch-name vSwitch1
# Add iSCSI01 Portgroup to vSwitch1 and create a VMkernel interface
esxcli network vswitch standard portgroup add --portgroup-name=VMkernel-iSCSI01 --vswitch-name=vSwitch1
# Add a virtual NIC to the Portgroup created in the previous step
esxcli network ip interface add --interface-name=vmk1 --mtu 9000 --portgroup-name=VMkernel-iSCSI01
# Set the IP address of the iSCSI01 Portgroup to: 10.0.0.XYZ
esxcli network ip interface ipv4 set --interface-name=vmk1 --ipv4=10.0.100.103 --netmask=255.255.0.0 --type=static
#Set failover policy for iSCSI01 Protgroup so that only one NIC is active
esxcli network vswitch standard portgroup policy failover set --active-uplinks vmnic4 --portgroup-name=VMkernel-iSCSI01
# Add iSCSI02 Portgroup to vSwitch1 and create a VMkernel interface
esxcli network vswitch standard portgroup add --portgroup-name=VMkernel-iSCSI02 --vswitch-name=vSwitch1
# Add a virtual NIC to the Portgroup created in the previous step
esxcli network ip interface add --interface-name=vmk2 --mtu 9000 --portgroup-name=VMkernel-iSCSI02
# Set the IP address of the iSCSI02 Portgroup to: 10.0.0.ABC
esxcli network ip interface ipv4 set --interface-name=vmk2 --ipv4=10.0.100.123 --netmask=255.255.0.0 --type=static
#Set failover policy for iSCSI01 Portgroup so that only one NIC is active
esxcli network vswitch standard portgroup policy failover set --active-uplinks vmnic5 --portgroup-name=VMkernel-iSCSI02
# Enable Software iSCSI
esxcli iscsi software set --enabled 1
#Port Binding
esxcli iscsi networkportal add -A vmhba64 -n vmk1
esxcli iscsi networkportal add -A vmhba64 -n vmk2
# Add iSCSI SAN
esxcli iscsi adapter discovery sendtarget add --adapter vmhba64 --address=10.0.0.23:3260
esxcli storage core adapter rescan --adapter vmhba64
#NFS Storage
# esxcli storage nfs41 add -H "172.20.0.97" -s "/var/nfs/" -v "NFS"
# Add vMotion Portgroup to vSwitch1 and create a VMkernel interface
esxcli network vswitch standard portgroup add --portgroup-name=VMkernel-vMotion --vswitch-name=vSwitch1
esxcli network ip interface add --interface-name=vmk3 --mtu 9000 --portgroup-name=VMkernel-vMotion
esxcli network ip interface ipv4 set --interface-name=vmk3 --ipv4=10.0.100.143 --netmask=255.255.0.0 --type=static
esxcli network vswitch standard portgroup policy failover set --active-uplinks vmnic4 --standby-uplinks vmnic5 --portgroup-name=VMkernel-vMotion
# Add FT Portgroup to vSwitch1 and create a VMkernel interface
esxcli network vswitch standard portgroup add --portgroup-name=VMkernel-FT --vswitch-name=vSwitch1
esxcli network ip interface add --interface-name=vmk4 --mtu 9000 --portgroup-name=VMkernel-FT
esxcli network ip interface ipv4 set --interface-name=vmk4 --ipv4=10.0.100.163 --netmask=255.255.0.0 --type=static
esxcli network vswitch standard portgroup policy failover set --active-uplinks vmnic5 --standby-uplinks vmnic4 --portgroup-name=VMkernel-FT
### NTP CONFIGURATIONS ###
cat > /etc/ntp.conf << __NTP_CONFIG__
restrict default kod nomodify notrap noquerynopeer
restrict 127.0.0.1
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
__NTP_CONFIG__
/sbin/chkconfig --level 345 ntpd on
### PASSWORD CONFIGURATIONS ###
cat > /etc/pam.d/passwd << __PAM.D_CONFIG__
#%PAM-1.0
password requisite /lib/security/$ISA/pam_passwdqc.so retry=3 min=2,2,2,2,2
password sufficient /lib/security/$ISA/pam_unix.so use_authtok nullok shadow sha512
password required /lib/security/$ISA/pam_deny.so
__PAM.D_CONFIG__
# enter maintenance mode
vim-cmd hostsvc/maintenance_mode_enter
# Needed for configuration changes that could not be performed in esxcli (thanks VMware)
reboot