ESXi 4.1 network weirdness – why local TSM is really handy

I haven’t had a lot of time to find out what caused some weird behaviour in our lab recently, nor whether what I saw was expected or not. And unfortunately I don’t have screenshots. So you’ll just have to believe me. I’m following the issue up with our local VMware team this week, so hopefully I can provide a KB or something.

In our lab we have some ESXi 4.1 hosts attached to Cisco 3120 switches. Each host has a single, ether-channelled vSwitch, with portgroups and vmkernel ports for the Management Network and vMotion. For whatever reason, the network nerds in our team had to do some IOS firmware updates on the switch stack that the blades were connected to. We didn’t shut anything down, because we wanted to see what would happen.

What we saw was some really weird behaviour. 4 of the 8 hosts (one test data centre) had no issues with connectivity at all. In the other test data centre, 1 of the 4 hosts showed no signs of a problem. Another 2 hosts eventually “came good” after a few hours had elapsed. And one simply wouldn’t play ball. Logging in to the DCUI showed that the Management Network now had a VLAN ID associated with the vMotion network, and had also taken on the IP address of the vMotion network. Now why we have a routable vMotion network in the first place – I’m not so sure. But it _appears_ that the ESXi host had simply decided to go with it. We could connect to the host directly using the vSphere client connecting to the vMotion IP address. No matter how many times / reboots / etc I tried to change the IP via the DCUI, it wouldn’t change.

Not good. In order to get the host sorted out, I had to remove the vMotion portgroup, re-assign the correct IP address using some commands, and then re-create the vMotion portgroup. Here’s how you do it:

esxcfg-vmknic -d vMotion
esxcfg-vswitch -D vMotion vSwitch0

esxcfg-vmknic -a “Management Network” -i 192.168.0.31 -n 255.255.255.0

esxcfg-vswitch -v 84 -p “Management Network” vSwitch0

esxcfg-vmknic -a “vMotion” -i 192.168.1.31 -n 255.255.255.0

esxcfg-vswitch -v 86 -p “vMotion” vSwitch0

Then log in to vMA and run this command:

vicfg-vmknic -h labhost31.poc.com -E vMotion

And we’re back up and running. I hope to have a follow-up post when I’ve had a chance to talk it over with VMware.

VMware VirtualCenter 2.5 Update 4

I’ve been nuts deep in a SAN migration project recently and promptly missed the announcement that VMware VirtualCenter 2.5 Update 4 is now available for download. I haven’t had time to put it through its paces yet, but noticed in the release notes that some plugins have been updated, some more useful things have been added to Virtual Machine monitoring, and this little nugget with esxcfg-mpath (a command dear to my heart) still isn’t fixed. But, hey, it’s still better than Sun’s CAM.

VMware esxcfg-*

I was joking with a friend a little while ago that I’d like to be famous like P. Doody, or whatever his name is, but for something really obscure, like using esxcfg-* commands in VMware vi3. So here’s a rough outline of _some_ of the things you can do with the esxcfg-* commands, and how you could put them to good use. This has been covered in a few forums already. See Russ Henmi’s excellent VMworld 2006 presentation, and the Taupo Consulting B2V Guide to VMware ESX Server 3 but I wanted to add my own interpretation and provide some useable examples of how I’ve had to use the commands. These are particularly useful for unattended builds of ESX hosts and handy if you’ve only got a text-based console at hand. I know, you’re all using VT420s like me. Hopefully, I can become famous enough to be able to wear my sunglasses in public:

To get a feel for what commands are available, log on to the console (or via ssh if you like), and type

esxcfg-[TAB][TAB].

[root@vi3host root]# esxcfg-
esxcfg-advcfg esxcfg-firewall esxcfg-module esxcfg-pciid esxcfg-swiscsi esxcfg-vswif
esxcfg-auth esxcfg-info esxcfg-mpath esxcfg-rescan esxcfg-upgrade esxcfg-vswitch
esxcfg-boot esxcfg-init esxcfg-nas esxcfg-resgrp esxcfg-vmhbadevs
esxcfg-dumppart esxcfg-linuxnet esxcfg-nics esxcfg-route esxcfg-vmknic

esxcfg-advcfg

From the man page “…provides an interface to query and modify the advanced options of the VMkernel. These options control a wide variety of different areas in the VMkernel including storage, resource, and networking global settings.”

