3281
Comment: remove stray "LP"
|
68
redirect to readthedocs
|
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 an LXD managed LXC container, superseding [[Running/LXC]]. = Why? = Launchpad development setup makes significant changes to your machine; it's nice to be unaffected by those when you're not doing such development. Also, multiple containers can be used to work around Launchpad's limitations regarding concurrent test runs on a single machine. LXD also has some nice snapshotting and ZFS capabilities that I find easier to use with LXD's frontend. These instructions should work on Ubuntu 14.04 LTS or later. It has only been tested on 16.04 though. = Create an LXD Container = This assumes you already have LXD setup. If not, follow the instructions for getting lxd installed and configured on your network: https://linuxcontainers.org/lxd/getting-started-cli/ 1. If you haven't done so already, run this script to set up LXD to let you use your home directory inside the container: {{{ #! /bin/sh id=400000 # some large uid outside of typical range, and outside of already mapped ranges in /etc/sub{u,g}id uid=$(id -u) gid=$(id -g) user=$(id -un) group=$(id -gn) # give lxc permission to map your user/group id through sudo usermod --add-subuids ${uid}-${uid} --add-subgids ${gid}-${gid} root # create a profile to control this lxc profile create $user >/dev/null 2>&1 # configure profile cat << EOF | lxc profile edit $user name: $user description: allow home dir mounting for $user config: raw.lxc: | lxc.id_map = u $id $uid 1 lxc.id_map = g $id $gid 1 user.user-data: | #cloud-config runcmd: - "groupadd $group --gid $id" - "useradd $user --uid $id --gid $group --groups adm,sudo --shell /bin/bash" - "echo '$user ALL=(ALL) NOPASSWD:ALL' >/etc/sudoers.d/90-cloud-init-users" - "chmod 0440 /etc/sudoers.d/90-cloud-init-users" devices: home: type: disk source: $HOME path: $HOME EOF }}} 1. Create a container This command creates a Ubuntu 12.04 32-bit unprivileged container using the profile created in the previous step. Feel free to drop the i386 to use 64-bit if you have the RAM. As of this writing 32-bit takes 700MB and 64-bit takes 1.5GB of memory. {{{ lxc launch ubuntu:12.04/i386 lpdev -p default -p $USER }}} 1. Find the container IP, either from `lxc list` or `lxc info lpdev`. 1. Then connect with: {{{ ssh -A ubuntu@IP_ADDRESS_FROM_LXC_LS The -A permits you to access Launchpad code hosting from within the container without needing to reenter passphrases. }}} 1. [Inside the container] Install Bazaar so you can run rocketfuel-setup. {{{ sudo apt-get install bzr }}} 1. [Inside the container] You can now follow the normal [[Running|LP installation instructions]]. Be warned that changes in your home directory will also be seen outside the container and vice versa. If your home directory already has a Launchpad work area set up you'll want to run rocketfuel-setup --no-workspace to avoid trying to recreate it, but all subsequent steps are still required. 1. Follow [[Running/RemoteAccess]] to set up access from the host's applications to the container's Launchpad instance or else going to launchpad.dev won't work. |
#refresh 0 https://launchpad.readthedocs.io/en/latest/running.html |