Wrong container name in devstack "All-In-One Single LXC Container" manual. Link: http://docs.openstack.org/developer/devstack/guides/lxc.html After creating "devstack" container with below command sudo lxc-create -n devstack -t ubuntu -f devstack-lxc.conf -- --packages=bsdmainutils,git The name should be 'devstack' instead of 'p2' in the below command ssh ubuntu@$(sudo lxc-info -n p2 | awk '/IP/ { print $2 }')). Change-Id: I7a84b97b03b2dd4338f1d946b7eafb8ec6e3767d Closes-bug: #1582248
		
			
				
	
	
		
			165 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			165 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
================================
 | 
						|
All-In-One Single LXC Container
 | 
						|
================================
 | 
						|
 | 
						|
This guide walks you through the process of deploying OpenStack using devstack
 | 
						|
in an LXC container instead of a VM.
 | 
						|
 | 
						|
The primary benefits to running devstack inside a container instead of a VM is
 | 
						|
faster performance and lower memory overhead while still providing a suitable
 | 
						|
level of isolation. This can be particularly useful when you want to simulate
 | 
						|
running OpenStack on multiple nodes.
 | 
						|
 | 
						|
.. Warning:: Containers do not provide the same level of isolation as a virtual
 | 
						|
   machine.
 | 
						|
 | 
						|
.. Note:: Not all OpenStack features support running inside of a container. See
 | 
						|
   `Limitations`_ section below for details. :doc:`OpenStack in a VM <single-vm>`
 | 
						|
   is recommended for beginners.
 | 
						|
 | 
						|
Prerequisites
 | 
						|
==============
 | 
						|
 | 
						|
This guide is written for Ubuntu 14.04 but should be adaptable for any modern
 | 
						|
Linux distribution.
 | 
						|
 | 
						|
Install the LXC package::
 | 
						|
 | 
						|
   sudo apt-get install lxc
 | 
						|
 | 
						|
You can verify support for containerization features in your currently running
 | 
						|
kernel using the ``lxc-checkconfig`` command.
 | 
						|
 | 
						|
Container Setup
 | 
						|
===============
 | 
						|
 | 
						|
Configuration
 | 
						|
---------------
 | 
						|
 | 
						|
For a successful run of ``stack.sh`` and to permit use of KVM to run the VMs you
 | 
						|
launch inside your container, we need to use the following additional
 | 
						|
configuration options. Place the following in a file called
 | 
						|
``devstack-lxc.conf``::
 | 
						|
 | 
						|
  # Permit access to /dev/loop*
 | 
						|
  lxc.cgroup.devices.allow = b 7:* rwm
 | 
						|
  
 | 
						|
  # Setup access to /dev/net/tun and /dev/kvm
 | 
						|
  lxc.mount.entry = /dev/net/tun dev/net/tun none bind,create=file 0 0
 | 
						|
  lxc.mount.entry = /dev/kvm dev/kvm none bind,create=file 0 0
 | 
						|
  
 | 
						|
  # Networking
 | 
						|
  lxc.network.type = veth
 | 
						|
  lxc.network.flags = up
 | 
						|
  lxc.network.link = lxcbr0
 | 
						|
 | 
						|
 | 
						|
Create Container
 | 
						|
-------------------
 | 
						|
 | 
						|
The configuration and rootfs for LXC containers are created using the
 | 
						|
``lxc-create`` command.
 | 
						|
 | 
						|
We will name our container ``devstack`` and use the ``ubuntu`` template which
 | 
						|
will use ``debootstrap`` to build a Ubuntu rootfs. It will default to the same
 | 
						|
release and architecture as the host system. We also install the additional
 | 
						|
packages ``bsdmainutils`` and ``git`` as we'll need them to run devstack::
 | 
						|
 | 
						|
  sudo lxc-create -n devstack -t ubuntu -f devstack-lxc.conf -- --packages=bsdmainutils,git
 | 
						|
 | 
						|
The first time it builds the rootfs will take a few minutes to download, unpack,
 | 
						|
and configure all the necessary packages for a minimal installation of Ubuntu.
 | 
						|