Use esxcfg-info -o (discussed below) to output the advanced parameters to a file for further investigation.

Here are some examples:

[root@vi3host root]# esxcfg-advcfg -g /VMFS3/ZeroedThickVirtualDisks
Value of ZeroedThickVirtualDisks is 1

[root@vi3host root]# esxcfg-advcfg -g /Disk/SupportSparseLUN
Value of SupportSparseLUN is 1

[root@vi3host root]# esxcfg-advcfg -g /Disk/MaxLUN
Value of MaxLUN is 256

[root@vi3host root]# esxcfg-advcfg -g /Scsi/ConflictRetries
Value of ConflictRetries is 80

[root@vi3host root]# esxcfg-advcfg -g /LVM/EnableResignature
Value of EnableResignature is 0

[root@vi3host root]# esxcfg-advcfg -g /Net/NotifySwitch
Value of NotifySwitch is 1

So what can you configure? Read through the output of esxcfg-info -o and look at how the values are listed.

esxcfg-auth

From the man page “…provides an easy way to configure your server to allow network based authentication as well as password complexity settings for your machine. It supports setting up your system to do authentication against an Active Directory Server, but not user management, as well as authentication against a NIS server, a Kerberos server, or an LDAP server. You can configure the way that passwords are stored and the complexity of the password when a user sets a new password.

This utility is experimental. It is likely to change.”

So let’s do something with it and update vmware-authd as well.

esxcfg-auth –enablead –addomain=domain.net –addc=adserver.domain.net –krb5realm=domain.net –krb5kdc=adserver.domain.net –krb5adminserver=adserver.domain.net

esxcfg-auth –passmaxdays=0

Update vmware-authd to allow AD logon

echo “#%PAM-1.0” > /etc/pam.d/vmware-authd
echo “# Built by script” >> /etc/pam.d/vmware-authd
echo “auth sufficient /lib/security/pam_unix_auth.so shadow nullok” >> /etc/pam.d/vmware-authd
echo “auth required /lib/security/pam_krb5.so use_first_pass” >> /etc/pam.d/vmware-authd
echo “auth sufficient /lib/security/pam_ldap.so” >> /etc/pam.d/vmware-authd
echo “account required /lib/security/pam_unix_acct.so” >> /etc/pam.d/vmware-authd
echo “account sufficient /lib/security/pam_ldap.so” >> /etc/pam.d/vmware-authd
echo “vmware-authd updated”

 

esxcfg-boot

esxcfg-boot -h –help
-q –query boot|vmkmod
-p –update-pci
-b –update-boot
-d –rootdev UUID=<uuid>
-a –kernelappend <kernel append>
-r –refresh-initrd
-g –regenerate-grub

Queries cannot be combined with each other or other options.
Passing -p or -d enables -b even if it is not passed explicitly.
-b implies -g plus a new initrd creation.
-b and -r are incompatible, but -g and -r can be combined.

esxcfg-dumppart

From the man page “…provides an interface to query, set, and scan for diagnostic partitions on an ESX Server. That is, it can be used to configure or list the VMkernel crash dump partition.”

[root@vi3host root]# esxcfg-dumppart -l
VM Kernel Name Console Name Is Active Is Configured
vmhba0:0:0:10 /dev/sda10 yes yes

[root@vi3host root]# esxcfg-dumppart -f
Partition number 10 on vml.0000000000766d686261303a303a30 -> vmhba0:0:0:10 -> /dev/sda10

 

esxcfg-firewall

esxcfg-firewall “…provides an interface to query and modify the service console firewall settings.”

For example, if you want to open all of the ports on your firewall, issue the following commands:

esxcfg-firewall –allowIncoming
esxcfg-firewall –allowOutgoing

You might then want to re-enable the firewall, by doing the following:

esxcfg-firewall –blockIncoming
esxcfg-firewall –blockOutgoing

Rules are no fun without exceptions, so here’s how to add them to your ruleset. ESX comes with a number of pre-canned exceptions that can be added by name. Some examples are below:

esxcfg-firewall –enableService snmpd
esxcfg-firewall –enableService ntpClient

These are the services you can enable by name:

