Juju is a
free and open source
Free and open-source software (FOSS) is a term used to refer to groups of software consisting of both free software and open-source software where anyone is freely licensed to use, copy, study, and change the software in any way, and the source ...
application modeling tool developed by
Canonical Ltd
Canonical Ltd. is a UK-based privately held computer software company founded and funded by South African entrepreneur Mark Shuttleworth to market commercial support and related services for Ubuntu and related projects. Canonical employs staff ...
. Juju is an application management system. It was built to reduce the operation overhead of software by facilitating, deploying, configuring, scaling, integrating, and performing operational tasks on public and private cloud services along with
bare-metal servers and local container-based deployments.
Juju modeling complex software topologies
Juju aims to provide a modeling language that abstracts the specifics of operating complex software topologies in order to reduce the cost of operations and provide flexibility. A Juju ''model'' is an environment to manage and operate a set of software applications. Models can be operated on a variety of
public cloud
Cloud computing is the on-demand availability of computer system resources, especially data storage (cloud storage) and computing power, without direct active management by the user. Large clouds often have functions distributed over multi ...
s.
A Juju ''controller'' is the service that tracks the events, state, and user activity across multiple models. A controller and models are analogous to a database server and databases available on the server. Each model can have different configurations, sets of operating software, and users with various levels of access. Examples of models include a web application, load balancer, and database in a "web-app" model. Models allow deployments to be isolated into logical solutions and managed separately.
Juju charms
The central mechanism behind Juju is called ''charms''. Charms can be written in any programming language that can be executed from the command line. A charm is a collection of
YAML
YAML ( and ) (''see '') is a human-readable data-serialization language. It is commonly used for configuration files and in applications where data is being stored or transmitted. YAML targets many of the same communications applications as Ext ...
configuration files and a selection of ''hooks''. A hook is an executable file that can be used to install software, start or stop a service, manage relationships with other charms, upgrade charms, scale charms, configure charms, etc. Charms can have many properties. Charm helpers allow boiler-plate code to be automatically generated, thus accelerating the creation of charms.
Juju client and environments
Juju has two components: a client and a bootstrap node. After installing the client, one or more environments can be bootstrapped. Juju environments can be bootstrapped on various clouds. By creating a Juju Provider, additional cloud environments can be supported.
Juju can also be bootstrapped on bare-metal servers. Large deployments can use Canonical's Metal as a Service. Small deployments can use the manual provider, which allows any SSH
Ubuntu
Ubuntu ( ) is a Linux distribution based on Debian and composed mostly of free and open-source software. Ubuntu is officially released in three editions: '' Desktop'', ''Server'', and ''Core'' for Internet of things devices and robots. All ...
machine to be converted into a Juju-managed machine. Juju can also be installed on a local Ubuntu machine via
LXC operating system–level virtualization
OS-level virtualization is an operating system (OS) paradigm in which the kernel allows the existence of multiple isolated user space instances, called ''containers'' (LXC, Solaris containers, Docker, Podman), ''zones'' (Solaris containers), '' ...
and the local provider.
Command line and GUI
Juju has both a command line and a GUI. Automatically available on every controller, the Juju GUI allows users to visually see what software is currently running in which models. It also lets users search the Charm Store and browse results with detailed charm information presented. Complex software stacks can be deployed via drag-and-drop.
Bundles
Juju also has a concept of ''bundles''. A bundle is a portable specification for a model with charms, configuration, and relations, all specified in a declarative YAML format. A bundle YAML file can later be imported into another Juju model and shared with others. Bundles can also be uploaded to the Charm Store, allowing others deploy them.
In this example bundle, two applications are modeled:
mediawiki
MediaWiki is a free and open-source wiki software. It is used on Wikipedia and almost all other Wikimedia websites, including Wiktionary, Wikimedia Commons and Wikidata; these sites define a large part of the requirement set for MediaWi ...
and
mysql
MySQL () is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database ...
. Users can modify attributes declared in the bundle to customize their deployment:
services:
mediawiki:
charm: mediawiki
num_units: 1
options:
debug: false
name: Please set name of wiki
skin: vector
mysql:
charm: mysql
num_units: 1
options:
binlog-format: MIXED
dataset-size: 80%
tuning-level: safest
series: trusty
relations:
- - mediawiki:db
- mysql:db
Charm Store
The Juju Charm Store launched on April 3, 2012. The Charm Store regularly tests charms to notify charm authors when code breaks in addition to ensuring that Juju users have access to the latest versions of charms.
Supported platforms
Juju is available on Ubuntu server, with agents available for Ubuntu,
CentOS and
Microsoft Windows.
Support for both CentOS and Windows has been contributed b
Cloudbase Solutions
References
External links
*
*
{{Ubuntu
Canonical (company)
Free software programmed in Go
Python (programming language) software
Software using the GNU AGPL license