Updates from bradcrittenden Toggle Comment Threads | Keyboard Shortcuts

  • bradcrittenden 8:57 pm on March 1, 2017 Permalink | Reply
    Tags: Beta, ,   

    Introducing JAAS – Juju as a Service 

    Recently on jujucharms.com we opened the public beta of JAAS — Juju as a Service. Let’s explore what JAAS is and how you can participate now in the beta.

    Models and Controllers

    First, a little background to put the changes we’ve introduced into context. Juju allows you to model your service-oriented architecture and manage the deployment to public clouds, OpenStack, local hardware, and containers. Using the GUI, which is installed with every deployment of Juju, you can visualise your model and configure the parts.

    To manage the deployments, Juju requires a controller, a management node that keeps track of all of the components in your deployed model, handles scaling, and all of the other magic Juju does. When you use the command-line command juju bootstrap you are simply creating a controller. If you’re using a public cloud, that controller is a resource you’re charged to use like any other machine. Bear in mind a highly available deployment will require multiple bootstrapped controllers, so your expense for those nodes will be tripled if you have three HA controllers.

    Although it doesn’t take a long time to bootstrap a new controller, it isn’t instantaneous. Further, each controller is an island to itself, any configuration you make to one controller is not reflected in the others. Identity management is one type of configuration that is beneficial to share across models.

    What JAAS introduces is a common controller that is always deployed that you can use to create your models — the things you actually care about. Since it is already running, and maintained by us, you can skip the juju bootstrap step and simply start by using juju add-model to begin your work.

    Public beta of JAAS

    For the public beta we have set up a controller for everyone to use. Every new model created at jujucharms.com/new is attached to the public controller.  You can also access it from the command-line, which will be explained later.

    So with the beta of JAAS we are providing:

    • anonymous user access to modelling in the GUI from jujucharms.com/new,
    • support for all three big clouds (AWS, Azure, and Google) through a single controller, available from a web browser or CLI,
    • identity management across all models,
    • user access management to models,
    • model sharing via URLs, and
    • everything else that Juju offers!

    Use of the controller during the beta period will be free of charge! Models you create will use your public cloud credentials and you’ll be charged for them but the use of the controller is free.

    Getting started

    To start modelling you don’t even have to be logged in. Just visit jujucharms.com/new and begin adding applications from the charm store to your model. When you’re done adding services, applying any custom configuration, and creating the relations between them you can download and save a bundle file or go ahead and deploy to a public cloud. To do the deployment you’ll need to provide your credentials for the cloud and your cloud provider will charge you for those instances you use. Once you’ve added your credentials to the controller they are securely stored for you and you can deploy future models using them.

    Currently we have controllers in two regions for each of the three supported public clouds and will add more as use increases. We provide HA controllers in the U.S. and in Europe for each cloud.


    Maintaining a production environment is a team effort so JAAS allows you to easily share access and management of your models with your project members. When you grant access to others they can see your model in the browser via jujucharms.com or by using Juju on the command line.

    With recent changes to the GUI models are individually addressable via a shareable URL. For instance if I had a model named wordpress it could be shared and seen by going to jujucharms.com/u/bac/wordpress.

    You can also see models shared with you by visiting your profile page at jujucharms.com/u/[your_user_name]. Here is the profile page of my colleague Jeff showing that I’ve shared my wordpress model with him. He’s also got another model shared by Uros.


    Sharing can be done via the command line with the juju grant command.

    juju grant hatch@external read wordpress

    Or in the GUI using the share button, seen below at the far right.


    That button brings up a dialog that looks like


    The user names must include a domain. Currently we use external (e.g. hatch@external) but that will change soon. So, for now, just append @external on the end of your collaborator’s Ubuntu SSO name. Use everyone@external to make a model publicly available.


    If you have a model shared with you as read-only you clearly cannot make changes to it. But given the URL scheme used you can request changes from the model owner. Suppose Jeff is viewing my wordpress model and wants to add an HA Proxy service. While viewing my model he can search for HA Proxy and the resulting URL in the context of my wordpress model is https://jujucharms.com/u/bac/wordpress/haproxy/40. Jeff could then email me that URL and request I add it to the model. When I go directly to that URL I would merely click the Add to canvas button and it would be done.

    JAAS controller registration

    Models you create on jujucharms.com are already created using the JAAS controller. In order to use that controller from the command line, you need to first register it. This is done with the command:

    $ juju register jimm.jujucharms.com


    Adding a model

    From the command line you add a model using juju add-model. But when working with the JAAS controller you’ve got to provide information about the cloud and region to use since the controller knows about three public clouds with two regions each.

    The following command will add a k8s model to the Google cloud using region us-east1 using the previously saved bac-gce credentials.

    $ juju add-model k8s google/us-east1 --credential bac-gce


    We have worked hard to bring JAAS to this point and it is very functional. This program is currently in a beta state. If you do encounter a bug please let us know by filing it at https://github.com/CanonicalLtd/jujucharms.com/issues. You can also reach the team in real-time in the #juju channel on Freenode IRC.

    Additional resources

    JAAS was introduced on the March 1, 2017, edition of the biweekly Juju Show live podcast. The recording can be found on YouTube.

  • bradcrittenden 11:00 pm on August 30, 2016 Permalink | Reply  

    Jujucharms.com updated with new channel support 

    With today’s release of the charm store at http://jujucharms.com an important change was made to the channels used when publishing and deploying charms. Prior to this release, the charm store allowed two channels called development and stable. In order to make the experience of using Juju charms and Snappy snaps more consistent, we are adopting the channel names used by the snap store.  From this release forward there are now four charm channels: edge, beta, candidate, and stable.

    The first two, edge and beta, are to be used as development channels. A new charm would first be published to edge, for use by your development team. As it matures, the charm would be published to beta and made available to a wider audience of early adopters.

    The candidate channel is the last pre-release channel along the charm’s journey. It is intended for very mature charms that need one more round of testing and acceptance before being published to the final stable channel.

    When the new charm store was released this morning, charms with development channels were migrated to the edge channel.  To use the new channels with juju you will need to update to the Juju 2.0 beta 16 release as prior versions will no longer work with the charmstore.

    A new version of the charm command-line tool has been released as version 2.2.0. This new version supports the new channels for managing your charms in the charmstore.  It can be found in ppa:juju/stable as debs for trusty and xenial.  Marco Ceppi has also created a snap which you may prefer.  Install it with:

    snap install charm

    Should you experience issues with the new channels or anything related to the charm store, please open an issue at https://github.com/CanonicalLtd/jujucharms.com/issues or find us in #juju-gui on the Freenode IRC server.


  • bradcrittenden 9:56 am on April 15, 2016 Permalink | Reply  

    Juju 2.0 beta 4 — Now with embedded GUI 

    The newest version of Juju has been released, Juju 2.0 beta 4. One of the exciting new features is built-in support for the Juju GUI. Prior to this release one had to bootstrap Juju and then deploy the juju-gui charm or use a tool like juju-quickstart.

    With the new release it has all been greatly simplified.  Bootstrap an environment and you get a GUI running on the controller with no extra effort!

    Once you’ve bootstrapped a controller use this command to see the GUI:

    juju gui –show-credentials

    With that command the GUI will connect to your current model and open a browser to it.  You’ll need to login using the username and password printed in your terminal.

    If you have a controller that has been running for a while and want to get the latest GUI changes, all you need to do is:

    juju upgrade-gui

    That command will download the latest GUI version and replace the one currently running on your controller.

    If you want to see which versions are available run:

    juju upgrade-gui –list

    You can then upgrade or downgrade to one of the available versions by providing it to the upgrade-gui command, e.g.

    juju upgrade-gui 2.1.2

    You can even try a version of the GUI that has not yet been published in the streams by providing the path to a tarball on your local computer, e.g.

    juju upgrade-gui /path/to/release.tar.bz2

    In order to upgrade the GUI, you’ll have to have access rights to the controller. When an administrator upgrades the GUI, users will have to reload the open sessions in their browsers to see the changes.

    If for some reason you don’t want to install the GUI into the controller, simply bootstrap your controller with the –no-gui flag:

    juju bootstrap –no-gui

    We think having the GUI built into controllers automatically will be very beneficial for most users. We’ve worked hard to provide an efficient user experience and hope the interface adds a visual dimension as you model and deploy your services.

    If you find any issues or have any feedback for the Juju GUI, please let us know via our GitHub issue tracker.  You can also contact us in our IRC channel #juju-gui on freenode.

  • bradcrittenden 1:49 pm on March 3, 2016 Permalink | Reply  

    Update to jujucharms.com 

    Update details

    Yesterday the Juju UI Engineering team updated jujucharms.com with some improvements we hope you find interesting and useful.  The highlights are:

    Improved getting started page

    The Juju installation instructions have been re-written to be more straightforward and the page is more welcoming.

    Community cards

    In order to allow charm and bundle authors an engaging way to promote their work, we’ve introduced cards, a slug of Javascript and HTML that can be embedded into a web site which will then serve a visual representation of the charm or bundle. The details are fetched from our servers so the data will always be up-to-date.  Change your bundle and the representation of it on your blog will be updated for future visitors.

    Madison has written a blog post demonstrating their use.

    Note that this first implementation is Javascript-based and therefore will not work in every environment, specifically platforms that block the use of embedded Javascript.

    Improved topic pages (e.g. big data)

    A cleaner design utilizing the cards for each bundle presented.

    Charm labeling on bundle visualisations.

    Previously the rendered image for a bundle only showed the service icons which could be confusing as there was no way to intuit the role each service played. Now we are labeling each service with the custom name so you can easily identify master/slave relationships, for example.


    If you have questions or comments on these changes, you can find us in #juju-gui on Freenode or respond here.

    If you find a bug please file it at https://github.com/CanonicalLtd/jujucharms.com/issues

  • bradcrittenden 10:29 am on February 12, 2016 Permalink | Reply  

    Using Safari with the Juju GUI 

    The Juju GUI uses secure web sockets to communicate with the Juju controller. To secure that channel we use a self-signed certificate. Most browsers allow the user to easily accept the certificate and all is well.

    With Safari it is possible but a little more involved. The certificate must be accepted and placed into the Keychain. The steps to follow are below:

    1. Access the Juju GUI site.
    2. The site will start to load but then Safari will display the following alert: Screen Shot 2016-02-12 at 10.53.49.png
    3. If you simply press Continue you’ll proceed to the GUI but the web socket will not work. Press Show Certificate instead.
    4. A certificate dialog box will be shown. Open the Trust section.Screen Shot 2016-02-12 at 10.55.36.png
    5. Change the first drop down to Always Trust which will be cascaded down to the other drop downs.Screen Shot 2016-02-12 at 10.55.45.png
    6. Pressing Continue will lead to a dialog box asking for your OS X password. After entering it, the certificate will be permanently added to the Certificates section shown by the Keychain Access utility.  It’ll have a name like your-jujugui-1455269898.local which you can later delete if you wish.

    Note that the self-signed certificates are created for each instance of the Juju GUI. Unfortunately this means you’ll need to repeat this process for each instance of the GUI you wish to use.

    If at step 2 you press Continue, Safari will not be able to connect to the secure web socket and it will not present you with the certificate dialog again. To recover you must do the following:

    1. Open Preferences in Safari and go to the Privacy tab.
    2. Click the Details button and search for the site address.
    3. Select the entry and click Remove.
    4. Quit and restart Safari.
    5. Revisit the Juju GUI site.


    Massimiliano Marcon’s post at his blog.

  • bradcrittenden 7:02 pm on December 23, 2015 Permalink | Reply
    Tags: ,   

    Juju GUI 2.0 Beta released 

    We are really happy to announce availability of the new and shiny beta version of Juju GUI 2.0 with completely redesigned and rewritten user interface and improved user experience. The new GUI introduces:

    • redesigned canvas, relation management and charm handling with the new inspector,
    • improved integration with the charm store, unifying the web experience at jujucharms.com,
    • new machine view with drag’n’drop functionality – allocating units has never been easier,
    • creation and switching between models within a controller, and
    • new bundle deploys.

    Not much has stayed the same, so it’s best if you give the new GUI a try yourself.

    We’re aware of the small details that need polish before we close the beta, but we’d like to make the 2.0 release rock solid and therefore would appreciate as much feedback from you as possible. Should you discover a bug, use the GitHub issue tracker to file a report. Please provide as much information as possible, e.g. the cloud provider, the output of ‘juju version’, steps made, errors from the browser console, etc.

    Machine view Model Empty canvas Store

    The major changes for this release are:

    GUI with controllers and models

    If you would like to test the GUI against a Juju controller, the JES feature flag needs to be enabled before bootstrapping. This will enable you to create, list and manage models directly from the GUI.

    juju bootstrap

    Deploying the Juju GUI 2.0 beta

    Juju 1.25 or older

    The charm is available via the charmstore URL cs:~yellow/trusty/juju-gui and at https://jujucharms.com/u/yellow/juju-gui on the web. Just do the usual:

    juju deploy cs:~yellow/juju-gui

    Juju master (1.26 alphas)

    Recent Juju builds support a new publishing mechanism and can properly parse URLs with the development channel. If you’re using recent Juju builds, bootstrap a controller on a cloud of your choice and use the development version of the promulgated Juju GUI charm located at cs:development/juju-gui or https://jujucharms.com/development/juju-gui on the web. You can deploy the development version of the charm with:

    juju deploy cs:development/juju-gui

    You should see a response similar to:

    Added charm “cs:development/trusty/juju-gui-42” to the environment.
    Deploying charm “cs:development/trusty/juju-gui-42” with the charm series “trusty”.


    We hope you find the new GUI easier to use and find the layout to be more intuitive. Enjoy using it and let us know what you think!

  • bradcrittenden 3:28 pm on July 22, 2013 Permalink | Reply
    Tags: , ,   

    Charm store moves, Juju GUI updated 

    Today the charm store moved to a new URL but the GUI had not been updated to reflect it. You may have seen a JSON parse URL when trying to deploy charms.

    This inconsistency has been resolved and the GUI (bzr revision 69) is now correct.

    Sorry for the inconvenience.

  • bradcrittenden 2:28 pm on June 17, 2013 Permalink | Reply  

    Juju-core hangout notes 

    I sat in on my first juju-core hangout. Not much of interest was said. Procedurally,

    • Ensure you have acccess to their kanban board beforehand. If you don’t have permission ask MRamm.
    • Be prepared to give a quick juju-gui status update to them.
  • bradcrittenden 2:32 pm on June 4, 2013 Permalink | Reply
    Tags: bazaar, ,   

    Bazaar lightweight checkouts and charm development 

    Due to the irregular naming used for charms on Launchpad it took me a while to get lightweight checkouts to work in a manner consistent with my lp:juju-core and lp:juju-gui setup.  (Following the guidance from Tim at bazaar-usage.txt.)  For one, my repo couldn’t be named juju-gui since it was already taken, so I used juju-gui-charm.  After making the changes I thought should work I found that lbox failed with:

    error: Failed to load focus series for "charms": resource not found

    After help from Aaron I discovered the piece I was missing to make lbox work was setting parent_location in my locations.conf file.  So the two stanzas I now have are:

    public_branch = bzr+ssh://bazaar.launchpad.net/~bac
    public_branch:policy = appendpath
    push_location = lp:~bac
    push_location:policy = appendpath
    public_branch = bzr+ssh://bazaar.launchpad.net/~bac/charms/precise/juju-gui
    public_branch:policy = appendpath
    push_location = lp:~bac/charms/precise/juju-gui
    push_location:policy = appendpath
    parent_location = lp:~juju-gui/charms/precise/juju-gui/trunk

    Hope this helps someone.

    • bradcrittenden 3:07 pm on June 4, 2013 Permalink | Reply

      Just fixed the parent_location to point to our intermediate branch, not the official charm branch.

  • bradcrittenden 3:05 pm on May 14, 2013 Permalink | Reply
    Tags: ,   

    bzr tip 

    Using lightweight branches (really helpful for working on Juju) I often would do the following:

    bzr switch -b my-new-branch
    bzr switch trunk
    bzr pull
    bzr switch my-new-branch
    bzr merge

    Aaron pointed out I can avoid switching to trunk to just do the pull by creating an alias like:

    bzr alias pulltrunk="pull -d :parent"

    (Though he suggested “-d :submit” my branches don’t have the submit branch as trunk so i changed as above.  YMMV.)

    So now I can just do:

    bzr pulltrunk
    bzr merge
Compose new post
Next post/Next comment
Previous post/Previous comment
Show/Hide comments
Go to top
Go to login
Show/Hide help
shift + esc