278 lines
14 KiB
XML
278 lines
14 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<chapter xmlns="http://docbook.org/ns/docbook"
|
|
xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
|
|
xml:id="ch_openstack-interfaces">
|
|
|
|
<title>OpenStack Interfaces</title>
|
|
|
|
<para>OpenStack has components that provide a view of the OpenStack installation such as a Django-built website that serves as a dashboard and the ability to connect to running instances using a VNC connection via a VNC Proxy.</para>
|
|
<section xml:id="about-the-dashboard">
|
|
<title>About the Dashboard</title><para>You can use a dashboard interface with an OpenStack Compute installation with a web-based
|
|
console provided by the Openstack-Dashboard project. It provides a reference
|
|
implementation of a Django site that provides web-based interactions with the OpenStack
|
|
Compute cloud controller. For more information about the Openstack-Dashboard project,
|
|
please visit: <link xlink:href="https://github.com/openstack/horizon/tree/stable/diablo/openstack-dashboard">
|
|
https://github.com/openstack/horizon/tree/stable/diablo/openstack-dashboard</link>. These instructions are for a test deployment
|
|
of an OpenStack Dashboard. They configure your dashboard to use the default Django
|
|
server. To create a more robust, production-ready installation, you would configure this
|
|
with an Apache web server. </para>
|
|
|
|
|
|
<section xml:id="dashboard-system-requirements">
|
|
|
|
<title>System Requirements for the Dashboard</title>
|
|
|
|
<para>You should have a running OpenStack Compute installation with the Keystone module
|
|
enabled for identity management. Follow these <link xlink:href="http://docs.openstack.org/diablo/">general instructions for installing Identity Management</link>. For a good all-in-one Nova/Glance/Keystone installation there is the <link xlink:href="https://github.com/cloudbuilders/devstack">devstack</link> project.</para>
|
|
<para>The dashboard needs to be installed on the node that can contact the Keystone service.</para>
|
|
<para>You should know the URL of your Identity endpoint and the Compute endpoint. </para>
|
|
<para>You must know the credentials of a valid Keystone tenant.</para>
|
|
<para>You must have git installed. It's straightforward to install it with sudo
|
|
apt-get install git-core. </para>
|
|
<para>Python 2.6 is required, and these instructions have been tested with Ubuntu 10.10. It
|
|
should run on any system with Python 2.6 or 2.7 that is capable of running Django
|
|
including Mac OS X (installing prerequisites may differ depending on platform). </para>
|
|
<para>Optional components:</para>
|
|
|
|
<itemizedlist>
|
|
<listitem><para>An Image Store (<emphasis role="italic">Glance</emphasis>) endpoint.</para></listitem>
|
|
<listitem><para>An Object Store (<emphasis role="italic">Swift</emphasis>) endpoint.</para></listitem>
|
|
<listitem>
|
|
<para>
|
|
A <link xlink:href="http://wiki.openstack.org/Quantum">Quantum</link> (networking) endpoint.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
<section xml:id="installing-openstack-dashboard">
|
|
|
|
<title>Installing the OpenStack Dashboard</title>
|
|
<para>Here are the overall steps for building the dashboard.</para>
|
|
|
|
<orderedlist>
|
|
<listitem><para>Get the source for the openstack-dashboard project.</para></listitem>
|
|
<listitem>
|
|
<para>Configure the openstack-dashboard.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Install.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>Run the server that starts the dashboard.</para>
|
|
</listitem>
|
|
</orderedlist>
|
|
|
|
<para>Before you begin ensure you have git installed.</para>
|
|
|
|
<para>Get the horizon project which includes openstack-dashboard, a reference implementation of the OpenStack Dashboard.</para>
|
|
|
|
<literallayout class="monospaced">git clone https://github.com/openstack/horizon
|
|
cd horizon
|
|
git checkout stable/diablo</literallayout>
|
|
|
|
<section xml:id="build-and-configure-openstack-dashboard">
|
|
<title>Configure Openstack-Dashboard</title>
|
|
<para>Now you can configure the dashboard application. The first step in configuring the application
|
|
is to create your local_settings.py file. An example is provided that you can copy
|
|
to local_settings.py and then modify for your environment.
|
|
</para>
|
|
<para>
|
|
<literallayout class="monospaced">
|
|
cd openstack-dashboard/local/
|
|
cp local_settings.py.example local_settings.py
|
|
vi local_settings.py
|
|
</literallayout>
|
|
</para>
|
|
<para>In the new copy of the local_settings.py file, change these important options:</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>OPENSTACK_ADMIN_TOKEN : Token for Keystone endpoint.</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>OPENSTACK_KEYSTONE_URL : URL for the Keystone endpoint.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<simplesect> <title>Keystone Configuration (required)</title>
|
|
<para>
|
|
|
|
The admin token can be generated by executing something like the following using the keystone-manage command on the Keystone host:</para>
|
|
|
|
<literallayout class="monospaced">keystone-manage token add 999888777666 admin admin 2015-02-05T00:00</literallayout>
|
|
|
|
<para>To use this token you would add the following to local_settings.py:</para>
|
|
|
|
<literallayout class="monospaced">OPENSTACK_ADMIN_TOKEN = "999888777666"</literallayout>
|
|
|
|
<para>The Keystone endpoint setting takes the following form:</para>
|
|
|
|
<literallayout class="monospaced">OPENSTACK_KEYSTONE_URL = "http://mykeystoneurl:5000/v2.0/".</literallayout></simplesect>
|
|
<simplesect><title>Object Storage Configuration (optional)</title>
|
|
<para>If a Swift endpoint is available and configured in the Keystone service catalog turning on the Swift UI is as simple as adding the following to local_settings.py:
|
|
|
|
</para>
|
|
<literallayout class="monospaced">SWIFT_ENABLED = True</literallayout>
|
|
</simplesect>
|
|
<simplesect><title>Quantum Configuration (optional)</title>
|
|
<para>Quantum currently requires the following settings:</para>
|
|
<literallayout class="monospaced">
|
|
QUANTUM_ENABLED = True
|
|
QUANTUM_URL = '127.0.0.1'
|
|
QUANTUM_PORT = '9696'
|
|
QUANTUM_TENANT = '1234'
|
|
QUANTUM_CLIENT_VERSION='0.1'
|
|
</literallayout></simplesect>
|
|
</section>
|
|
<section xml:id="install-dashboard">
|
|
<title>Install the Dashboard</title>
|
|
<para>After Dashboard has been configured install the Dashboard virtual environment using the terminal commands below:</para>
|
|
<note>
|
|
<para>
|
|
The instructions below are for Ubuntu, however, setuptools can be installed on a wide variety of platforms: <link xlink:href="http://pypi.python.org/pypi/setuptools">http://pypi.python.org/pypi/setuptools</link>
|
|
</para>
|
|
</note>
|
|
<literallayout class="monospaced">
|
|
apt-get install -y python-setuptools
|
|
sudo easy_install virtualenv
|
|
python tools/install_venv.py
|
|
</literallayout>
|
|
<para>On RedHat systems (eg CentOS, Fedora), you will also need to install
|
|
python-devel
|
|
<literallayout class="monospaced">yum install python-devel </literallayout></para>
|
|
<para>Installing the virtual environment will take some time depending on download speeds. </para>
|
|
</section>
|
|
<section xml:id="run-the-server">
|
|
<title>Run the Server</title>
|
|
<para>Dashboard is run using the standard Django manage.py script from the context
|
|
of the virtual environment. Be sure you synchronize the database with this
|
|
command: </para>
|
|
<literallayout class="monospaced">tools/with_venv.sh dashboard/manage.py syncdb</literallayout>
|
|
<para>Run the server on a high port value so that you can validate the
|
|
installation.</para><para><literallayout class="monospaced">tools/with_venv.sh dashboard/manage.py runserver 0.0.0.0:8000</literallayout></para><para>Make sure that your firewall isn't blocking TCP/8000 and just point your browser at this server on port 8000. If you are running the server on the same machine as your browser, this would be "http://localhost:8000". </para>
|
|
<mediaobject>
|
|
<imageobject role="fo">
|
|
<imagedata fileref="figures/dashboard-overview.png"
|
|
format="PNG" scale="60"/>
|
|
</imageobject>
|
|
<imageobject role="html">
|
|
<imagedata fileref="figures/dashboard-overview.png"
|
|
format="PNG" />
|
|
</imageobject>
|
|
</mediaobject></section></section></section>
|
|
<section xml:id="getting-started-with-the-vnc-proxy"><info><title>Getting Started with the VNC Proxy</title></info>
|
|
|
|
<para>
|
|
The VNC Proxy is an OpenStack component that allows users of Nova to
|
|
access their instances through a websocket enabled browser (like
|
|
Google Chrome 4.0). See <link xlink:href="http://caniuse.com/#search=websocket">http://caniuse.com/#search=websocket</link> for a reference list of supported web browsers.</para>
|
|
<para>
|
|
A VNC Connection works like so:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
User connects over an API and gets a URL like
|
|
http://ip:port/?token=xyz
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
User pastes URL in browser
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Browser connects to VNC Proxy though a websocket enabled client
|
|
like noVNC
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
VNC Proxy authorizes users token, maps the token to a host and
|
|
port of an instance's VNC server
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
VNC Proxy initiates connection to VNC server, and continues
|
|
proxying until the session ends
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
<section xml:id="configuring-the-vnc-proxy"><info><title>Configuring the VNC Proxy</title></info>
|
|
|
|
<para>The nova-vncproxy requires a websocket enabled html client to work properly. At this time,
|
|
the only tested client is a slightly modified fork of noVNC, which you can at find <link
|
|
xmlns:xlink="http://www.w3.org/1999/xlink"
|
|
xlink:href="https://github.com/openstack/noVNC"
|
|
>https://github.com/openstack/noVNC</link>
|
|
</para>
|
|
<para>The noVNC tool must be in the location specified by --vncproxy_wwwroot, which defaults to
|
|
/var/lib/nova/noVNC. nova-vncproxy will fail to launch until this code is properly installed. </para>
|
|
<para>
|
|
By default, nova-vncproxy binds 0.0.0.0:6080. This can be
|
|
configured with:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
--vncproxy_port=[port]
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
--vncproxy_host=[host]
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
<section xml:id="enabling-vnc-consoles-in-nova"><info><title>Enabling VNC Consoles in Nova</title></info>
|
|
|
|
<para>
|
|
At the moment, VNC support is supported only when using libvirt.
|
|
To enable VNC Console, configure the following flags in the nova.conf file:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
--vnc_console_proxy_url=http://[proxy_host]:[proxy_port] -
|
|
proxy_port defaults to 6080. This URL must point to
|
|
nova-vncproxy
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
--[no]vnc_enabled - defaults to enabled. If this flag is
|
|
disabled your instances will launch without VNC support.
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</section>
|
|
<section xml:id="getting-an-instances-vnc-console"><info><title>Getting an Instance's VNC Console</title></info>
|
|
|
|
<para>
|
|
You can access an instance's VNC Console URL in the following
|
|
methods:
|
|
</para>
|
|
<itemizedlist>
|
|
<listitem>
|
|
<para>
|
|
Using the direct api: eg: 'stack --user=admin --project=admin
|
|
compute get_vnc_console instance_id=1'
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Support for Dashboard, and the Openstack API will be
|
|
forthcoming
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist><para>
|
|
At the moment, VNC Consoles are only supported through the web
|
|
browser, but more general VNC support is in the works.
|
|
</para>
|
|
</section>
|
|
</section>
|
|
|
|
</chapter>
|