In this post:
Fedora 21 was just released earlier this week on December 9, 2014. The biggest change was the separation of the distribution into three “products”:
- Fedora Cloud, a lightweight optimized distribution for public/private clouds, containerization with Docker and Project Atomic.
- Fedora Server, the traditional platform for running services, usually on a headless host whether virtualized or on baremetal.
- Fedora Workstation, a developer-friendly desktop running a cutting edge OS.
Of course, as always, OpenStack/KVM and Docker get a lot of love, but Xen and XenServer are once again ignored. This post is my solution. With the prebuilt images distributed here and the kickstart scripts below, you can deploy Fedora 21 on your own XenServer (6.2+).
Prebuilt Fedora Cloud images for XenServer
Since the new Fedora Cloud images are so lightweight, I’ve repackaged them for XenServer with no modification except format conversion. These are the original Fedora Project releases, converted to VHDs and attached to VM templates for XenServer. Xen Tools are not installed! Note also that Fedora Cloud images come with a minimal set of command line tools, so even basic tools like dig may not be available.
After downloading, you must decompress the XZ compression before either
- importing the .xva into XenCenter (File -> Import), or
- importing the dom0 command line (e.g.
xe vm-import filename=/path/to/fedora-cloud-21-base-20141203-pvhvm.xva)
1. Fedora Cloud Atomic Host (for running Docker containers)
- Fedora 21 (2014-12-03)
284 MB xz-compressed; 802 MB decompressed
2 vCPUs, 2 GB RAM, 6 GB disk**
Password: *** see below
2. Fedora Cloud General Purpose (for lightweight VMs)
- Fedora 21 (2014-12-03)
125 MB xz-compressed; 438 MB decompressed
1 vCPU, 1 GB RAM, 3 GB disk**
Password: *** see below
*** How do I log on to this thing? ** And can I change the disk size?
There is no default password because these cloud images were originally built for environments where configuration would be supplied upon boot. To seed the machine with a user password for the default user account, you must provide cloud-init with configuration files. In a non-private-cloud deployment, such as on XenServer, the easiest way to do so is by attaching an ISO containing a meta-data and user-data file. The default disk sizes are small (and should not be expanded) because you can mount additional drives—for instance, you should probably attach a separate XenServer virtual disk and mount it at
/var/lib/docker if you plan on using Atomic Host. These can be customized using the user-data file.
Option 1. Example deploy.
Download the init-example.iso file here and attach it to your new Fedora Cloud VM in XenServer. It will initialize your VM with a hostname of
cloudhost and a default password of
Asdfqwerty. Once you log in for the first time, you should change everything! Be careful! This example also sets an authorized SSH key on the default user, even though it’s an example key.
Option 2. Set your own hostname, username, and SSH keys.
I’ve created a project (shared on GitHub) which will allow you to do this easily. Just clone it, edit the user-data file, and run the
./build.sh script to make your own
init.iso. Attach that ISO to your Fedora Cloud VM and it will set all the right details.
You’ll need to create your own configuration if you want to deploy an SSH key,
Roll your own image
For anyone who’s interested… the process for converting Fedora Cloud images to a XenServer format can be replicated as follows:
- Download the .raw.xz “General Purpose” or “For Containers” cloud images directly from the Fedora Project.
- Decompress the .xz, leaving a .raw hard drive image.
- Use VHDTool to convert .raw -> .vhd, which is mostly just adding some metadata.
- (optional) Use a tool like VirtualBox to copy the .vhd to a new sparse/dynamically allocated .vhd to reduce file size.
- Import the .vhd into XenCenter, and assign vCPUs/RAM/storage. Be aware that this creates a PVHVM guest.
- (optional) Convert the resulting VM to a template. Export the template to file, producing the .xva file.
- Compress the .xva XenServer image with xz, generating the .xva.xz images above.
Kickstart scripts for installing Fedora Server 21 on XenServer
In past series, I’ve shown you how to launch Fedora 20 as a PV guest, CentOS 7 as a PV guest, CentOS 7 as a PVHVM guest, and Ubuntu 14.04 as a PV guest. After recent benchmarks, however, I’ve decided to move forward with PVHVM exclusively, since the advantages of Xen paravirtualization are no longer necessarily applicable with hardware extensions that PVHVM can take advantage of. The script was tested with PVHVM only, although it was prepared in such a way that the same image should function as a PV guest if you decide to go that route.
The following is a kickstart script you can use to deploy Fedora Server 21. To use it without modification, append
to the boot options when booting from the netinstaller ISO, PXE boot, or DVD. The installation will look something like this:
and when it’s done, you’ll be able to log in as the
fedora user with the password
Asdfqwerty. This user is in the wheel group and can sudo using its own password.
Some caveats: as a consequence of the Fedora 21 separation into products, the Fedora Server product expects NetworkManager and FirewallD. Thus, I no longer attempt to exclude NetworkManager from package selection.