Getting Ubuntu 14.04 LTS to Customize Properly With Microsoft’s Virtual Machine Manager 2012 R2

As most people do know, it is possible to get Microsoft’s Virtual Machine Manager to deploy and customize a Linux based OS automatically. Officially Microsoft supports Ubuntu 12.04 LTS as a one of Linux distributions they support, however in practice any Debian like distribution can be supported as long as the locations of the network configuration, hostname configuration and SSH Host Keys are in the same locations as Debian and/or Ubuntu place them.

However in the upcoming Ubuntu 14.04 LTS release, there were some changes that can potentially cause VMM’s guest agent not to customize the virtual machines properly. In order to make VMM’s guest agent to provision correctly there are 2 options:

  • Write your own VMM guest agent
  • Modify a few file paths so Ubuntu 14.04 will look somewhat like Ubuntu 12.04 LTS in terms of network configuration

I choose the latter option. Now I do have a custom VMM Guest Agent written for FreeBSD in Perl, however creating a VMM guest agent for this specific reason isn’t a good utilization of time.

I’ve taken the following actions to make Ubuntu 14.04 to appear like Ubuntu 12.04 by doing the following:

  • Remove the line in the /etc/network/interfaces file where it references to /etc/network/interfaces.d/*.cfg

Surprisingly there’s only one thing you really need to do. There’s more if you decide to be even lazier and download the cloud image provided here, but it’s beyond the scope of this tidbit.

Adding a New Linux Distribution on System Center VMM 2012 R2’s list of Operating Systems

For hosters who use Windows Azure Pack along with System Center VMM 2012 R2, they might find that sometimes they need to support a XYZ Linux distribution for their customers. However they’ll quickly find they can’t get that distribution to display correctly on the Azure Portal as the only option to choose is “Other Linux”. Here’s a SQL query that anybody can use to inject a custom Operating System into VMM’s database:

USE [VirtualManagerDB]
GO

INSERT INTO [dbo].[tbl_IL_OS]
([OSId]
,[Name]
,[Description]
,[Architecture]
,[OSFlags]
,[VMWareGuestId]
,[OSType])
VALUES
('EBAB54C0-A9FA-4A3F-A21C-94775B96A6E5' /* Generate UUID */
,'Debian GNU/Linux 6 (64-bit)' /* Limited to 64 Chars */
,'Debian GNU/Linux 6 (64-bit)' /* Longer description of Linux Distro */
,'amd64' /* Use x86 for i386, amd64 for x86_64 */
,'28' /* This remains constant */
,'otherLinux64Guest' /* This is meant for VMware, go lookup the VMX spec files for this value */
,'1') /* Leave this at one, that's what the other OSes looked like */
GO

If you installed VMM 2012 R2 with a different SQL database name, adjust the USE statement accordingly.