Juju (software)

Last updated
Juju
Original author(s) Canonical
Initial releaseMay 5, 2011;13 years ago (2011-05-05)
Stable release
3.5.1 [1] / 30 May 2024;50 days ago (30 May 2024)
Repository
Written in Go
Operating system Ubuntu , macOS , CentOS
Type Orchestration
License GNU Affero General Public License
Website juju.is   OOjs UI icon edit-ltr-progressive.svg

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.

Contents

Juju modeling complex software topologies

Juju aims to provide a modeling language that abstracts the specifics of operating complex software topologies 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. Using charm helpers, boiler-plate code is automatically generated, thereby speeding up charm creation.

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. Users can also search the Charm Store and browse results with detailed charm information. 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 to 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:mediawikinum_units:1options:debug:falsename:Please set name of wikiskin:vectormysql:charm:mysqlnum_units:1options:binlog-format:MIXEDdataset-size:80%tuning-level:safestseries:trustyrelations:--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 the 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.

Related Research Articles

<span class="mw-page-title-main">MySQL</span> SQL database engine software

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 organizes data into one or more data tables in which data may be related to each other; these relations help structure the data. SQL is a language that programmers use to create, modify and extract data from the relational database, as well as control user access to the database. In addition to relational databases and SQL, an RDBMS like MySQL works with an operating system to implement a relational database in a computer's storage system, manages users, allows for network access and facilitates testing database integrity and creation of backups.

Installation of a computer program, is the act of making the program ready for execution. Installation refers to the particular configuration of software or hardware with a view to making it usable with the computer. A soft or digital copy of the piece of software (program) is needed to install it. There are different processes of installing a piece of software (program). Because the process varies for each program and each computer, programs often come with an installer, a specialised program responsible for doing whatever is needed for the installation. Installation may be part of a larger software deployment process.

<span class="mw-page-title-main">Postfix (software)</span> Mail transfer agent

Postfix is a free and open-source mail transfer agent (MTA) that routes and delivers electronic mail.

Software deployment is all of the activities that make a software system available for use.

WebSphere Application Server (WAS) is a software product that performs the role of a web application server. More specifically, it is a software framework and middleware that hosts Java-based web applications. It is the flagship product within IBM's WebSphere software suite. It was initially created by Donald F. Ferguson, who later became CTO of Software for Dell. The first version was launched in 1998. This project was an offshoot from IBM HTTP Server team starting with the Domino Go web server.

A dedicated hosting service, dedicated server, or managed hosting service is a type of Internet hosting in which the client leases an entire server not shared with anyone else. This is more flexible than shared hosting, as organizations have full control over the server(s), including choice of operating system, hardware, etc.

<span class="mw-page-title-main">LAMP (software bundle)</span> Acronym for a common web hosting solution

A LAMP is one of the most common software stacks for the web's most popular applications. Its generic software stack model has largely interchangeable components.

<span class="mw-page-title-main">Portable application</span> Type of computer program

A portable application, sometimes also called standalone software, is a computer program designed to operate without changing other files or requiring other software to be installed. In this way, it can be easily added to, run, and removed from any compatible computer without setup or side-effects.


This is a comparison of notable free and open-source configuration management software, suitable for tasks like server configuration, orchestration and infrastructure as code typically performed by a system administrator.

mysqlBind/unxsBind is a DNS management software system. It supports Internet Systems Consortium BIND Domain Name System (DNS) and is distributed as open source software under the GNU General Public License.

<span class="mw-page-title-main">SharePoint</span> Web application platform

SharePoint is a collection of enterprise content management and knowledge management tools developed by Microsoft. Launched in 2001, it was initially bundled with Windows Server as Windows SharePoint Server, then renamed to Microsoft Office SharePoint Server, and then finally renamed to SharePoint. It is provided as part of Microsoft 365, but can also be configured to run as On-premises software.

4690 Operating System is a specially designed point of sale (POS) operating system, originally sold by IBM. In 2012, IBM sold its retail business, including this product, to Toshiba, which assumed support. 4690 is widely used by IBM and Toshiba retail customers to run retail systems which run their own applications and others.

Platform as a service (PaaS) or application platform as a service (aPaaS) or platform-based service is a category of cloud computing services that allows customers to provision, instantiate, run, and manage a modular bundle comprising a computing platform and one or more applications, without the complexity of building and maintaining the infrastructure typically associated with developing and launching the application(s), and to allow developers to create, develop, and package such software bundles.

<span class="mw-page-title-main">Cloud computing</span> Form of shared internet-based computing

Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. Large clouds often have functions distributed over multiple locations, each of which is a data center. Cloud computing relies on sharing of resources to achieve coherence and typically uses a pay-as-you-go model, which can help in reducing capital expenses but may also lead to unexpected operating expenses for users.

The Linux Schools Project is an operating system designed for schools. It is a Linux distribution based on Ubuntu. The project maintains two custom distributions, with one designed for use on servers and the other for use with the server version on client machines. The server distribution is the official Karoshi, while the client is known as Karoshi Client.

Progress Chef is a configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language (DSL) for writing system configuration "recipes". Chef is used to streamline the task of configuring and maintaining a company's servers, and can integrate with cloud-based platforms such as Amazon EC2, Google Cloud Platform, Oracle Cloud, OpenStack, IBM Cloud, Microsoft Azure, and Rackspace to automatically provision and configure new machines. Chef contains solutions for both small and large scale systems.

Ansible is a suite of software tools that enables infrastructure as code. It is open-source and the suite includes software provisioning, configuration management, and application deployment functionality.

A software-defined perimeter (SDP), also called a "black cloud", is an approach to computer security. Software-defined perimeter (SDP) framework was developed by the Cloud Security Alliance (CSA) to control access to resources based on identity. Connectivity in a Software Defined Perimeter is based on a need-to-know model, in which device posture and identity are verified before access to application infrastructure is granted. Application infrastructure is effectively “black”, without visible DNS information or IP addresses. The inventors of these systems claim that a Software Defined Perimeter mitigates the most common network-based attacks, including: server scanning, denial of service, SQL injection, operating system and application vulnerability exploits, man-in-the-middle, pass-the-hash, pass-the-ticket, and other attacks by unauthorized users.

Kubernetes is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google, the project is now maintained by a worldwide community of contributors, and the trademark is held by the Cloud Native Computing Foundation.

<span class="mw-page-title-main">BOSH (software)</span>

BOSH is an open-source software project that offers a toolchain for release engineering, software deployment and application lifecycle management of large-scale distributed services. The toolchain is made up of a server and a command line tool. BOSH is typically used to package, deploy and manage cloud software. While BOSH was initially developed by VMware in 2010 to deploy Cloud Foundry PaaS, it can be used to deploy other software. BOSH is designed to manage the whole lifecycle of large distributed systems.

References

  1. "Release 3.5.1". 30 May 2024. Retrieved 22 June 2024.
  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.