LXC will cache this and subsequent containers will only take seconds to create.
 | 
						|
 | 
						|
.. Note:: To speed up the initial rootfs creation, you can specify a mirror to
 | 
						|
   download the Ubuntu packages from by appending ``--mirror=`` and then the URL
 | 
						|
   of a Ubuntu mirror. To see other other template options, you can run
 | 
						|
   ``lxc-create -t ubuntu -h``.
 | 
						|
 | 
						|
Start Container
 | 
						|
----------------
 | 
						|
 | 
						|
To start the container, run::
 | 
						|
 | 
						|
  sudo lxc-start -n devstack
 | 
						|
 | 
						|
A moment later you should be presented with the login prompt for your container.
 | 
						|
You can login using the username ``ubuntu`` and password ``ubuntu``.
 | 
						|
 | 
						|
You can also ssh into your container. On your host, run
 | 
						|
``sudo lxc-info -n devstack`` to get the IP address (e.g. 
 | 
						|
``ssh ubuntu@$(sudo lxc-info -n devstack | awk '/IP/ { print $2 }')``).
 | 
						|
 | 
						|
Run Devstack
 | 
						|
-------------
 | 
						|
 | 
						|
You should now be logged into your container and almost ready to run devstack.
 | 
						|
The commands in this section should all be run inside your container.
 | 
						|
 | 
						|
.. Tip:: You can greatly reduce the runtime of your initial devstack setup by
 | 
						|
   ensuring you have your apt sources.list configured to use a fast mirror.
 | 
						|
   Check and update ``/etc/apt/sources.list`` if necessary and then run 
 | 
						|
   ``apt-get update``.
 | 
						|
 | 
						|
#. Download DevStack
 | 
						|
 | 
						|
   ::
 | 
						|
 | 
						|
       git clone https://git.openstack.org/openstack-dev/devstack
 | 
						|
 | 
						|
#. Configure
 | 
						|
 | 
						|
   Refer to :ref:`minimal-configuration` if you wish to configure the behaviour
 | 
						|
   of devstack.
 | 
						|
 | 
						|
#. Start the install
 | 
						|
 | 
						|
   ::
 | 
						|
 | 
						|
       cd devstack
 | 
						|
       ./stack.sh
 | 
						|
 | 
						|
Cleanup
 | 
						|
-------
 | 
						|
 | 
						|
To stop the container::
 | 
						|
 | 
						|
  lxc-stop -n devstack
 | 
						|
 | 
						|
To delete the container::
 | 
						|
 | 
						|
  lxc-destroy -n devstack
 | 
						|
 | 
						|
Limitations
 | 
						|
============
 | 
						|
 | 
						|
Not all OpenStack features may function correctly or at all when ran from within
 | 
						|
a container.
 | 
						|
 | 
						|
Cinder
 | 
						|
-------
 | 
						|
 | 
						|
Unable to create LVM backed volume
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
  In our configuration, we have not whitelisted access to device-mapper or LVM
 | 
						|
  devices. Doing so will permit your container to have access and control of LVM
 | 
						|
  on the host system. To enable, add the following to your
 | 
						|
  ``devstack-lxc.conf`` before running ``lxc-create``::
 | 
						|
 | 
						|
    lxc.cgroup.devices.allow = c 10:236 rwm
 | 
						|
    lxc.cgroup.devices.allow = b 252:* rwm
 | 
						|
 | 
						|
  Additionally you'll need to set ``udev_rules = 0`` in the ``activation``
 | 
						|
  section of ``/etc/lvm/lvm.conf`` unless you mount devtmpfs in your container.
 | 
						|
 | 
						|
Unable to attach volume to instance
 | 
						|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 | 
						|
 | 
						|
  It is not possible to attach cinder volumes to nova instances due to parts of
 | 
						|
  the Linux iSCSI implementation not being network namespace aware. This can be
 | 
						|
  worked around by using network pass-through instead of a separate network
 | 
						|
  namespace but such a setup significantly reduces the isolation of the
 | 
						|
  container (e.g. a ``halt`` command issued in the container will cause the host
 | 
						|
  system to shutdown).
 |