UCS emulator on ESXi

“Recently we put the UCS emulator on our ESXi server to kick the tires and check out the API.  The Emulator can be downloaded from Cisco.  (You need to register to download it).

The emulator is to be used with VMware Player out of the box.  That was fine, but we wanted to take a look at it together so we used xCAT to provision a stateless ESXi server.  Now you may happen to have VMware vCenter running in which case it would be very easy for you to import the image to run on ESXi simply by importing it in with the GUI.  But we are a bit more fearless in that respect, not to mention short on hardware.  So we just provisioned our ESXi server and didn’t bother installing a license nor adding it to vCenter.  This was just for a quick test, so no I don’t feel unethical about it.

But the problem is:  How to import the file?  And how to tell what was going on?

No problem.  We just used some ESXi vim-cmd-fu to make it happen.  Here’s what we did:

1.  Make a new vmfs for VMs to live on.

We skipped this step by just using xCAT to provision another VM on the ESXi host.  We used ‘datastore1′ as the storage and easily made it.

2.  scp the untarred file to the esxi server:

scp -r UCSPE/ node001:/vmfs/volumes/datastore1/

3.  Copy make the disk files work under ESXi

There are three disks in the emulator.  We just copied them:

cd /vmfs/volumes/datastore1/UCSPE/
vmkfstools -i UCSPEa-s001.vmdk -d zeroedthick UCSPEa-s0011.vmdk
vmkfstools -i UCSPEb-s001.vmdk -d zeroedthick UCSPEb-s0011.vmdk
vmkfstools -i UCSPEc-s001.vmdk -d zeroedthick UCSPEc-s0011.vmdk

4. Change the UCSPE.vmx file

We need to point to the new disks now. Theere were three lines we had to change:

scsi0:1.present = "TRUE"
scsi0:1.fileName = "UCSPEa-s0011.vmdk"
scsi0:2.present = "TRUE"
scsi0:2.fileName = "UCSPEb-s0011.vmdk"
scsi0:3.present = "TRUE"
scsi0:3.fileName = "UCSPEc-s0011.vmdk"

You also need to change the network.  By default, we have the “VM Network” that we can communicate on:

ethernet0.networkName = "VM Network"

For good measure, add the VNC port so you can watch what’s going on:

remotedisplay.vnc.enabled = "TRUE"
remotedisplay.vnc.port = "5900"

And that should be it for the *vmx file.

5.  Power it on

This is the easy part:

Register the VM:

vim-cmd solo/registervm /vmfs/volumes/datastore1/UCSPE/UCSPE.vmx UCSPE

Check the ID:

vim-cmd vmsvc/getallvms

My id for this machine is 16.  So lets power it on:

vim-cmd vmsvc/power.on 16

If there are problems, (like failures) then you usually have to troll through the /var/log/messages file.  Hopefully I didn’t forget anything and this just worked for you!

Now that you have it up, you should be able to watch it on VNC and then eventually log in using the userid: cliuser and password: cliuser.  Since we had a DHCP server, we watched the logs to see what IP address it came up with.  Then we grabbed the mac address and put it in our DHCP config statically (using xCAT of course!)

I’m very happy Cisco made this available.  In the past while doing testing on IBM or HP blades, we had to actually have live hardware to test on.  With the UCS Manager outside and on a VM, we can do a lot of testing with no hardware at all.  Then once the real stuff comes:  Look out!  We’re ready for it!

  • Vallard

    Forgot to mention, to extract the hardware: u00a07za e .7z

  • Vallard

    For Linux RHEL5.5 you can download p7zip to extract here:u00a0http://pkgs.repoforge.org/p7zip/p7zip-9.04-1.el5.rf.x86_64.rpm

  • Robert

    VMware vCenter Converter Standalone works like a champ for this too.

    • Vallard

      True, but this method allows me to copy it into my datastore and then modify the files in place and save me multiple copies. u00a0For me its a lot faster.

  • Vallard

    Updated for UCSPE 2.0:nvmkfstools -i UCSPEa.vmdk -d zeroedthick UCSPEa1.vmdknvmkfstools -i UCSPEb.vmdk -d zeroedthick UCSPEb1.vmdknvmkfstools -i UCSPEc.vmdk -d zeroedthick UCSPEc1.vmdknnnVMX file looks like this:nscsi0:1.present = “TRUE” u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0u00a0scsi0:1.fileName = “UCSPEa1.vmdk” u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0scsi0:2.present = “TRUE” u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0scsi0:2.fileName = “UCSPEb1.vmdk”scsi0:3.present = “TRUE” u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0 u00a0u00a0scsi0:3.fileName = “UCSPEc1.vmdk”