=========================
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 || 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.
