First time I created a VM in Vmware's ESXi, I placed the .iso containing the install image of the operating system in the host I run vsphere client from. And then told the VM where to get that. Some info on this procedure can be fount at http://community.spiceworks.com/topic/332810-create-vm-from-iso-without-uploading-to-datastore. At first glance, it seemed to be quick and easy; I would even add for a small deployment it is quite convenient. However, but it was just cumbersome (too many hoops to make that work) and slow (it expects the vsphere box to be in a fast and reliable connection to the ESXi one, which might not be the case). It really makes sense to have the images either in the server itself or mounted on the server (fileshare). I was not looking forward to having the images in the server itself because:
- It would probably require me to download them somewhere else and then upload to the server. That does not sound like a dealbreaker to most since if I can ssh into my ESXi, which I do, I can scp the files into it. Well, I do not believe on having a single device/program/app/thingie that does it all; you see, I do like the Rule of Simplicity from the Unix Philosophy. And that dovetails to the next item:
- I have a perfectly good fileserver (ok, a Synology NAS box) thank you verymuch. Many of my VMs already NFS mount shares from it, or just have their entire disk in an iSCSI LUN from said NAS.
- I might want to use those images with my other vm host, which runs KVM.
What I want is maybe a NFS share that can be mounted somewhere where I can download the .iso files to and then have it available read-only to the vm hosts (ESXi, KVM/libvirt, Vbox). Let's see if we can make that happen, shall we?
Setup
We first need to begin with the fileshare itself. It is being exported read-only as a NFSv4 fileshare from the NAS; we won't go over how to do that in this discussion. Since I could not find showmount or even mount in ESXi, let's assume I know what I am doing and believe the share I want is fileserver.example.com:/public (I cheated and verified in a Linux box). We can add that to vmhost2 using the vsphere client:
Using the ISO
So now we did all this boring work, let's see if we can boot using a, well, boot .iso from the NFS share. So, On the vsphere client
- Select the vmhost. In my case that is vmhost2.
- Select Configuration->Storage in the Hardware panel.
- Click Datastores and click Add Storage.
- Select Network File System and click Next.
- server name: fileserver.example.com
- mount point folder name: /export/public (yep NFS3)
- [x] Mount NFS read only
- datastore name: public
- server name: fileserver.example.com
- Select Configuration->Storage in the Hardware panel.
- Select the vm client, which is called devcentos.
- select the vm in question, devcentos:
- Edit virtual machine properties->CD/DVD->Device Type->Datastore ISO File
- Hit Browse
- Datastores->public->ISOs->CentOS.iso
- Boot to BIOS. For some reason I have to manually select which device to boot. Even though most of the time the virtual hard drive is completely virgin, the bios does not failover to the ISO, Maybe that has been solved by now, but just learn this step... just in case.
- Turn CD player on on boot
- select the vm in question, devcentos: