juju gui #14

  • By hatch
  • Latest version (#14)
  • precise
  • Stable
  • Edge

Description

Web GUI for Juju


Juju GUI Charm

This charm makes it easy to deploy a Juju GUI into an existing environment.

Supported Browsers

The Juju GUI supports recent releases of Chrome and Chromium. Recent Firefox
releases are also supported, but regressions may occur until the completion of
upcoming continuous integration work.

Demo/Staging Server

A demo/staging server is available.

Deploying the Juju GUI

Deploying the Juju GUI is accomplished using Juju itself.

You need a configured and bootstrapped Juju environment: see the Juju docs
about getting started,
and then run the usual bootstrap command.

juju bootstrap

Next, you simply need to deploy the charm and expose it. (See also "Deploying
with Jitsu" below, for another option.)

juju deploy cs:~juju-gui/precise/juju-gui
juju expose juju-gui

Finally, you need to identify the GUI's URL. It can take a few minutes for the
GUI to be built and to start; this command will let you see when it is ready
to go by giving you regular status updates:

watch juju status

Eventually, at the end of the status you will see something that looks like
this:

services:
  juju-gui:
    charm: cs:~juju-gui/precise/juju-gui-7
    exposed: true
    relations: {}
    units:
      juju-gui/0:
        agent-state: started
        machine: 1
        open-ports:
        - 80/tcp
        - 443/tcp
        public-address: ec2-www-xxx-yyy-zzz.compute-1.amazonaws.com

That tells me I can go to the public-address in my browser via HTTPS
(https://ec2-www-xxx-yyy-zzz.compute-1.amazonaws.com/ in this example), and
start configuring the rest of Juju with the GUI. You should see a similar
web address. Accessing the GUI via HTTP will redirect to using HTTPS.

By default, the deployment uses self-signed certificates. The browser will ask
you to accept a security exception once.

You will see a login form with the username fixed to "admin". The password is
the same as your Juju environment's admin-secret, found in
~/.juju/environments.yaml.

Deploying with Jitsu

The instructions above cause you to use a separate machine to work with the
GUI. If you'd like to reduce your machine footprint (and perhaps your costs),
you can colocate the GUI with the Juju bootstrap node. This approach will
change in the future (probably with the Juju shipped with Ubuntu 13.04), so be
warned.

For now, though, install Jitsu...

sudo apt-get install juju-jitsu

...and then replace "juju deploy cs:~juju-gui/precise/juju-gui" from the
previous instructions with this:

jitsu deploy-to 0 cs:~juju-gui/precise/juju-gui

Contacting the Developers

If you run into problems with the charm, please feel free to contact us on the
Juju mailing list, or on
Freenode's IRC network on #juju. We're not always around (working hours in
Europe and North America are your best bets), but if you send us a mail or
ping "jujugui" we will eventually get back to you.

If you want to help develop the charm, please see the charm's HACKING.md.

Configuration

ssl-cert-path
(string) The path to the directory where the SSL certificates are stored.
/etc/ssl/juju-gui
juju-api-branch
(string) The Juju API Bazaar branch (implementing the WebSocket server). Since juju-core includes the WebSocket API server out of the box, this option is ignored if the charm is deployed using juju-core.
lp:~hazmat/juju/rapi-rollup
staging
(boolean) Connect the Juju GUI to the staging backend (i.e. a simulated Juju environment). Currently juju-core does not support the staging backend. For this reason, this option is ignored if the charm is deployed using juju-core.
secure
(boolean) In order to run the GUI over a non secure connection (HTTP) set this flag to false. Do not set this property unless you understand and accept the risks.
True
serve-tests
(boolean) Whether or not the GUI unit tests are exposed. If this option is enabled, unit tests can be run in the browser by visiting the URL "https://[Juju GUI address]/test/".
allow-additional-deb-repositories
(boolean) Allow access to remote PPAs. If this is False then you must have somehow configured the configured package sources to include the packages that the GUI needs. This will be made more explicit soon. For now, look in the source: hooks/install and hooks/backend.py in particular.
True
ssl-key-contents
(string) The contents of the private key file to be used in SSL connections to the GUI. Both ssl-cert-contents and ssl-key-contents must be provided. If not, cetificates will be automatically generated.
sandbox
(boolean) Run using an in-memory sandbox rather than a real (or even improv) Juju backend. Sandbox is a client side construct running entirely in the client. Sandbox doesn't currently support imported environment simulation and is exclusive to the staging: true configuration. If staging is true it will be used in preference to sandbox at this time.
ssl-cert-contents
(string) The contents of the certificate file to be used in SSL connections to the GUI. Both ssl-cert-contents and ssl-key-contents must be provided. If not, cetificates will be automatically generated.
command-log-file
(string) The log file where stdout and stderr should be sent for all commands that are run by charm hooks.
/var/log/juju/juju-gui.log
juju-gui-console-enabled
(boolean) Whether or not the console should be enabled for the browser.
login-help
(string) The help text shown to the user on the login screen.
The password is the admin-secret from the Juju environment. This can often be found by looking in ~/.juju/environments.yaml.
staging-environment
(string) The environment JSON export used by the staging server. This option can be used to change the topology of the simulated Juju environment. Possible values are 'sample' and 'large'. Currently juju-core does not support the staging backend. For this reason, this option is ignored if the charm is deployed using juju-core.
sample
read-only
(boolean) Whether or not the GUI is in read-only mode. Note that read-only mode is advisory, and enforced only in the client. If someone can access the websocket and has the password, they can send commands over the websocket to mutate the environment.
juju-gui-source
(string) Where to install Juju GUI from. Possible values are: - 'stable' (default): the latest stable release will be deployed; - 'trunk': the latest trunk release will be deployed; - a stable version (e.g '0.1.0'): the specified stable version will be deployed; - a trunk version (e.g '0.1.0+build.1'): the specified trunk version will be deployed; - a Bazaar branch (e.g. 'lp:juju-gui'): a release will be created and deployed from the specified Bazaar branch. 'http://' prefixed branches work as well. - a 'url:' prefixed url (ex: url:http://...) of a specific location to pull a release from.
stable