nfsClient
ftpServer
ntpClient
dellom
nisClient
vncServer
tmpLicenseClient
swISCSIClient
CIMHttpsServer
sshClient
snmpd
tmpAAMClient
vpxHeartbeats
smbClient
hpim
tmpHostVmdbServer
tmpHostdSOAPServer
ftpClient
sshServer
ibmdirector
CIMHttpServer
telnetClient

If, however, you want to do something non-standard (in this case for IBM Director), do this:

esxcfg-firewall –openPort 14247,tcp,out,IBMDirector
esxcfg-firewall –openPort 14247,tcp,in,IBMDirector
esxcfg-firewall –openPort 14247,udp,in,IBMDirector
esxcfg-firewall –openPort 14247,udp,out,IBMDirector
esxcfg-firewall –openPort 14248,tcp,out,IBMDirector
esxcfg-firewall –openPort 14248,tcp,in,IBMDirector

Once you’ve made your changes, restart the firewall service:

service firewall restart

esxcfg-info

From the man page “…provides a view of the internal state of the VMkernel and Service Console components. This tool is designed to provide information used in debugging and troubleshooting VMware ESX Servers.”

I suggest you pipe these to a text file, as the output is substantial, and takes an age to scroll through on my terminal.

Usage: esxcfg-info mode
-a, –all Print all information
-w, –hardware Print hardware information
-r, –resource Print resource information
-s, –storage Print storage information
-n, –network Print network information
-y, –system Print system information
-o, –advopt Print advanced options
-h, –help Print this message.

[root@vi3host root]# esxcfg-info -a >esxcfg-info.output
[root@vi3host root]# less esxcfg-info.output

esxcfg-init

From the man page “…is used to initialize pci device names and advanced configuration options for the VMkernel on system boot
and is NOT intended for use outside of initialization scripts.”

esxcfg-linuxnet

esxcfg-linuxnet –setup
–remove
-h –help

The –setup option cannot be combined with the –remove option.

Used to replicate the IP parameters assigned to vswif0 to eth0 in Linux troubleshooting mode

esxcfg-module

From the man page “…provides an interface into the driver modules loaded on system startup and allows modules to be disabled or added.”

Example usage:

[root@vi3host root]# esxcfg-module -l
Device Driver Modules
Module Type Enabled Loaded
vmkapimod vmkapimod true true
vmklinux linux true true
bnx2 nic true true
aacraid_esx30 scsi true true

[root@vi3host root]# esxcfg-module -q
vmkapimod vmkapimod
vmklinux linux
bnx2 nic
aacraid_esx30 scsi

 

esxcfg-mpath

esxcfg-mpath configures multipath settings for Fibre Channel or iSCSI LUNs.

This is useful to check your zoning on large SAN implementations.

[root@vi3host root]# esxcfg-mpath -l
Disk vmhba0:0:0 /dev/sda (139900MB) has 1 paths and policy of Fixed
Local 4:0.0 vmhba0:0:0 On active preferred

