How to install OpenQRM 4.7 with LXC containers in Debian Squeeze/Lenny: Step by Step

A new version of this tutorial for OpenQRM 4.8 (Released on March 31, 2011) is available here.

To upgrade from OpenQRM v4.7 to v4.8, simply do the following as root:
  1. svn co https://openqrm.svn.sourceforge.net/svnroot/openqrm openqrm
  2. cd openqrm/trunk/src
  3. make && make update


OpenQRM 4.7 (http://www.openqrm.com) was released on September 30, 2010 with LXC support. Wonderful product. Videos of this enterprise grade datacenter management framework is available at http://openqrm.com/?q=node/183 I hope that this information is useful to those who are interested. And thanks to Matt and OpenQRM developers for the hard work!

DISCLAIMER: This is something that worked for me. I do not bear responsibility if something breaks down. You need at least a 100GB for this for basic setup.

© zenny - Support the Human Ape Project if you like this tutorial. Click here to support. This tutorial cannot be copied or tweeted without this line.



A) INSTALL DEBIAN SQUEEZE (ALSO APPLIES TO LENNY WITH BACKPORT KERNEL)

A1) Download Debian Squeeze netboot CD from http://debian.org
A2) It will first ask to set up root user password and ask to create a new user. Give the root password twice and create a new user. It will also ask to give the machine's domain and give whatever you like or your tld name.
A3) Create 3 partitions. 512MB (1/2GB) for /boot, 2GB for Swap and rest for /. Format /boot as ext4 and / as LVM. (you can find more info on how to create LVM2 volume online or can just follow the installer guideline).
A4) When it asks what to install, deselect everything including 'Standard Adminstration Utilities'. And also uncheck 'Graphical Desktop Environment'.
A5) Once the setup is complete, just reboot.

B) CREATE A BRIDGE FOR LXC HOST

B1) First install bridge utilities.

Quote:

#aptitude install bridge-utils

B2) Make changes to the /etc/network/interfaces from:

Quote:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

to (for static IP):

Quote:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
#allow-hotplug eth0
#iface eth0 inet dhcp

#Bridge setup
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
address 192.168.10.251
netmask 255.255.255.0
gateway 192.168.10.254
dns-nameservers 192.168.10.254


Change the address, netmask, gateway (find from 'route' command) and dns-nameservers as appropriate.

Then restart the network:

Quote:

#/etc/init.d/networking restart

C) INSTALL LXC

C1)

Quote:

#aptitude install lxc

C2)

Quote:

#mkdir /cgroup

C3) Add the following line in /etc/fstab using a text editor:

Quote:

cgroup /cgroup cgroup defaults 0 0

C4)

Quote:

#mount -a

C2)

Quote:

#lxc-checkconfig

You will see something like below:

Quote:

$ lxc-checkconfig
Kernel config /proc/config.gz not found, looking in other places...
Found kernel config file /boot/config-2.6.32-5-686
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup namespace: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: missing
Cgroup cpuset: enabled

--- Misc ---
Veth pair device: enabled
Macvlan: enabled
Vlan: enabled
File capabilities: enabled

Note : Before booting a new kernel, you can check its configuration
usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig

The only thing that you cannot do with the vanilla debian squeeze kernel reporting 'Cgroup memory controller: missing' parameter is to allocate memory. One can recompile the kernel with memory controller enabled in a debian way (shall explain in another tutorial if needed), but it hogs 2-3% of CPU resources.

D) INSTALL DEBOOTSTRAP TO TEST FIRST CONTAINER

D1) You need to install debootstrap for creating templates for the containers, so install it by executing:

Quote:

#aptitude install debootstrap

D2) create a workspace for vm0 container

Quote:

#mkdir -p /var/lib/lxc/vm0

D3) Now debootstrap the debian image for the vm0 container

Quote:

#/usr/lib/lxc/templates/lxc-debian -p /var/lib/lxc/vm0/

It will take a while to complete, and creates a vm0 with a root password 'root' which we will change in D8 below.

D4) Open /var/lib/lxc/vm0/config file and add the following at the end of the file:

