- 25th October 2016
- Posted by: Stephen Downie
- Category: DevOps, Scaling, Systems
Juju is ever expanding in the systems automation market, partly due to its relative simplicity for the new user, partly due to the scalability it offers with little effort and a lot because of the dedicated team of developers and community members writing cool new charms for the platform ever increasing its reach and capabilities.
If you run IT infrastructure of any kind, Juju can help you get from automation novice to automation experts in next to no time. Believe it or not, but it powers a huge number of Openstack deployments out there in production, but that doesn’t mean you need to deploy Openstack to make the most of Juju. You can model simple deployments just as well within the platform. Take for example, a simple PHP based webapp and MySQL…. Mediawiki in this example. You can deploy Mediawiki and MySQL to a cloud provider in 2 commands.
juju bootstrap ec2 aws/eu-west-1 juju deploy wiki-simple
In that command I’ve told Juju to bootstrap and then told it to install MySQL and Mediawiki. Now what is cool about that is that Mediawiki and MySQL know about each other thanks to a relation which carries metadata from the different components to the others. This allows me to run extra code which configures the various bits and pieces, so as a systems administrator I don’t need to go poking around in MySQL to find the root password or create a mediawiki database, all that is done for me.
So of course this can be taken much further with plenty of ‘Enterprise Software’ that is already in the charm store. For example many companies already make use of Elastic Search for log storage and analytics or ingestion of data they would like to allow end users to search. I can deploy elastic search easily with
juju deploy elasticsearch but I can also deploy and Elastic Search and Kibana UI platform in one line with
juju deploy elasticsearch-cluster and when that has deployed I will have a running search platform that I can scale easily with
juju add-unit -n 1 elasticsearch even though I don’t know how Elastic Search is configured or installed in this context. This gives me really simple but amazingly powerful operations with a few clicks of a mouse or a few commands on the command line.
Of course to use Juju I don’t need to use a pre configured bundle. I install MySQL all the time, but I’m lousy at remembering the commands to scale it, or configure it. Luckily Juju allows me to relate different nodes to create a really simple way to deploy a replicated MySQL service for my users.
Because of what Juju offers it allows us to build and extend various charms to increase the functionality, or deploy our own charms with our own software. And that allows us to scale all of our systems en masse. Next time you deploy your software, think twice about
apt install foo or
tar xvfz ~/builds/myproject.tgz because I suspect there is a much more effective way of achieving that repeatability that allows for vast improvements to your systems rollouts within your business.
So we wanted to discuss improving your systems automation exponentially, this is because you can start small and grow as your systems need enhancing or replacing. We’ll take the various services we run for ourselves and our clients at Spicule. We have:
- Apache HTTPD
- Apache Tomcat
- Elastic Search
- Pentaho Data Integration
- Saiku Analytics
- Confluence Wikiresiliency
We’re a small company and running, maintaining and optimising these services can put a severe drain on resource especially if you’re dealing with failure and the knock on effects a server failure might have. Juju allows us to deploy portions of our software quickly and with minimal fuss. So far we have deployed HTTPD, MySQL, Tomcat, Elastic Search, Pentaho Data Integration, Saiku Analytics and Gitlab all via Juju. This has dramatically shrunk the deployment times of those pieces of software and as a knock on effect allowed us to concentrate on the resiliency and support services rather than the deployments themselves. Not all of those charms existed when we wanted to deploy the software and as such we have contributed Pentaho Data Integration, Saiku Analytics and Gitlab to the charm store with more in the works. This great sharing of code allows other people to leverage the work we have already done just as we have leveraged code from other people.
This isn’t the end though, Canonical recently announced their Kubernetes distribution for Juju and so we are transitioning our docker deployments to Kubernetes to allow for greater resilience and scaling services for our containers. This is where Juju really shines, I don’t need to convert our entire platform to Juju, I can choose the right time for our various services.
Spicule is a Canonical partner focusing on end to end solutions in the devops ecosystem. We can provide support and development services for Juju, Ubuntu, Kubernetes and more. We can also convert your software into Juju Charms for deployment into your data center. If you would like further information or a demonstration of how Juju can speed up your time to market, please get in touch.