1063
Comment: create
|
4297
bind mounts
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
This page explains how to set up and run Launchpad (for development) inside a VM. | ## page was copied from Running/VirtualMachine This page explains how to set up and run Launchpad (for development) inside a LXC. |
Line 5: | Line 6: |
Launchpad development setup makes numerous changes to your machine; its nice to be unaffected by those except when you are actually doing such development. | Launchpad development setup makes significant changes to your machine; its nice to be unaffected by those except when you are actually doing such development. |
Line 7: | Line 8: |
Also, launchpad has limitations on concurrent testing per-machine and so forth - multiple VM's can be used to work around this. | Also, launchpad has some limitations on concurrent testing per-machine and so forth - multiple container's can be used to work around this. |
Line 10: | Line 11: |
= Make a VM image = | = Make a LXC = |
Line 12: | Line 13: |
1. Install KVM | 1. Install lxc |
Line 15: | Line 16: |
% sudo apt-get install virt-manager | sudo apt-get install lxc |
Line 18: | Line 19: |
1. Download the Lucid server ISO | 1. Work around Bug:800456 {{{ sudo apt-get install cgroup-bin }}} |
Line 20: | Line 24: |
1. Run virt-manager. | 1. Work around Bug:784093 |
Line 22: | Line 26: |
1. Double click on localhost(QEMU) | {{{ sudo dd of=/etc/cgconfig.conf << EOF mount { cpu = /sys/fs//cgroup/cpu; cpuacct = /sys/fs/cgroup/cpu; devices = /sys/fs/cgroup/cpu; memory = /sys/fs/cgroup/cpu; } EOF sudo service cgconfig restart }}} |
Line 24: | Line 38: |
1. click on the New virtual machine icon | 1. Work around Bug:798476 (optional if you run i386 or have a -tonne- of memory and don't care about 64-bit footprint. Grab the patch from the bug and apply it to /usr/lib/lxc/templates/lxc-lucid. If you're running i386 already or want a 64-bit lxc then do not pass arch= on the lxc-create command line. |
Line 26: | Line 41: |
1. follow your nose here, using the ISO as the install media, and allocating no less than 2G of disk and 1G of memory. I suggest 4G if you can spare it. | 1. Create a config for your containers {{{ sudo dd of=/etc/lxc/local.conf << EOF lxc.network.type=veth lxc.network.link=virbr0 lxc.network.flags=up EOF }}} 1. Create a container {{{ sudo arch=i386 lxc-create -n lucid-test-lp -t lucid -f /etc/lxc/local.conf }}} If you want to use a proxy {{{ sudo arch=i386 http_proxy=http://host:port/ lxc-create -n lucid-test-lp -t lucid -f /etc/lxc/local.conf }}} And if you want to set a custom mirror, similar to http_proxy, but set MIRROR= instead. 1. Start it {{{ sudo lxc-start -n lucid-test-lp }}} Ignore the warning about openssh crashing - it restarts on a later event. The initial credentials are root:root. 1. The new container won't have your proxy / mirror settings preserved. Customise it at this point before going further if you care about this. 1. Grab your user id and username so you can setup a bind mount outside the container: {{{ id -u id -nu }}} 1. Inside the container add the user: {{{ adduser --uid $id $username }}} 1. To stop it now run 'poweroff -n'. 1. Setup a bind mount so you can access your home dir (and thus your LP source code) from within the lxc container: * edit /var/lib/lxc/lucid-test-lp/fstab * Add a line: {{{ /home/$username /var/lib/lxc/lucid-test-lp/rootfs/home/$username none bind 0 0 }}} 1. below this is not yet updated from the vm instructions |
Line 32: | Line 96: |
1. ssh -A <vm IP address> to connect to the VM. You can now follow the [[Getting|getting-started]] on LP instructions. | 1. ssh -A <vm IP address> to connect to the VM. 1. {{{bzr whoami "Your Name <your.email@example.com>"}}} to set your bzr identity in the VM. 1. You can now follow the [[Getting|getting-started]] on LP instructions. = References = See also this email thread about [[https://lists.launchpad.net/launchpad-dev/msg03456.html|running Launchpad in a virtual machine]], and this [[https://lists.launchpad.net/launchpad-dev/msg03454.html|discussion of the differences]] between running in a [[Running/Schroot|chroot]] environment and running a VM. [[Running/RemoteAccess]] has a discussion for how you can configure the VM to allow the host machine to access the web pages, etc. = Alternatively = You can skip some manual steps of installing from an ISO using a command like this: {{{ sudo ubuntu-vm-builder kvm lucid --domain vm --dest ~/vm/lp-dev \ --hostname lp-dev \ --mem 2048 --cpus 2 \ --components main,universe,multiverse,restricted \ --mirror http://10.113.3.35:3142/mirror.internode.on.net/pub/ubuntu/ubuntu \ --libvirt qemu:///system \ --debug -v \ --ssh-user-key ~/.ssh/id_rsa.pub --ssh-key ~/.ssh/id_rsa.pub \ --rootsize 24000 \ --user $USER }}} After installation completes, it should show up in your virt-manager menu. = In LXC = It seems like it would be nice to run Launchpad in [[http://lxc.teegra.net/|LXC containers]]: they should be more efficient than a VM (especially with regard to memory and disk) but more isolated than a chroot. More testing or documentation is needed. |
This page explains how to set up and run Launchpad (for development) inside a LXC.
Why?
Launchpad development setup makes significant changes to your machine; its nice to be unaffected by those except when you are actually doing such development.
Also, launchpad has some limitations on concurrent testing per-machine and so forth - multiple container's can be used to work around this.
Make a LXC
- Install lxc
sudo apt-get install lxc
Work around 800456
sudo apt-get install cgroup-bin
Work around 784093
sudo dd of=/etc/cgconfig.conf << EOF mount { cpu = /sys/fs//cgroup/cpu; cpuacct = /sys/fs/cgroup/cpu; devices = /sys/fs/cgroup/cpu; memory = /sys/fs/cgroup/cpu; } EOF sudo service cgconfig restart
Work around 798476 (optional if you run i386 or have a -tonne- of memory and don't care about 64-bit footprint.
- Grab the patch from the bug and apply it to /usr/lib/lxc/templates/lxc-lucid. If you're running i386 already or want a 64-bit lxc then do not pass arch= on the lxc-create command line.
- Create a config for your containers
sudo dd of=/etc/lxc/local.conf << EOF lxc.network.type=veth lxc.network.link=virbr0 lxc.network.flags=up EOF
- Create a container
sudo arch=i386 lxc-create -n lucid-test-lp -t lucid -f /etc/lxc/local.conf
- If you want to use a proxy
sudo arch=i386 http_proxy=http://host:port/ lxc-create -n lucid-test-lp -t lucid -f /etc/lxc/local.conf
- And if you want to set a custom mirror, similar to http_proxy, but set MIRROR= instead.
- Start it
sudo lxc-start -n lucid-test-lp
- Ignore the warning about openssh crashing - it restarts on a later event. The initial credentials are root:root.
- The new container won't have your proxy / mirror settings preserved. Customise it at this point before going further if you care about this.
- Grab your user id and username so you can setup a bind mount outside the container:
id -u id -nu
- Inside the container add the user:
adduser --uid $id $username
- To stop it now run 'poweroff -n'.
- Setup a bind mount so you can access your home dir (and thus your LP source code) from within the lxc container:
- edit /var/lib/lxc/lucid-test-lp/fstab
- Add a line:
/home/$username /var/lib/lxc/lucid-test-lp/rootfs/home/$username none bind 0 0
- below this is not yet updated from the vm instructions
After its installed, connect to the image and install acpid and openssh-server
- Use ssh-copy-id to copy your public key into the VM.
ssh -A <vm IP address> to connect to the VM.
bzr whoami "Your Name <your.email@example.com>" to set your bzr identity in the VM.
You can now follow the getting-started on LP instructions.
References
See also this email thread about running Launchpad in a virtual machine, and this discussion of the differences between running in a chroot environment and running a VM. Running/RemoteAccess has a discussion for how you can configure the VM to allow the host machine to access the web pages, etc.
Alternatively
You can skip some manual steps of installing from an ISO using a command like this:
sudo ubuntu-vm-builder kvm lucid --domain vm --dest ~/vm/lp-dev \ --hostname lp-dev \ --mem 2048 --cpus 2 \ --components main,universe,multiverse,restricted \ --mirror http://10.113.3.35:3142/mirror.internode.on.net/pub/ubuntu/ubuntu \ --libvirt qemu:///system \ --debug -v \ --ssh-user-key ~/.ssh/id_rsa.pub --ssh-key ~/.ssh/id_rsa.pub \ --rootsize 24000 \ --user $USER
After installation completes, it should show up in your virt-manager menu.
In LXC
It seems like it would be nice to run Launchpad in LXC containers: they should be more efficient than a VM (especially with regard to memory and disk) but more isolated than a chroot. More testing or documentation is needed.