Quote:

lxc.utsname = vm0
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.ipv4 = 192.168.7.110/24

Change the ipv4 address as per your network. You can add MAC of your network hardware also by adding a line 'lxc.network.hwaddr = 00:11:22:33:44:55'

D5) Start vm0 by in daemon mode by executing:

Quote:

#lxc-start -n vm0 -d

D6) To check if it is running, execute:

Quote:

#lxc-info -n vm0 (ENTER)
'vm0' is RUNNING

D7) To get into the vm0, execute:

Quote:

#lxc-console -n vm0

D8) change the root password of the vm0 container by executing:

Quote:

#passwd su

D9) Exit from the container by executing:

Quote:

#poweroff

command which will bring to the host root console.

E) INSTALL OPENQRM 4.7

E1) Download the source of OpenQRM 4.7:

Quote:

#wget http://sourceforge.net/projects/open...7.tgz/download

E2) Uncompress the archive:

Quote:

#tar -zxvf openqrm-4.7.tgz

E3) Move to openqrm source directory

Quote:

#cd openqrm-4.7

E4)

Quote:

#make

It will install all the necessary dependency if run as root. Else you have to install each dependency manually.

E5) Install

Quote:

#make install

E6) Run

Quote:

#make start

It will take some time as it installs and configures several stuffs.

E6.1) It will first ask to setup the root password for the mysql server. Set one of your liking, but not a dictionary word.

E6.2) Again it willl ask the nagios admin password. Supply one but different from the mysql root password.

E6.3) It will ask then to set up the workgroup for SAMBA. I just went with default 'WORKGROUP'.

E6.4) It will ask for postfix domain for SMTP, please specify the tld domain you want to use or else go with 'localhost.localdomain'.

E6.5) It will ask the location of root for tftp and just go with default /srv/tftp.

E7) After successful installation, it outputs like:

Quote:

Initialization complete. Please configure your openQRM Server at: http://[server-ip-address]/openqrm/
-> User: openqrm -> Password: openqrm

F) CREATE MYSQL DATABASE FOR OPENQRM

F1) You need to create a database for OpenQRM before you log into the web interface of OpenQRM as reported in E7 above.

F2) So create a mysql database:

Quote:

#mysql -u root -p (ENTER)

Supply the password for the root set up in E6.2 above. And you will land at mysql prompt:

Quote:

mysql> create database openqrm;(ENTER)

F3) Grant privileges.

Quote:

mysql> grant all on openqrm.* identified by 'username@localhost' identified by 'secret';(ENTER)

Change the username and secret of your liking.

F4) Flush privileges

Quote:

mysql> flush privileges;[ENTER]
mysql>exit[ENTER]

G) CONFIGURE OPENQRM4.7 WITH LXC

G1) Now open http://[your-server-ip-address]/openqrm/ in a browser. A pop-up menu asks you to enter the default admin username and password (openqrm : openqrm) which you supply as reported in E7 above.



G2) You will see OpenQRM configuration manager which will ask you which network card to use. Choose 'br0' and press 'next'.




G3) Then it will ask which database type you want. Select 'mysql' and press 'next'.




G4) Then it will ask to fill in the details of the database for openqrm. Use the same credentials that you created in Step F above.




G5) After a while, you will see the OpenQRM dashboard.




G6) First click on the 'Plugin Manager' You will see a list of plugins. Now activate the plugin one by one as follows in order:



G6.1) Activate the 'dhcpd' plugin by clicking on the green cross and then start by pressing on the blue start icon. You can see some hints by hovering over the mouse, too.






G6.2) Activate and start the 'tftpd' plugin as stated above in G6.1.




G6.3) Activate and start the 'lvm-storage' plugin as stated above in G6.1.




G6.4) Activate and start the 'lxc-storage' plugin as stated above in G6.1.




You can activate and start whatever you need further.

G7) Now click on Components >> Create >> Storage, you will see your LVM Storage as resource.




G8) Then create images.



For further usage of OpenQRM 4.7, I suggest you to visit http://openqrm.com and read the documentation which is very comprehensive and meticulous. Enjoy!