Juju allows you to retain a high-level understanding of all the parts of your system without being bogged down needing to know every hostname, every machine, every subnet and every specification of every storage volume.
Focus on your applications and their relations. Create a development environment on your laptop, then recreate that environment on the public cloud, onto bare metal servers or into a Kubernetes cluster.
Maximise your productivity by encapsulating specialist knowledge into Juju charms. They create repeatable, systematic and secure devops practices for all stages of your product’s lifecycle. Juju simplifies deployment, maintenance, scaling up and winding down.
Getting started
- Getting started
- Install Juju
- Learn the concepts behind Juju
Finding help and seeking support
Contribute
Community Links
- Join a charm sub-community
- Engage a Juju expert to deliver a managed solution
- Read our blog posts
Navigation
Introduction
Creating a Controller
Supported Clouds
- Virtual Machines
- Containers
- Bare metal
- Any SSH-accessible computer
Deployment
- Deploying applications
- Defining constraints
- Tailoring the deployment
- Relating applications
- Cleaning up
Operations
- Accessing individual machines with SSH
- Running actions
- Collecting metrics
- Accessing Juju’s web interface
- Defining and using persistent storage
System Administration
- Upgrading to a new release
- Backing up the controller
- Running a high-availability controller
- Working with multiple users
- Working offline
- Migrating models
- Generate your own cloud image metadata
Writing Charms
Juju Concepts
- Concepts I
- Concepts II
Reference
- Glossary
- For operators
- For charm writers and developers
Troubleshooting
Seeking help
URLs
Mapping table
Topic | Path |
---|---|
Commands | /docs/commands |
Juju environment variables | /docs/environment-variables |
Getting started with Juju | /docs/wip-getting-started |
Glossary | /docs/glossary |
A multi-user cloud | /docs/multi-user-cloud |
Actions for the charm author | /docs/charm-writing/actions |
Adding a model | /docs/adding-a-model |
Additional LXD resources | /docs/lxd-resources |
[Appendix] Installing a GKE cluster | /docs/appendix-gke |
Application configuration | /docs/charm-writing/application-config |
Application groups | /docs/application-groups |
Application high availability | /docs/ha-applications |
Application metrics | /docs/metrics-applications |
Applications and charms | /docs/applications-and-charms |
Basic client usage - tutorial | /docs/client-usage-tutorial |
Benchmarking Juju applications | /docs/charm-writing/benchmarks |
Best practice for charm authors | /docs/charm-writing/best-practice |
Bundle reference | /docs/bundle-reference |
Charm bundles | /docs/charm-bundles |
Charm hooks | /docs/charm-hooks |
Charm Layer.yaml Reference | /docs/charm-layer-yaml-reference |
Charm metadata | /docs/charm-metadata |
Charm Network Primitives | /docs/charm-network-primitives |
Charm promulgation | /docs/charm-writing/promulgation |
Charm review process | /docs/charm-review-process |
Charm store policy | /docs/charm-store-policy |
Charm tools | /docs/charm-tools |
Charm unit status and their meanings | /docs/charm-unit-status-and-their-meanings |
Charm writing | /docs/charm-writing |
Charms and MySQL interfaces | /docs/charms-and-mysql-interfaces |
Client | /docs/client |
Cloud image metadata | /docs/cloud-image-metadata |
Clouds | /docs/clouds |
CMR scenario #1 | /docs/cmr-scenario-1 |
CMR scenario #2 | /docs/cmr-scenario-2 |
Collecting Juju metrics | /docs/collecting-juju-metrics |
Command changes from 1.25 to 2.0 | /docs/command-changes-from-1-25-to-2-0 |
Components of a charm | /docs/components-of-a-charm |
Concepts and terms | /docs/concepts-and-terms |
Configuring applications | /docs/configuring-applications |
Configuring controllers | /docs/configuring-controllers |
Configuring Juju for offline usage | /docs/configuring-offline-usage |
Configuring models | /docs/configuring-models |
Contact us | /docs/contact-us |
Controller backups | /docs/controller-backups |
Controller high availability | /docs/controller-high-availability |
Controller logins | /docs/controller-logins |
Controllers | /docs/controllers |
Create a Google Compute Engine controller | /docs/create-a-google-compute-engine-controller |
Creating a controller | /docs/creating-a-controller |
[Appendix] Creating an AWS VPC | /docs/appendix-creating-an-aws-vpc |
Creating config.yaml and configuring charms | /docs/creating-config-yaml-and-configuring-charms |
Creating icons for charms | /docs/creating-icons-for-charms |
Creating SSH Keypairs on Windows | /docs/creating-ssh-keypairs-on-windows |
Credentials | /docs/credentials |
Cross model relations | /docs/cross-model-relations |
Dealing with errors encountered by charm hooks | /docs/charm-writing/hook-errors |
Debugging building layers | /docs/debugging-building-layers |
Debugging charm hooks | /docs/charm-writing/hook-debug |
Deploying applications - advanced | /docs/deploying-advanced-applications |
Deploying applications | /docs/deploying-applications |
Deploying charms offline | /docs/deploying-charms-offline |
DHX: A Customized Hook Debugging Environment Plugin | /docs/charm-writing/hook-debug-dhx |
Disabling commands | /docs/disabling-commands |
Event Cycle | /docs/event-cycle |
Fan container networking | /docs/fan-container-networking |
Getting Started with charm development | /docs/getting-started-with-charm-development |
Getting started with Juju on JAAS | /docs/getting-started-with-juju-on-jaas |
Getting started with Juju | /docs/getting-started-with-juju |
Hook tools | /docs/charm-writing/hook-tools |
How to become a Juju charm author | /docs/charm-writing/howto-author |
Implementing leadership | /docs/implementing-leadership |
Implementing relations | /docs/charm-writing/relations |
[Appendix] Installing Ceph | /docs/appendix-installing-ceph |
Installing Juju | /docs/installing |
Installing snaps offline | /docs/installing-snaps-offline |
Instance naming and tagging in clouds | /docs/instance-naming-and-tagging-in-clouds |
Interface layers | /docs/interface-layers |
Introducing Juju 2.0 | /docs/introducing-juju-2-0 |
Introduction to Juju charms | /docs/introduction-to-juju-charms |
Juju constraints | /docs/constraints-reference |
Juju environment variables | /docs/juju-environment-variables |
Juju GUI | /docs/gui |
Juju logs | /docs/logs |
Juju plugins | /docs/juju-plugins |
Juju Resources | /docs/juju-resources |
Juju support for CentOS7 | /docs/centos |
Language details - Contributing to Juju docs | /docs/language-details-contributing-to-juju-docs |
Layers for charm authoring | /docs/layers-for-charm-authoring |
Leadership howtos | /docs/leadership-howtos |
Machine authentication | /docs/machine-auth |
Managed solutions | /docs/managed-solutions |
Managing relations | /docs/relations |
Metric collecting charms | /docs/metric-collecting-charms |
Migrating models | /docs/migrating-models |
Models | /docs/models |
Multi-user basic setup - tutorial | /docs/multi-user-basic-tutorial |
Multi-user external setup - tutorial | /docs/multi-user-external-tutorial |
Network spaces | /docs/spaces |
Notes on upgrading Juju software | /docs/notes-on-upgrading-juju-software |
Offline mode strategies | /docs/offline-mode-strategies |
Persistent storage and Kubernetes | /docs/persistent-storage-and-kubernetes |
Reference documents | /docs/reference |
Release Notes Index | /docs/release-notes |
Removing things | /docs/removing-things |
Running multiple versions of Juju | /docs/running-multiple-versions-of-juju |
Sample command usage and output interpretation | /docs/sample-command-usage-and-output-interpretation |
Scaling applications | /docs/scaling-applications |
Setting up static Kubernetes storage - tutorial | /docs/k8s-static-pv-tutorial |
Subordinate applications | /docs/charm-writing/subordinates |
The hook environment, hook tools and how hooks are run | /docs/charm-writing/hook-env |
The Juju charm store | /docs/charm-writing/store |
The lifecycle of charm relations | /docs/charm-writing/relations-lifecycle |
Tools | /docs/tools |
Troubleshooting additions | /docs/help-additions |
Troubleshooting clouds | /docs/help-clouds |
Troubleshooting model upgrades | /docs/help-model-upgrades |
Troubleshooting removals | /docs/help-removals |
Troubleshooting | /docs/help |
[Tutorial] Installing Kubernetes with CDK and using auto-configured storage | /docs/k8s-cdk-autostorage-tutorial |
[Tutorial] Multi-cloud controller with GKE and auto-configured storage | /docs/k8s-multicloud-gke-autostorage-tutorial |
Tutorials | /docs/tutorials |
Understanding Kubernetes charms - tutorial | /docs/k8s-charms-tutorial |
Unmaintained charms | /docs/unmaintained-charms |
Upgrading a charm | /docs/charm-writing/upgrading |
Upgrading a machine series | /docs/upgrading-series |
Upgrading applications | /docs/upgrading-applications |
Upgrading models | /docs/upgrading-models |
Upgrading | /docs/upgrading |
User types and abilities | /docs/user-types-and-abilities |
Using Amazon AWS with Juju | /docs/aws-cloud |
Using bundles with the GUI | /docs/using-bundles-with-the-gui |
Using constraints | /docs/constraints |
Deploy your Docker container to any cloud with charms | /docs/using-docker-in-charms |
Using Google GCE with Juju | /docs/gce-cloud |
Using Joyent with Juju | /docs/joyent-cloud |
Using Juju storage | /docs/storage |
Using Juju with MicroK8s - tutorial | /docs/microk8s-cloud |
Using Kubernetes with Juju | /docs/k8s-cloud |
Using LXD with Juju - advanced | /docs/lxd-cloud-advanced |
Using LXD with Juju | /docs/lxd-cloud |
Using MAAS with Juju | /docs/maas-cloud |
Using Microsoft Azure with Juju - advanced | /docs/advanced-azure-cloud |
Using Microsoft Azure with Juju | /docs/azure-cloud |
Using OpenStack with Juju | /docs/openstack-cloud |
Using Oracle OCI with Juju | /docs/oci-cloud |
Using Rackspace with Juju | /docs/rackspace-cloud |
Using resources | Developer guide | /docs/using-resources-developer-guide |
Using the aws-integrator charm - tutorial | /docs/k8s-aws-integrator-tutorial |
Using the localhost cloud offline | /docs/using-the-localhost-cloud-offline |
Using the Manual cloud with Juju | /docs/manual-cloud |
Using VMware vSphere with Juju | /docs/vsphere-cloud |
What is Juju? | /docs/what-is-juju |
What's new in 2.6 | /docs/whats-new-2-6 |
Working offline | /docs/working-offline |
Working with actions | /docs/working-with-actions |
Working with multiple users | /docs/working-with-multiple-users |
Writing a layer by example | /docs/writing-a-layer-by-example |
Writing charm tests | /docs/writing-charm-tests |
Writing charms that use storage | /docs/writing-charms-that-use-storage |
Writing charms that use terms | /docs/writing-charms-that-use-terms |
Writing your first Juju charm | /docs/writing-your-first-juju-charm |
Redirects
Mapping table
Path | Location |
---|---|
/getting-started | /docs/getting-started-with-juju |
/docs/getting-started | /docs/getting-started-with-juju |
/docs/getting-started-with-jaas | /docs/getting-started-with-juju-on-jaas |
/docs/clouds-lxd-resources | /docs/lxd-resources |
/docs/applications/groups | /docs/application-groups |
/docs/applications/ha | /docs/ha-applications |
/docs/applications/metrics | /docs/application-metrics |
/docs/tutorials/client-basic | /docs/client-usage-tutorial |
/docs/applications/configuring | /docs/configuring-applications |
/docs/applications/deploying-advanced | /docs/deploying-advanced-applications |
/docs/applications/deploying | /docs/deploying-applications |
/docs/reference/constraints | /docs/constraints-reference |
/docs/tutorials/multi-user-basic | /docs/multi-user-basic-tutorial |
/docs/tutorials/multi-user-external | /docs/multi-user-external-tutorial |
/docs/applications/scaling | /docs/scaling-applications |
/docs/tutorials/k8s-static-pv | /docs/k8s-static-pv-tutorial |
/docs/tutorials/k8s-charms | /docs/k8s-charms-tutorial |
/docs/applications/upgrading | /docs/upgrading-applications |
/docs/aws | /docs/aws-cloud |
/docs/gce | /docs/gce-cloud |
/docs/gcp | /docs/gce-cloud |
/docs/azure | /docs/azure-cloud |
/docs/microk8s | /docs/microk8s-cloud |
/docs/oracle | /docs/oracle-cloud |
/docs/openstack | /docs/openstack-cloud |
/docs/rackspace | /docs/rackspace-cloud |
/docs/clouds-aws | /docs/aws-cloud |
/docs/clouds-gce | /docs/gce-cloud |
/docs/clouds-joyent | /docs/joyent-cloud |
/docs/tutorials/k8s-microk8s | /docs/microk8s-cloud |
/docs/clouds-k8s | /docs/k8s-cloud |
/docs/clouds-lxd-advanced | /docs/lxd-cloud-advanced |
/docs/clouds-lxd | /docs/lxd-cloud |
/docs/clouds-maas | /docs/maas-cloud |
/docs/clouds-azure-advanced | /docs/advanced-azure-cloud |
/docs/clouds-azure | /docs/azure-cloud |
/docs/clouds-openstack | /docs/openstack-cloud |
/docs/clouds-oci | /docs/oci-cloud |
/docs/clouds-rackspace | /docs/rackspace-cloud |
/docs/tutorials/k8s-aws-integrator | /docs/k8s-aws-integrator-tutorial |
/docs/clouds-manual | /docs/manual-cloud |
/docs/clouds-vsphere | /docs/vsphere-cloud |
/docs/tutorials/k8s-cdk-autostorage | /docs/k8s-cdk-autostorage-tutorial |
/docs/tutorials/k8s-multicloud-gke-autostorage | /docs/k8s-multicloud-gke-autostorage-tutorial |
/docs/charm-building | /docs/charm-writing |
/docs/authors-charm-building | /docs/charm-writing |
/docs/install | /docs/installing |
/docs/install-juju | /docs/installing |
/docs/installing-juju | /docs/installing |
/docs/amulet | /docs/tools#heading–amulet |