# How to setup your VMWare Fusion images to use static IP addresses on Mac OS X At [Crush + Lovely](http://crushlovely.com), we use [Railsmachine's](http://railsmachine.com) [Moonshine](http://github.com/railsmachine/moonshine) to automate the configuration of our servers. When writing our deployment recipes, VMWare Fusion's ability to take snapshots and rollback to these snapshots is a huge timesaver because it takes just seconds to roll a server image to it's original state. When you're just configuring a single server, having a static IP address for your server image isn't too important, but when you're configuring multi-server setups, it can be useful to duplicate a number of server images and give each a static IP address so you can consistently deploy to them. While not documented well at all, it turns out that this is relatively easy to accomplish in four simple steps. ## 1. Determine the MAC address of your guest machine Let's say you have a guest machine with the name `ubuntu-lucid-lynx-base` and you keep your guest machine images in `~/Documents/Virtual\ Machines/`. To determine the MAC address for this VM, you can run: ``` cat ~/Documents/Virtual\ Machines/ubuntu-lucid-lynx-base.vmwarevm/ubuntu-lucid-lynx-base.vmx | grep ethernet0.generatedAddress ``` If more than one line is returned, you're looking for the one with the value like `00:0c:29:9d:2a:38`. ## 2. Add your static IP address to VMWare's `dhcpd.conf` Open `/Library/Application\ Support/VMware\ Fusion/vmnet8/dhcpd.conf`. `vmnet8` is the virtual interface for NAT networking in VMWare the guest machines. In this file, you'll see a subnet clause that looks something like this: ``` subnet 172.16.179.0 netmask 255.255.255.0 { range 172.16.179.128 172.16.179.254; option broadcast-address 172.16.179.255; option domain-name-servers 172.16.179.2; option domain-name localdomain; default-lease-time 1800; # default is 30 minutes max-lease-time 7200; # default is 2 hours option routers 172.16.179.2; } ``` Take note of the line starting with `range`. The IP addresses you will assign your guest machines will need to fall *outside* that range. Find the line that looks like this: ``` ####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" ####### ``` Below that line, add a clause for your guest machine. It should look like this: ``` host ubuntu-lucid-lynx-base { hardware ethernet 00:0c:29:9d:2a:38; fixed-address 172.16.179.102; } ``` Make sure the `hardware ethernet` value matches the MAC address you found in step one, and the `fixed-address` is an IP outside the range listed in the `subnet` clause. ## 3. Optional: Update your `/etc/hosts` file If you want to assign a fancy local hostname that refers to your guest machine, you can do so by editing your `/etc/hosts` file. For instance, to assign the hostname `ubuntu.local` to the guest machine we just setup, we could add the following line to our `/etc/hosts` file: ``` 172.16.179.102 ubuntu.local ``` ## 4. Restart the VMWare daemons Last thing to do is restart your VMWare daemons: ``` sudo "/Library/Application\ Support/VMware\ Fusion/boot.sh" --restart ``` * _original source_: http://crshlv.ly/rjlXdS * _note_: These instructions have been tested on Snow Leopard only.