Add support for use with proxies, drop shared-db relations, add readme

This commit is contained in:
James Page
2013-07-16 13:10:26 +01:00
parent dfd4602933
commit 972c2ecc73
7 changed files with 97 additions and 7 deletions

68
README.md Normal file
View File

@@ -0,0 +1,68 @@
Overview
========
The OpenStack Dashboard provides a Django based web interface for use by both
administrators and users of an OpenStack Cloud.
It allows you to managed Nova, Glance, Cinder and Neutron resources within the
cloud.
Usage
=====
The OpenStack Dashboard is deployed and related to keystone:
juju deploy openstack-dashboard
juju add-unit openstack-dashboard keystone
The dashboard will use keystone for user authentication and authorization and
to interact with the catalog of services within the cloud.
The dashboard is accessible on:
http(s)://service_unit_address/horizon
At a minimum, the cloud must provide Glance and Nova services.
SSL configuration
=================
To fully secure your dashboard services, you can provide a SSL key and
certificate for installation and configuration. These are provided as
base64 encoded configuration options::
juju set openstack-dashboard ssl_key="$(base64 my.key)" \
ssl_cert="$(base64 my.cert)"
The service will be reconfigured to use the supplied information.
High Availability
=================
The OpenStack Dashboard charm supports HA in-conjunction with the hacluster
charm:
juju deploy hacluster dashboard-hacluster
juju set openstack-dashboard vip="192.168.1.200"
juju add-relation openstack-dashboard dashboard-hacluster
juju add-unit -n 2 openstack-dashboard
After addition of the extra 2 units completes, the dashboard will be
accessible on 192.168.1.200 with full load-balancing across all three units.
Please refer to the charm configuration for full details on all HA config
options.
Use with a Load Balancing Proxy
===============================
Instead of deploying with the hacluster charm for load balancing, its possible
to also deploy the dashboard with load balancing proxy such as HAProxy:
juju deploy haproxy
juju add-relation haproxy openstack-dashboard
juju add-unit -n 2 openstack-dashboard
This option potentially provides better scale-out than using the charm in
conjunction with the hacluster charm.

View File

@@ -8,7 +8,8 @@ from charmhelpers.core.hookenv import (
config,
relation_set,
relation_get,
relation_ids
relation_ids,
unit_get
)
from charmhelpers.core.host import (
apt_update, apt_install,
@@ -17,7 +18,8 @@ from charmhelpers.core.host import (
)
from charmhelpers.contrib.openstack.utils import (
configure_installation_source,
openstack_upgrade_available
openstack_upgrade_available,
save_script_rc
)
from horizon_utils import (
PACKAGES, register_configs,
@@ -57,6 +59,17 @@ def config_changed():
enable_ssl()
if openstack_upgrade_available('openstack-dashboard'):
do_openstack_upgrade(configs=CONFIGS)
env_vars = {
'OPENSTACK_URL_HORIZON':
"http://localhost:70{}|Login+-+OpenStack".format(
config('webroot')
),
'OPENSTACK_SERVICE_HORIZON': "apache2",
'OPENSTACK_PORT_HORIZON_SSL': 433,
'OPENSTACK_PORT_HORIZON': 70
}
save_script_rc(**env_vars)
CONFIGS.write_all()
@@ -112,6 +125,13 @@ def ha_relation_joined():
resource_params=resource_params,
clones=clones)
@hooks.hook('website-relation-joined')
def website_relation_joined():
relation_set(port=70,
hostname=unit_get('private-address'))
if __name__ == '__main__':
try:
hooks.execute(sys.argv)

View File

@@ -127,6 +127,5 @@ def do_openstack_upgrade(configs):
apt_update()
apt_install(packages=PACKAGES, options=dpkg_opts, fatal=True)
# set CONFIGS to load templates from new release and regenerate config
# set CONFIGS to load templates from new release
configs.set_release(openstack_release=new_os_rel)
configs.write_all()

View File

@@ -0,0 +1 @@
horizon_relations.py

View File

@@ -2,11 +2,13 @@ name: openstack-dashboard
summary: a Django web interface to OpenStack
maintainer: Adam Gandelman <adamg@canonical.com>
description: |
The OpenStack Dashboard provides a full feature web interface for interacting
with instances, images, volumes and networks within an OpenStack deployment.
categories: ["misc"]
provides:
website:
interface: http
requires:
shared-db:
interface: mysql
identity-service:
interface: keystone
ha: