When cloning a VMware Virtual Machine, how can I prevent MAC address & UUID conflicts?

I've run into the following problem on both VMware Fusion (for Macs) and with VMware ESXi/vSphere. Many of you are familiar with the problem, and it is described at VMware KB: "Networking does not work in a cloned Linux virtual machine (2002767) ."

  1. Create a CentOS VM.
    • This is a bare-bones VM with a minimal set of software and a functioning network stack. The idea is that we take the minimal VM, clone it and add more software later.
  2. Clone that VM
  3. VMware Fusion or vCenter will assign a new MAC address to the network interface on the cloned VM.
  4. Linux doesn't know about this new MAC address and thus networking doesn't work. The file /etc/sysconfig/network-scripts/ifcfg-ethN has the MAC address of the interface on the first machine.
  5. To fix this, I need to find the MAC address of the new VM, edit ifcfg-ethN and add this MAC to the HWADDR= field. I can't simply cut and paste the MAC into the field, so this can be an error-prone task, especially if I forget my pen and paper to write down the MAC.
  6. (Bonus points) On the new VM, often eth0, eth1, etc. display in the wrong order. Fixing this involves an arcane dance around /etc/udev/rules.d

I can do this, but it's error prone and kind of a pain when I simply wanted to spin up a new VM to test something.

Is there a way to simplify this manual process? When you clone a new machine, how do you fix the MAC address problem?


Solution 1:

Since device persistence stuff is just getting in the way for these VMs, rip it out:

  • Completely remove the HWADDR and UUID lines from the ifcfg file, and
  • Delete /etc/udev/rules.d/70-persistent-net.rules before cloning

That should let the eth0 with a new MAC address actually use the ifcfg-eth0 on initial boot.