Fun with OpenVZ

Open source virtualisation product OpenVZ lacks only the management tools available in its commercial subling Virtuozzo.


I've been messing around with OpenVZ for the past few weeks and having a blast. I really liked Virtuozzo, its commercial sibling, and I find that OpenVZ lacks only the management tools available in Virtuozzo. Since I was going to be building quite a few VPSes on the host servers, I wrote some very simple shell scripts to automate the process, from the actual VPS creation to custom package installation, NIS and NFS mount configuration, and so forth. Also, I found that I wanted to be able to run several commands across all VPSes simultaneously, or in series, so there's a script that handles that.

I also decided that although the /etc/sysconfig/vz-scripts/$VPSID.mount and umount scripts are handy, in my case they would all be the same, so there's a global script for those that is run from a symlink. These were written for one specific purpose, but I imagine that there are others that could use these tools as a starting point at least, so have at it. You can download the tools here: ovztools-0.0.1.tgz


This is a selection of simple bash-based OpenVZ tools, written to streamline VPS builds and configuration. They're written in bash for portability. They have been tested on Red Hat-based distributions such as Fedora and CentOS. Modifications will need to be made for other distributions.


Simply place all of the scripts in a directory in your path, such as /usr/local/sbin. Then move the global.* scripts to /etc/sysconfig/vz-scripts. You will need to modify variables in most of them to reflect your environment, and probably make significant modifications to


mkvz - This script condenses the creation of a VPS into a few prompts for hostname, IP address and VPSID, then builds the VPS to spec, adding packages specified in the $packages variable as well as performing post-install work via the script, such as modifying files to provide for NIS authentication and configuring various NFS mounts. - This is called from mkvz to perform various tasks within the new VPS, such as NIS setup and whatever else is needed.

vzdo - This script is used to run global commands across multiple VPSes, such as installing new packages to all VPSes via vzyum.

global.mount, global.umount - These scripts control all bind mounts to the VPSes when they're started and stopped. Rather than using a single script for each, these scripts are called via symbolic links in the /etc/sysconfig/vz-scripts directory, such as 101.mount -> global.mount. The script parses out the VPS id from $0 and performs the requisite mount --bind operations. Originally written as a single script, I broke it into two for simplicity.

vzdomount - This script can be called manually to mount --bind and directories within a VPS.

As always, YMMV.

"Recommended For You"

Beginner's guide to R: Introduction Microsoft targets virtualisation with Windows 8/Windows Server 2012 combo