This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article contains content that is written like an advertisement. Please help improve it by removing promotional content and inappropriate external links, and by adding encyclopedic content written from a neutral point of view. (March 2014) (Learn how and when to remove this template message) This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: "Juju" software – news · newspapers · books · scholar · JSTOR (September 2014) (Learn how and when to remove this template message) (Learn how and when to remove this template message)
Juju
Original author(s)Canonical
Initial releaseMay 5, 2011; 12 years ago (2011-05-05)
Stable release
3.3.0[1] / 10 November 2023; 2 months ago (10 November 2023)
Repository
Written inGo
Operating systemUbuntu, macOS, CentOS
TypeOrchestration
LicenseGNU Affero General Public License
Websitejuju.is Edit this on Wikidata

Juju is a free and open source application modeling tool developed by Canonical Ltd. 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 clouds.

A Juju controller is a 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 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 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 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 and mysql. 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.[2] 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[3] and Microsoft Windows.[4] Support for both CentOS and Windows has been contributed by Cloudbase Solutions.

References

  1. ^ "Release 3.3.0". 10 November 2023. Retrieved 18 November 2023.
  2. ^ Castro, Jorge O. (April 3, 2012). "Why the juju charm store will change the way you use Ubuntu Server". Jorge's Stompbox. Archived from the original on 2012-04-05. Retrieved September 1, 2012.
  3. ^ "CentOS userdata by aznashwan · Pull Request #2066 · juju/juju". GitHub. Retrieved 2021-05-27.
  4. ^ "Add windows userdata by gabriel-samfira · Pull Request #189 · juju/juju". GitHub. Retrieved 2021-05-27.