Disk vmhba1:0:1 /dev/sdb (307200MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:1 On active preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:1 Standby

Disk vmhba1:0:2 /dev/sdd (307200MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:2 Standby preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:2 On active

Disk vmhba1:0:3 /dev/sde (307200MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:3 On active preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:3 Standby

Disk vmhba1:0:4 /dev/sdg (204800MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:4 Standby preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:4 On active

Disk vmhba1:0:5 /dev/sdh (204800MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:5 On active preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:5 Standby

Disk vmhba1:0:6 /dev/sdi (25600MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:6 Standby preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:6 On active

Disk vmhba1:0:7 /dev/sdj (25600MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:7 On active preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:7 Standby

Disk vmhba1:0:8 /dev/sdl (691200MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:8 On active preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:8 Standby

Disk vmhba1:0:31 /dev/sdf (20MB) has 1 paths and policy of Fixed
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:31 On active preferred

Disk vmhba1:0:10 /dev/sdc (691200MB) has 2 paths and policy of Most Recently Used
FC 28:0.0 210000e08b9d2a7a<->200400a0b829871d vmhba1:0:10 On active preferred
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:10 Standby

Disk vmhba2:0:31 /dev/sdk (20MB) has 1 paths and policy of Fixed
FC 28:0.1 210100e08bbd2a7a<->200500a0b829871e vmhba2:0:31 On active preferred

 

esxcfg-nas

esxcfg-nas provides an interface to manipulate NAS file systems on an ESX Server.

esxcfg-nas <options> [<label>]
-a|–add Add a new NAS filesystem to /vmfs volumes.
Requires –host and –share options.
-o|–host <host> Set the host name or ip address for a NAS mount.
-s|–share <share> Set the name of the NAS share on the remote system.
-d|–delete Unmount and delete a filesystem.
-l|–list List the currently mounted NAS file systems.
-r|–restore Restore all NAS mounts from the configuration file.
(FOR INTERNAL USE ONLY).
-h|–help Show this message.

For example, if you want to connect to a NAS

[root@vi3host root]# esxcfg-nas -a -o 100.100.100.253 -s /Test NFS02

esxcfg-nics

From the man page “…provides information about the Physical NICs in use by the VMkernel. This will print the VMkernel name for the NIC, its PCI ID, Driver, Link state, Speed, Duplex, and a shore PCI description of the card. It also allows users to set speed and duplex settings for a specific NIC.”

[root@vi3host root]# esxcfg-nics
esxcfg-nics <options> [nic]
-s|–speed <speed> Set the speed of this NIC to one of 10/100/1000/10000.
Requires a NIC parameter.
-d|–duplex <duplex> Set the duplex of this NIC to one of ‘full’ or ‘half’.
Requires a NIC parameter.
-a|–auto Set speed and duplexity automatically. Requires a NIC parameter.
-l|–list Print the list of NICs and their settings.
-r|–restore Restore the nics configured speed/duplex settings (INTERNAL ONLY)
-h|–help Display this message.
[root@vi3host root]# esxcfg-nics -l
Name PCI Driver Link Speed Duplex Description
vmnic0 03:00.00 bnx2 Up 1000Mbps Full Broadcom Corporation Broadcom NetXtreme II BCM5708 1000Base-T
vmnic1 06:00.00 bnx2 Up 1000Mbps Full Broadcom Corporation Broadcom NetXtreme II BCM5708 1000Base-T
vmnic2 08:03.00 tg3 Up 1000Mbps Full Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet
vmnic3 08:03.01 tg3 Up 1000Mbps Full Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet

esxcfg-pciid

esxcfg-rescan

esxcfg-rescan <vmkernel SCSI adapter name>

[root@vi3host root]# esxcfg-rescan vmhba0
Rescanning vmhba0…done.
On scsi0, removing: 0:0.
On scsi0, adding: 0:0.
[root@vi3host root]# esxcfg-rescan vmhba1
Rescanning vmhba1…done.
On scsi1, removing: 0:1 0:10 0:2 0:3 0:31 0:4 0:5 0:6 0:7 0:8.
On scsi1, adding: 0:1 0:10 0:2 0:3 0:31 0:4 0:5 0:6 0:7 0:8.
[root@vi3host root]# esxcfg-rescan vmhba2
Rescanning vmhba2…done.
On scsi2, removing: 0:31.
On scsi2, adding: 0:31.
[root@vi3host root]#

esxcfg-resgrp

From the man page “…provides an interface to manipulate resource group hierarchy.

Usage: esxcfg-resgrp [options] [resgrp path]
-a, –add rgname Add a new group under the path
-d, –delete Delete the resource group
-l, –list List all the resource groups
Or stats about a specific resource group
–restore Restore all resource groups from configuration
file (FOR INTERNAL USE ONLY).
-h, –help Show this message

esxcfg-route

From the man page “…provides an interface to manipulate VMkernel IP stack’s default route entry.”

esxcfg-route <options> [<network> [<netmask] <gateway>]
<network> can be specified in 2 ways:
* As a single argument in <Network>/<Mask> format
* Or as a <Network> <Netmask> pair.

<gateway> is either an IP address or ‘default’

-a|–add Add route, to the VMkernel,
requires network address (or default)
and gateway IP address
-d|–del Delete route from VMkernel.
Requires network address (or “default”)
-l|–list List configured routes for the service console
-r|–restore Restore route setting to configured values
on system start. (INTERNAL USE ONLY)
-h|–help Show this message.
[root@vi3host root]# esxcfg-route -l

VM Kernel Routes:
Network Netmask Gateway
192.168.100.0 255.255.255.0 Local Subnet
default 0.0.0.0 Local Subnet

esxcfg-swiscsi

From the man page “…provides an interface to configure Software iSCSI. if no arguments are given, esxcfg-swiscsi displays the help message.”

Usage: esxcfg-swiscsi options
-e, –enable Enable sw iscsi
-d, –disable Disable sw iscsi
-q, –query Check if sw iscsi is on/off
-s, –scan Scan for disk available through sw iscsi interface
-k, –kill Try to forcibly remove iscsi sw stack
-r, –restore Restore sw iscsi configuration from file
(FOR INTERNAL USE ONLY)
-h, –help Show this message
[root@vi3host root]# esxcfg-swiscsi -q
Software iSCSI is enabled

[root@vi3host root]# vmkiscsi-tool -h
vmkiscsi-tool -h –help
-R –discoveryStatus : Print discovery status.
-D –discovery
-S –static: Static Discovery Targets
-A –Authentication
-T –Target
-L –Lun
-P –Phba
-N –Network: network properties
-p –Pnp: Physical Network Portal properties
-t –ipv4AddrType
-i –ipv4Address
-d –dnsserver
-g –gateway
-s –subnetmask
-I –iSCSIname
-k –Alias
-e –ethernet: Link Status
-c –ipconfig: enable/disable DHCP, ARP redirect
-X –Reset
Subcommands
-l –list
-r –remove
-a –add
-m –authMethod : specify method for add/remove
-f –flag: set a discovery or authentication flag
adapterName
Combine -l with an option to display the current information.

[root@vi3host root]# vmkiscsi-tool vmhba40 -P -l

=========PHBA Properties for Adapter vmhba40=========
VENDOR : VMware
MODEL : VMware-Isoft
DESCRIPTION : VMware Software Initiator
SERIAL NUMBER :

=========Node Properties for Adapter vmhba40=========
NODE NAME VALID : 1
NODE NAME : iqn.1998-01.com.vmware:vi3host-3fc07e31
NODE ALIAS VALID : 1
NODE ALIAS : vi3host.network.internal
NODE NAME AND ALIAS SETTABLE: 1

So if you combine this command, vmkiscsi-tool and esxcfg-rescan, you can automate iscsi setup in scripted installs (useful when combined with UDA).

Set-up iSCSI Software Emulator and Force a Rescan of vmhba40
esxcfg-swiscsi -e
vmkiscsi-tool -D -a 192.168.100.139 vmhba40
esxcfg-swiscsi -s
esxcfg-rescan vmhba40

esxcfg-upgrade

esxcfg-upgrade -h –help
-g –convert-grub
-f –convert-fstab
-r –upgrade-pre-vmkernel
-o –upgrade-post-vmkernel

The -g option may only be used with the -r option.

esxcfg-vmhbadevs

From the man page “…provides information about the LUNs available on the ESX Server. By default, the command will print a mapping of vmhbaX:X:X names to console /dev/ names.”

This is useful when you want to set VMFS filesystem alignment on EMC CLARiiON arrays but don’t know what LUNs are mapped to what devices in fdisk.

esxcfg-vmhbadevs

esxcfg-vmhbadevs <options>
Print the mappings between vmhba names and /dev names
-m|–vmfs Print mappings for VMFS volumes to their
Service Console partitions and vmhba names.
-q|–query Print mapping in 2.5 compatibility mode to mimic
vmkpcidivy -q vmhba_devs.
-h|–help Show this message.

[root@vi3host root]# esxcfg-vmhbadevs -m
vmhba0:0:0:2 /dev/sda2 4667158e-899da7f8-ae73-00145eccccba
vmhba40:1:0:1 /dev/sdd1 4692c9ad-1a501875-f252-00145eccccba
vmhba40:0:0:1 /dev/sdb1 4692c987-14967ce4-a9a1-00145eccccba

[root@vi3host root]# esxcfg-vmhbadevs -q
vmhba0:0:0 /dev/sda
vmhba1:0:1 /dev/sdb
vmhba1:0:2 /dev/sdd
vmhba1:0:3 /dev/sde
vmhba1:0:4 /dev/sdg
vmhba1:0:5 /dev/sdh
vmhba1:0:6 /dev/sdi
vmhba1:0:7 /dev/sdj
vmhba1:0:8 /dev/sdl
vmhba1:0:31 /dev/sdf
vmhba1:0:10 /dev/sdc
vmhba2:0:31 /dev/sdk

esxcfg-vmknic

From the man page “…provides an interface to configure VMkernel NIC. if no arguments are given, esxcfg-vmknic displays the help message. The Portgroup option specifies the portgroup to which the VMkernel NIC is associated.”

esxcfg-vmknic <options> [[<portgroup>]]
-a|–add Add a VMkernel NIC to the system,
requires IP parameters and portgroup name.
-d|–del Delete VMkernel NIC on given portgroup.
-e|–enable Enable the given NIC if disabled.
-D|–disable Disable the given NIC if enabled.
-l|–list List VMkernel NICs.
-i|–ip <X.X.X.X> The IP address for this VMkernel NIC.
Setting an IP address requires that the
–netmask option be given in same command.
-n|–netmask <X.X.X.X> The IP netmask for this VMkernel NIC.
Setting the IP netmask requires that the –ip
option be given in the same command.
-r|–restore Restore VMkernel TCP/IP interfaces from
Configuration file (FOR INTERNAL USE ONLY).
-h|–help Show this message.

[root@vi3host root]# esxcfg-vmknic -l
Port Group IP Address Netmask Broadcast MAC Address MTU Enabled
VMOTION 10.0.0.2 255.0.0.0 10.255.255.255 00:50:56:61:d8:2b 1514 true

esxcfg-vswif

From the man page “…provides an interface to configure Service Console NIC. if no arguments are given, esxcfg-vswif displays the help message. VSWIF is the name of the interface. This should begin with ’vswif’ followed by a unit number, for example ’vswif0’ for the first Service Console interface.”

esxcfg-vswitch

From the man page “…provides an interface for adding, removing, and modifying virtual switches and their settings. By default, there is a single virtual switch called vSwitch0.”

Sample DEV network configuration script

# !/bin/bash

# Tear down and rebuild network
# Remove current config
echo “Removing current network configuration”
/usr/sbin/esxcfg-vswitch -U vmnic0 vSwitch0
/usr/sbin/esxcfg-vswitch -U vmnic1 vSwitch0
/usr/sbin/esxcfg-vswif -d vswif0
/usr/sbin/esxcfg-vswitch -d vSwitch0
service mgmt-vmware restart

# Recreate SC
echo “Reconfiguring Service Console NIC”
cp /etc/vmware/esx.conf /tmp/esx.conf.bak
/usr/sbin/esxcfg-vswitch -a vSwitch0
/usr/sbin/esxcfg-vswitch vSwitch0 -L vmnic0
/usr/sbin/esxcfg-vswitch vSwitch0 -L vmnic1
/usr/sbin/esxcfg-vswitch vSwitch0 -A “Service Console” -p “Service Console”
/usr/sbin/esxcfg-vswif -a vswif0 -p “Service Console” -i 192.168.100.7 -n 255.255.255.0
route add default gw 192.168.100.253
# echo “GATEWAY=192.168.100.253” >> /etc/sysconfig/network
echo “Service Console configured”

# Create VM Network
echo “Configuring VM Network”
/usr/sbin/esxcfg-vswitch vSwitch0 -A VMnetwork -p VMnetwork
echo “VM network configured”

# Setup VMotion
echo “Setting up VMotion”
/usr/sbin/esxcfg-vswitch vSwitch0 -A VMotion
/usr/sbin/esxcfg-vmknic -a VMotion -i 10.0.0.3 -n 255.255.255.0
/usr/sbin/esxcfg-route 10.0.0.3
echo “Activating vMotion”
service mgmt-vmware restart
sleep 20
vimsh -n -e “/hostsvc/vmotion/vnic_set portgroup4”
echo “VMotion configured”

# Create internal-only vswitch
echo “Configuring Private Network”
/usr/sbin/esxcfg-vswitch -a vSwitch1
/usr/sbin/esxcfg-vswitch vSwitch1 -A Internal -p Internal
echo “Private network configured”

# Setup iSCSI Network
echo “Configuring iSCSI Network”
esxcfg-vswitch -A iSCSI vSwitch0
esxcfg-vmknic -a iSCSI -i 192.168.200.100 -n 255.255.255.0
esxcfg-vswitch -A iSCSI-COS vSwitch3
esxcfg-vswif -a vswif1 -p iSCSI-COS -i 192.168.200.101 -n 255.255.255.0

Hope that helps.