Juju documentation

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

Finding help and seeking support

  • Ask a question on our forum
  • Chat to us on IRC


Community Links



Creating a Controller

Supported Clouds



System Administration

Writing Charms

Juju Concepts



Seeking help


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


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

Question for @anthonydillon, @nottrobin & @pmatulis - would changing the title of this post impact negatively downstream? If it’s being pinned globally, I believe it should be inviting. (Also, why is it being pinned globally?)

“Juju documentation” makes it hard to know whether it’s worth clicking on. If it’s changed to “Need help? Links to Juju’s documentation”.

The introduction should also be more welcoming, in my opinion. It reads to me as “you’ve come to the wrong place”:

Yes, you can happily change the title, that won’t have any impact on the system.

The thinking behind it being pinned is that it provides effectively the navigation table for the documentation system. But I don’t think it needs to be pinned globally, that seems like a mistake.

But I consider it very much your call whether it’s the right decision to pin it at all. You can happily unpin it, again without having any impact on the documentation system.

The content above the “Navigation” title is also currently not used by the docs site, so you can change it to whatever you like for the time being. However, in other documentation sets - docs.snapcraft.io and the soon-to-be created maas.io/docs, the content above the “Navigation” title in that topic forms the content of the docs homepage, so we might want to move this way in Juju too before too long.

Does that all make sense?

Thanks for the response Robin. I’ll pin this thread to the #docs category, rather than globally. That way it can still be useful as an index for people writing documentation.

1 Like

Heads up, the following pages under the Reference section are missing actual links:

  • Juju commands
  • Environment variables