Home > Communication Service Provider Solutions > Telecom Multicloud Foundation > Canonical > Guides > Reference Architecture—Canonical Charmed OpenStack (Ussuri) on Dell EMC Hardware > Juju components
For an overview of Juju, see the product website. This section discusses the functionality of different components of Juju.
The Juju controller manages all the machines in the running models and responds to the events that are triggered throughout the system. It also manages scale-out, configuration, and placement of all your models and applications.
The Juju controller must be in the same physical segment of the network as an OpenStack cluster and be able to run calls to MAAS API and connect to OpenStack Cluster nodes.
In the scope of current Reference Architecture, a highly available Juju controller is deployed on top of KVM Virtual machines mentioned in the previous steps.
Juju implements a concept of a “cloud” that is supplying machines (physical or virtual) on demand for further software deployment and configuration. The “cloud” may be any public cloud provider, VMWare endpoint, or MAAS.
See the official documentation about how to register MAAS as the cloud in Juju and bootstrap the controller.
Charms are a collection of scripts that contain all the operations necessary to deploy, configure, scale, and operate cloud applications. Charms encapsulates a single application and all the code and know-how that it takes to operate it, such as how to combine and work with other related applications, or how to upgrade it.
Charms also allow a hierarchy, with subordinate charms to complement the main service.
Charms source code and installables are stored in Canonical’s Open Operator Collection Store.
Charms perform the following functions:
Bundles are ready-to-run collections of applications that are modeled to work together and can include particular configurations and relations between the software to be deployed.
Bundles may also be optimized for different deployment scenarios of the same software. For example, a scale-out, production-ready versions like the OpenStack Base or an extended version of OpenStack Telemetry.
Juju supports UI representation of the deployed bundle and allows you to dynamically manipulate with cluster’s configuration options and layout before the bundle deployment and during the lifetime.
The following diagram represents “OpenStack Base” bundle that allows to deploy a basic OpenStack Cloud with Ceph storage backend. It includes numerous OpenStack services, Ceph components, supporting services and relations between them.
Juju provides a higher level of abstraction and supplies the tools needed to manage the full scope of operations beyond deployment and configuration management, regardless of the machine on which it runs.
One of the main advantages of Juju is the dynamic configuration ability, which enables to:
The diagram below represents the steps needed for initiating Juju controller and deploying the applications: