=========================
All-In-One Single Machine
=========================

Things are about to get real! Using OpenStack in containers or VMs is
nice for kicking the tires, but doesn't compare to the feeling you get
with hardware.

Prerequisites Linux & Network
=============================

Minimal Install
---------------

You need to have a system with a fresh install of Linux. You can
download the `Minimal
CD <https://help.ubuntu.com/community/Installation/MinimalCD>`__ for
Ubuntu releases since DevStack will download & install all the
additional dependencies. The netinstall ISO is available for
`Fedora <http://mirrors.kernel.org/fedora/releases/>`__
and
`CentOS/RHEL <http://mirrors.kernel.org/centos/>`__.
You may be tempted to use a desktop distro on a laptop, it will probably
work but you may need to tell Network Manager to keep its fingers off
the interface(s) that OpenStack uses for bridging.

Network Configuration
---------------------

Determine the network configuration on the interface used to integrate
your OpenStack cloud with your existing network. For example, if the IPs
given out on your network by DHCP are 192.168.1.X - where X is between
100 and 200 you will be able to use IPs 201-254 for **floating ips**.

To make things easier later change your host to use a static IP instead
of DHCP (i.e. 192.168.1.201).

Installation shake and bake
===========================

Add your user
-------------

We need to add a user to install DevStack. (if you created a user during
install you can skip this step and just give the user sudo privileges
below)

::

    adduser stack

Since this user will be making many changes to your system, it will need
to have sudo privileges:

::

    apt-get install sudo -y || yum install -y sudo
    echo "stack ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

From here on you should use the user you created. **Logout** and
**login** as that user.

Download DevStack
-----------------

We'll grab the latest version of DevStack via https:

::

    sudo apt-get install git -y || sudo yum install -y git
    git clone https://git.openstack.org/openstack-dev/devstack
    cd devstack

Run DevStack
------------

Now to configure ``stack.sh``. DevStack includes a sample in
``devstack/samples/local.conf``. Create ``local.conf`` as shown below to
do the following:

-  Set ``FLOATING_RANGE`` to a range not used on the local network, i.e.
   192.168.1.224/27. This configures IP addresses ending in 225-254 to
   be used as floating IPs.
-  Set ``FIXED_RANGE`` and ``FIXED_NETWORK_SIZE`` to configure the
   internal address space used by the instances.
-  Set ``FLAT_INTERFACE`` to the Ethernet interface that connects the
   host to your local network. This is the interface that should be
   configured with the static IP address mentioned above.
-  Set the administrative password. This password is used for the
   **admin** and **demo** accounts set up as OpenStack users.
-  Set the MySQL administrative password. The default here is a random
   hex string which is inconvenient if you need to look at the database
   directly for anything.
-  Set the RabbitMQ password.
-  Set the service password. This is used by the OpenStack services
   (Nova, Glance, etc) to authenticate with Keystone.

``local.conf`` should look something like this:

::

    [[local|localrc]]
    FLOATING_RANGE=192.168.1.224/27
    FIXED_RANGE=10.11.12.0/24
    FIXED_NETWORK_SIZE=256
    FLAT_INTERFACE=eth0
    ADMIN_PASSWORD=supersecret
    MYSQL_PASSWORD=iheartdatabases
    RABBIT_PASSWORD=flopsymopsy
    SERVICE_PASSWORD=iheartksl
    SERVICE_TOKEN=xyzpdqlazydog

Run DevStack:

::

    ./stack.sh

A seemingly endless stream of activity ensues. When complete you will
see a summary of ``stack.sh``'s work, including the relevant URLs,
accounts and passwords to poke at your shiny new OpenStack.

Using OpenStack
---------------

At this point you should be able to access the dashboard from other
computers on the local network. In this example that would be
http://192.168.1.201/ for the dashboard (aka Horizon). Launch VMs and if
you give them floating IPs and security group access those VMs will be
accessible from other machines on your network.

Some examples of using the OpenStack command-line clients ``nova`` and
``glance`` are in the shakedown scripts in ``devstack/exercises``.
``exercise.sh`` will run all of those scripts and report on the results.
