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

Contribute

Community Links

Navigation

Introduction

Creating a Controller

Supported Clouds

Deployment

Operations

System Administration

Writing Charms

Juju Concepts

Reference

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
https://discourse.jujucharms.com/t/appendix-creating-an-aws-vpc/1064 /docs/appendix-creating-an-aws-vpc
https://discourse.jujucharms.com/t/creating-config-yaml-and-configuring-charms/1039 /docs/creating-config-yaml-and-configuring-charms
https://discourse.jujucharms.com/t/creating-icons-for-charms/1041 /docs/creating-icons-for-charms
https://discourse.jujucharms.com/t/creating-ssh-keypairs-on-windows/1133 /docs/creating-ssh-keypairs-on-windows
https://discourse.jujucharms.com/t/credentials/1112 /docs/credentials
https://discourse.jujucharms.com/t/cross-model-relations/1150 /docs/cross-model-relations
https://discourse.jujucharms.com/t/dealing-with-errors-encountered-by-charm-hooks/1048 /docs/charm-writing/hook-errors
https://discourse.jujucharms.com/t/debugging-building-layers/1115 /docs/debugging-building-layers
https://discourse.jujucharms.com/t/debugging-charm-hooks/1116 /docs/charm-writing/hook-debug
https://discourse.jujucharms.com/t/deploying-applications-advanced/1061 /docs/deploying-advanced-applications
https://discourse.jujucharms.com/t/deploying-applications/1062 /docs/deploying-applications
https://discourse.jujucharms.com/t/deploying-charms-offline/1069 /docs/deploying-charms-offline
https://discourse.jujucharms.com/t/dhx-a-customized-hook-debugging-environment-plugin/1114 /docs/charm-writing/hook-debug-dhx
https://discourse.jujucharms.com/t/disabling-commands/1141 /docs/disabling-commands
https://discourse.jujucharms.com/t/event-cycle/1117 /docs/event-cycle
https://discourse.jujucharms.com/t/fan-container-networking/1065 /docs/fan-container-networking
https://discourse.jujucharms.com/t/getting-started-with-charm-development/1118 /docs/getting-started-with-charm-development
https://discourse.jujucharms.com/t/getting-started-with-juju-on-jaas/1134 /docs/getting-started-with-juju-on-jaas
https://discourse.jujucharms.com/t/getting-started-with-juju/1970 /docs/getting-started-with-juju
https://discourse.jujucharms.com/t/hook-tools/1163 /docs/charm-writing/hook-tools
https://discourse.jujucharms.com/t/how-to-become-a-juju-charm-author/1049 /docs/charm-writing/howto-author
https://discourse.jujucharms.com/t/implementing-leadership/1124 /docs/implementing-leadership
https://discourse.jujucharms.com/t/implementing-relations/1051 /docs/charm-writing/relations
https://discourse.jujucharms.com/t/appendix-installing-ceph/1077 /docs/appendix-installing-ceph
https://discourse.jujucharms.com/t/installing-juju/1164 /docs/installing
https://discourse.jujucharms.com/t/installing-snaps-offline/1179 /docs/installing-snaps-offline
https://discourse.jujucharms.com/t/instance-naming-and-tagging-in-clouds/1102 /docs/instance-naming-and-tagging-in-clouds
https://discourse.jujucharms.com/t/interface-layers/1121 /docs/interface-layers
https://discourse.jujucharms.com/t/introducing-juju-2-0/1140 /docs/introducing-juju-2-0
https://discourse.jujucharms.com/t/introduction-to-juju-charms/1188 /docs/introduction-to-juju-charms
https://discourse.jujucharms.com/t/juju-constraints/1160 /docs/constraints-reference
Juju environment variables /docs/juju-environment-variables
https://discourse.jujucharms.com/t/juju-gui/1109 /docs/gui
https://discourse.jujucharms.com/t/juju-logs/1184 /docs/logs
https://discourse.jujucharms.com/t/juju-plugins/1145 /docs/juju-plugins
https://discourse.jujucharms.com/t/juju-resources/1074 /docs/juju-resources
https://discourse.jujucharms.com/t/juju-support-for-centos7/1142 /docs/centos
https://discourse.jujucharms.com/t/language-details-contributing-to-juju-docs/1104 /docs/language-details-contributing-to-juju-docs
https://discourse.jujucharms.com/t/layers-for-charm-authoring/1122 /docs/layers-for-charm-authoring
https://discourse.jujucharms.com/t/leadership-howtos/1123 /docs/leadership-howtos
https://discourse.jujucharms.com/t/machine-authentication/1146 /docs/machine-auth
https://discourse.jujucharms.com/t/managed-solutions/1132 /docs/managed-solutions
https://discourse.jujucharms.com/t/managing-relations/1073 /docs/relations
https://discourse.jujucharms.com/t/metric-collecting-charms/1125 /docs/metric-collecting-charms
https://discourse.jujucharms.com/t/migrating-models/1152 /docs/migrating-models
https://discourse.jujucharms.com/t/models/1155 /docs/models
https://discourse.jujucharms.com/t/multi-user-basic-setup-tutorial/1195 /docs/multi-user-basic-tutorial
https://discourse.jujucharms.com/t/multi-user-external-setup-tutorial/1196 /docs/multi-user-external-tutorial
https://discourse.jujucharms.com/t/network-spaces/1157 /docs/spaces
https://discourse.jujucharms.com/t/notes-on-upgrading-juju-software/1153 /docs/notes-on-upgrading-juju-software
https://discourse.jujucharms.com/t/offline-mode-strategies/1071 /docs/offline-mode-strategies
https://discourse.jujucharms.com/t/persistent-storage-and-kubernetes/1078 /docs/persistent-storage-and-kubernetes
https://discourse.jujucharms.com/t/reference-documents/1161 /docs/reference
https://discourse.jujucharms.com/t/release-notes/1166 /docs/release-notes
https://discourse.jujucharms.com/t/removing-things/1063 /docs/removing-things
https://discourse.jujucharms.com/t/running-multiple-versions-of-juju/1143 /docs/running-multiple-versions-of-juju
https://discourse.jujucharms.com/t/sample-command-usage-and-output-interpretation/1200 /docs/sample-command-usage-and-output-interpretation
https://discourse.jujucharms.com/t/scaling-applications/1075 /docs/scaling-applications
https://discourse.jujucharms.com/t/setting-up-static-kubernetes-storage-tutorial/1193 /docs/k8s-static-pv-tutorial
https://discourse.jujucharms.com/t/subordinate-applications/1053 /docs/charm-writing/subordinates
https://discourse.jujucharms.com/t/the-hook-environment-hook-tools-and-how-hooks-are-run/1047 /docs/charm-writing/hook-env
https://discourse.jujucharms.com/t/the-juju-charm-store/1045 /docs/charm-writing/store
https://discourse.jujucharms.com/t/the-lifecycle-of-charm-relations/1050 /docs/charm-writing/relations-lifecycle
https://discourse.jujucharms.com/t/tools/1181 /docs/tools
https://discourse.jujucharms.com/t/troubleshooting-additions/1182 /docs/help-additions
https://discourse.jujucharms.com/t/troubleshooting-clouds/1183 /docs/help-clouds
https://discourse.jujucharms.com/t/troubleshooting-model-upgrades/1186 /docs/help-model-upgrades
https://discourse.jujucharms.com/t/troubleshooting-removals/1185 /docs/help-removals
https://discourse.jujucharms.com/t/troubleshooting/1187 /docs/help
https://discourse.jujucharms.com/t/tutorial-installing-kubernetes-with-cdk-and-using-auto-configured-storage/1469 /docs/k8s-cdk-autostorage-tutorial
https://discourse.jujucharms.com/t/tutorial-multi-cloud-controller-with-gke-and-auto-configured-storage/1465 /docs/k8s-multicloud-gke-autostorage-tutorial
https://discourse.jujucharms.com/t/tutorials/1197 /docs/tutorials
https://discourse.jujucharms.com/t/understanding-kubernetes-charms-tutorial/1263 /docs/k8s-charms-tutorial
https://discourse.jujucharms.com/t/unmaintained-charms/1056 /docs/unmaintained-charms
https://discourse.jujucharms.com/t/upgrading-a-charm/1131 /docs/charm-writing/upgrading
https://discourse.jujucharms.com/t/upgrading-a-machine-series/1198 /docs/upgrading-series
https://discourse.jujucharms.com/t/upgrading-applications/1080 /docs/upgrading-applications
https://discourse.jujucharms.com/t/upgrading-models/1154 /docs/upgrading-models
https://discourse.jujucharms.com/t/upgrading/1199 /docs/upgrading
https://discourse.jujucharms.com/t/user-types-and-abilities/1201 /docs/user-types-and-abilities
https://discourse.jujucharms.com/t/using-amazon-aws-with-juju/1084 /docs/aws-cloud
https://discourse.jujucharms.com/t/using-bundles-with-the-gui/1057 /docs/using-bundles-with-the-gui
https://discourse.jujucharms.com/t/using-constraints/1060 /docs/constraints
https://discourse.jujucharms.com/t/using-docker-in-charms/1135 /docs/using-docker-in-charms
https://discourse.jujucharms.com/t/using-google-gce-with-juju/1088 /docs/gce-cloud
https://discourse.jujucharms.com/t/using-joyent-with-juju/1089 /docs/joyent-cloud
https://discourse.jujucharms.com/t/using-juju-storage/1079 /docs/storage
https://discourse.jujucharms.com/t/using-juju-with-microk8s-tutorial/1194 /docs/microk8s-cloud
https://discourse.jujucharms.com/t/using-kubernetes-with-juju/1090 /docs/k8s-cloud
https://discourse.jujucharms.com/t/using-lxd-with-juju-advanced/1091 /docs/lxd-cloud-advanced
https://discourse.jujucharms.com/t/using-lxd-with-juju/1093 /docs/lxd-cloud
https://discourse.jujucharms.com/t/using-maas-with-juju/1094 /docs/maas-cloud
https://discourse.jujucharms.com/t/using-microsoft-azure-with-juju-advanced/1085 /docs/advanced-azure-cloud
https://discourse.jujucharms.com/t/using-microsoft-azure-with-juju/1086 /docs/azure-cloud
https://discourse.jujucharms.com/t/using-openstack-with-juju/1097 /docs/openstack-cloud
https://discourse.jujucharms.com/t/using-oracle-oci-with-juju/1096 /docs/oci-cloud
https://discourse.jujucharms.com/t/using-rackspace-with-juju/1098 /docs/rackspace-cloud
https://discourse.jujucharms.com/t/using-resources-developer-guide/1127 /docs/using-resources-developer-guide
https://discourse.jujucharms.com/t/using-the-aws-integrator-charm-tutorial/1192 /docs/k8s-aws-integrator-tutorial
https://discourse.jujucharms.com/t/using-the-localhost-cloud-offline/1070 /docs/using-the-localhost-cloud-offline
https://discourse.jujucharms.com/t/using-the-manual-cloud-with-juju/1095 /docs/manual-cloud
https://discourse.jujucharms.com/t/using-vmware-vsphere-with-juju/1099 /docs/vsphere-cloud
https://discourse.jujucharms.com/t/what-is-juju/1032 /docs/what-is-juju
https://discourse.jujucharms.com/t/whats-new-in-2-6/1202 /docs/whats-new-2-6
https://discourse.jujucharms.com/t/working-offline/1072 /docs/working-offline
https://discourse.jujucharms.com/t/working-with-actions/1033 /docs/working-with-actions
https://discourse.jujucharms.com/t/working-with-multiple-users/1156 /docs/working-with-multiple-users
https://discourse.jujucharms.com/t/writing-a-layer-by-example/1120 /docs/writing-a-layer-by-example
https://discourse.jujucharms.com/t/writing-charm-tests/1130 /docs/writing-charm-tests
https://discourse.jujucharms.com/t/writing-charms-that-use-storage/1128 /docs/writing-charms-that-use-storage
https://discourse.jujucharms.com/t/writing-charms-that-use-terms/1129 /docs/writing-charms-that-use-terms
https://discourse.jujucharms.com/t/writing-your-first-juju-charm/1046 /docs/writing-your-first-juju-charm

Redirects

Mapping table
Path Location
/stable/models-config /docs/configuring-models
/stable/controllers-config /docs/configuring-controllers
/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