I wanted to gain some hands-on experience with how Macintosh networks implement network-based installation, so I have set up a virtualized lab on my Macbook Pro running VMware Fusion.
Although not strictly necessary, I segregated the virtual Apple network onto it’s own private vmnet2 network with all VMs having a single connection to it. There is a single VM, though, that is connected to both vmnet2 and bridged to my host network. This VM is running an instance of the Vyatta software router. This will provide NAT services between my host and private networks. I have known of Vyatta’s existence for quite some time, but have not yet worked with it directly. The CLI is extremely similar to Juniper. As a bonus, I discovered that I had not forgotten how to navigate this style of CLI since the successful completion of the JNCIA-JunOS cert last year. I thought that it might be one of those things where if you don’t use it, you lose it. Luckily, that doesn’t seem to be the case here. I set the virtual Mac network-facing side to 10.10.10.1.
I installed Mavericks with a hostname of Server and a static IP of 10.10.10.10 and configured Server.app to provide DHCP services for this network. The next step was to copy the Mavericks install app to the desktop of the server and open the System Image Utility (found in the menu of Server.app). During this part of the process, it is possible to customize all kinds of things for the end NetInstall image including additional software to include, disk layout, accounts and much more.
After the NetInstall image was created, I created a new VM and connected it to vmnet2. I changed the startup disk to the network and powered on the VM. After about 10 seconds, the VM began the NetInstall process by displaying a spinning globe at the bottom. After about 60 more seconds, the globe turned into the traditional spinning circle that you see when a Mac boots, and eventually the Mavericks installation screen came up.
One thing I found to be interesting is that you can serve up the images from the server via NFS or HTTP, and you can configure that setting per-image. This naturally led me to wonder what would happen if I attempted to perform a NetInstall from a different subnet than the server. Through trial and error and watching the log files, I discovered that by using a DHCP forwarder on the second subnet pointing to the Mac Server (and creating a static route on the first router pointing to the network behind the second router), it worked just fine, both NFS and HTTP. However, it seemed like the NetInstall boot process took quite a bit longer on the second subnet versus being on the same subnet as the server.
My next interest would be scalability, but I don’t have any way to test that in my current environment 🙂