Welcome to the Juju documentation!

Do you have any questions or want to contribute to this project? Juju is open-source and welcomes all new community members and users. You can ask questions in the forum or just say “hi” in the chat!

The menu on the left guides you through setting up and using Juju with your applications.

What’s new?

What’s Juju?

Juju is an open source Charmed Operator Framework. It helps you move from configuration management to application management and has two main components:

If you are looking to deploy and manage applications... If you are looking to charm your application...
Charmed Operator Lifecycle Manager (OLM) is a hybrid-cloud application management and orchestration system for Day 0 to Day 2 operations. Deploy, configure, scale, integrate, maintain and manage Kubernetes native, container-native and VM-native applications - and the relations between them.

Charmed Operators, packaged as “Charms”, are software that encapsulate a single application and all the code and know-how it takes to operate it.

Get started by visiting the full OLM documentation.

The Charmed Operator SDK is a Python framework to assist in the development of Charmed Operators. It features strong abstractions around the components of an application deployed using the Juju OLM.

To get started developing a Charmed Operator, visit the SDK documentation

Model-driven operations is a simple way of describing what software should actually do, specified from the top down (services and how they relate) rather than built from the bottom up, enabling a clean and portable expression of intent rather than a complicated recipe. Juju delivers the tools to describe your model and then to turn it into reality in a repeatable fashion on any cloud or computing resource.

Why Juju?

Juju transforms your ability to integrate fast-moving open source components into large, complex deployments. The move to micro-services and the explosion in open source have conspired to make modern operations incredibly complex and dependent on very rare skills. Model-driven operators solve two key problems - application operations domain knowledge is encapsulated in reusable packages, and dynamic model discovery allows reuse of those packages in widely different settings.

Content Guide

Deploy your application
Deploy
Integrate
Hybrid-cloud
Charm your application
Basic concepts
Hello, world
Publishing
Community
Chat
Forum
Code
Other Juju sites
Charmhub
JAAS

Navigation

Navigation
Level Path Navlink

Redirects

Mapping table
Path Location
/docs/authors-charm-writing /docs/charm-writing
/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/kubernetes/microk8s
/docs/microk8s-cloud /docs/kubernetes/microk8s
/docs/k8s-cloud /docs/kubernetes
/docs/aks /docs/kubernetes/azure-aks
/docs/kubernetes/azure-ak /docs/kubernetes/azure-aks
/docs/eks /docs/kubernetes/amazon-eks
/docs/gke /docs/kubernetes/google-gke
/docs/azure-aks /docs/kubernetes/azure-aks
/docs/amazon-eks /docs/kubernetes/amazon-eks
/docs/google-gke /docs/kubernetes/google-gke
/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
/docs/configuring-applications https://discourse.jujucharms.com/t/configuring-applications/1059
/docs/multi-user-cloud https://discourse.jujucharms.com/t/a-multi-user-cloud/1190
/docs/charm-writing/actions https://discourse.jujucharms.com/t/actions-for-the-charm-author/1113
/docs/adding-a-model https://discourse.jujucharms.com/t/adding-a-model/1147
/docs/lxd-resources https://discourse.jujucharms.com/t/additional-lxd-resources/1092
/docs/appendix-gke https://discourse.jujucharms.com/t/appendix-installing-a-gke-cluster/1448
/docs/charm-writing/application-config https://discourse.jujucharms.com/t/application-configuration/1052
/docs/application-groups https://discourse.jujucharms.com/t/application-groups/1076
/docs/metrics-applications https://discourse.jujucharms.com/t/application-metrics/1067
/docs/client-usage-tutorial https://discourse.jujucharms.com/t/basic-client-usage-tutorial/1191
/docs/charm-writing/benchmarks https://discourse.jujucharms.com/t/benchmarking-juju-applications/1036
/docs/charm-writing/best-practice https://discourse.jujucharms.com/t/best-practice-for-charm-authors/1037
/docs/charm-hooks https://discourse.jujucharms.com/t/charm-hooks/1040
/docs/charm-layer-yaml-reference https://discourse.jujucharms.com/t/charm-layer-yaml-reference/1165
/docs/charm-network-primitives https://discourse.jujucharms.com/t/charm-network-primitives/1126
/docs/charm-writing/promulgation https://discourse.jujucharms.com/t/charm-promulgation/1054
/docs/charm-review-process https://discourse.jujucharms.com/t/charm-review-process/1055
/docs/charm-store-policy https://discourse.jujucharms.com/t/charm-store-policy/1044
/docs/charm-tools https://discourse.jujucharms.com/t/charm-tools/1180
/docs/charms-and-mysql-interfaces https://discourse.jujucharms.com/t/charms-and-mysql-interfaces/1139
/docs/client https://discourse.jujucharms.com/t/client/1083
/docs/cmr-scenario-1 https://discourse.jujucharms.com/t/cmr-scenario-1/1148
/docs/cmr-scenario-2 https://discourse.jujucharms.com/t/cmr-scenario-2/1149
/docs/command-changes-from-1-25-to-2-0 https://discourse.jujucharms.com/t/command-changes-from-1-25-to-2-0/1101
/docs/components-of-a-charm https://discourse.jujucharms.com/t/components-of-a-charm/1038
/docs/configuring-applications https://discourse.jujucharms.com/t/configuring-applications/1059
/docs/configuring-controllers https://discourse.jujucharms.com/t/configuring-controllers/1107
/docs/configuring-offline-usage https://discourse.jujucharms.com/t/configuring-juju-for-offline-usage/1068
/docs/configuring-models https://discourse.jujucharms.com/t/configuring-models/1151
/docs/controller-logins https://discourse.jujucharms.com/t/controller-logins/1389
/docs/create-a-google-compute-engine-controller https://discourse.jujucharms.com/t/create-a-google-compute-engine-controller/1189
/docs/appendix-creating-an-aws-vpc https://discourse.jujucharms.com/t/appendix-creating-an-aws-vpc/1064
/docs/creating-config-yaml-and-configuring-charms https://discourse.jujucharms.com/t/creating-config-yaml-and-configuring-charms/1039
/docs/creating-icons-for-charms https://discourse.jujucharms.com/t/creating-icons-for-charms/1041
/docs/creating-ssh-keypairs-on-windows https://discourse.jujucharms.com/t/creating-ssh-keypairs-on-windows/1133
/docs/charm-writing/hook-errors https://discourse.jujucharms.com/t/dealing-with-errors-encountered-by-charm-hooks/1048
/docs/debugging-building-layers https://discourse.jujucharms.com/t/debugging-building-layers/1115
/docs/charm-writing/hook-debug https://discourse.jujucharms.com/t/debugging-charm-hooks/1116
/docs/deploying-charms-offline https://discourse.jujucharms.com/t/deploying-charms-offline/1069
/docs/charm-writing/hook-debug-dhx https://discourse.jujucharms.com/t/dhx-a-customized-hook-debugging-environment-plugin/1114
/docs/disabling-commands https://discourse.jujucharms.com/t/disabling-commands/1141
/docs/event-cycle https://discourse.jujucharms.com/t/event-cycle/1117
/docs/getting-started-with-charm-development https://discourse.jujucharms.com/t/getting-started-with-charm-development/1118
/docs/getting-started-with-juju-on-jaas https://discourse.jujucharms.com/t/getting-started-with-juju-on-jaas/1134
/docs/charm-writing/howto-author https://discourse.jujucharms.com/t/how-to-become-a-juju-charm-author/1049
/docs/implementing-leadership https://discourse.jujucharms.com/t/implementing-leadership/1124
/docs/charm-writing/relations https://discourse.jujucharms.com/t/implementing-relations/1051
/docs/appendix-installing-ceph https://discourse.jujucharms.com/t/appendix-installing-ceph/1077
/docs/installing-snaps-offline https://discourse.jujucharms.com/t/installing-snaps-offline/1179
/docs/instance-naming-and-tagging-in-clouds https://discourse.jujucharms.com/t/instance-naming-and-tagging-in-clouds/1102
/docs/interface-layers https://discourse.jujucharms.com/t/interface-layers/1121
/docs/introducing-juju-2-0 https://discourse.jujucharms.com/t/introducing-juju-2-0/1140
/docs/introduction-to-juju-charms https://discourse.jujucharms.com/t/introduction-to-juju-charms/1188
/docs/juju-plugins https://discourse.jujucharms.com/t/juju-plugins/1145
/docs/centos https://discourse.jujucharms.com/t/juju-support-for-centos7/1142
/docs/language-details-contributing-to-juju-docs https://discourse.jujucharms.com/t/language-details-contributing-to-juju-docs/1104
/docs/layers-for-charm-authoring https://discourse.jujucharms.com/t/layers-for-charm-authoring/1122
/docs/leadership-howtos https://discourse.jujucharms.com/t/leadership-howtos/1123
/docs/managed-solutions https://discourse.jujucharms.com/t/managed-solutions/1132
/docs/metric-collecting-charms https://discourse.jujucharms.com/t/metric-collecting-charms/1125
/docs/multi-user-basic-tutorial https://discourse.jujucharms.com/t/multi-user-basic-setup-tutorial/1195
/docs/multi-user-external-tutorial https://discourse.jujucharms.com/t/multi-user-external-setup-tutorial/1196
/docs/notes-on-upgrading-juju-software https://discourse.jujucharms.com/t/notes-on-upgrading-juju-software/1153
/docs/offline-mode-strategies https://discourse.jujucharms.com/t/offline-mode-strategies/1071
/docs/persistent-storage-and-kubernetes https://discourse.jujucharms.com/t/persistent-storage-and-kubernetes/1078
/docs/reference https://discourse.jujucharms.com/t/reference-documents/1161
/docs/release-notes https://discourse.jujucharms.com/t/release-notes/1166
/docs/running-multiple-versions-of-juju https://discourse.jujucharms.com/t/running-multiple-versions-of-juju/1143
/docs/sample-command-usage-and-output-interpretation https://discourse.jujucharms.com/t/sample-command-usage-and-output-interpretation/1200
/docs/scaling-applications https://discourse.jujucharms.com/t/scaling-applications/1075
/docs/k8s-static-pv-tutorial https://discourse.jujucharms.com/t/setting-up-static-kubernetes-storage-tutorial/1193
/docs/charm-writing/subordinates https://discourse.jujucharms.com/t/subordinate-applications/1053
/docs/charm-writing/hook-env https://discourse.jujucharms.com/t/the-hook-environment-hook-tools-and-how-hooks-are-run/1047
/docs/charm-writing/store https://discourse.jujucharms.com/t/the-juju-charm-store/1045
/docs/charm-writing/relations-lifecycle https://discourse.jujucharms.com/t/the-lifecycle-of-charm-relations/1050
/docs/help-additions https://discourse.jujucharms.com/t/troubleshooting-additions/1182
/docs/help-clouds https://discourse.jujucharms.com/t/troubleshooting-clouds/1183
/docs/help-model-upgrades https://discourse.jujucharms.com/t/troubleshooting-model-upgrades/1186
/docs/help-removals https://discourse.jujucharms.com/t/troubleshooting-removals/1185
/docs/k8s-cdk-autostorage-tutorial https://discourse.jujucharms.com/t/tutorial-installing-kubernetes-with-cdk-and-using-auto-configured-storage/1469
/docs/k8s-multicloud-gke-autostorage-tutorial https://discourse.jujucharms.com/t/tutorial-multi-cloud-controller-with-gke-and-auto-configured-storage/1465
/docs/k8s-charms-tutorial https://discourse.jujucharms.com/t/understanding-kubernetes-charms-tutorial/1263
/docs/unmaintained-charms https://discourse.jujucharms.com/t/unmaintained-charms/1056
/docs/charm-writing/upgrading https://discourse.jujucharms.com/t/upgrading-a-charm/1131
/docs/upgrading-series https://discourse.jujucharms.com/t/upgrading-a-machine-series/1198
/docs/upgrading-applications https://discourse.jujucharms.com/t/upgrading-applications/1080
/docs/upgrading-models https://discourse.jujucharms.com/t/upgrading-models/1154
/docs/user-types-and-abilities https://discourse.jujucharms.com/t/user-types-and-abilities/1201
/docs/using-bundles-with-the-gui https://discourse.jujucharms.com/t/using-bundles-with-the-gui/1057
/docs/using-docker-in-charms https://discourse.jujucharms.com/t/using-docker-in-charms/1135
/docs/joyent-cloud https://discourse.jujucharms.com/t/using-joyent-with-juju/1089
/docs/lxd-cloud-advanced https://discourse.jujucharms.com/t/using-lxd-with-juju-advanced/1091
/docs/advanced-azure-cloud https://discourse.jujucharms.com/t/using-microsoft-azure-with-juju-advanced/1085
/docs/openstack-cloud https://discourse.jujucharms.com/t/using-openstack-with-juju/1097
/docs/using-resources-developer-guide https://discourse.jujucharms.com/t/using-resources-developer-guide/1127
/docs/k8s-aws-integrator-tutorial https://discourse.jujucharms.com/t/using-the-aws-integrator-charm-tutorial/1192
/docs/using-the-localhost-cloud-offline https://discourse.jujucharms.com/t/using-the-localhost-cloud-offline/1070
/docs/what-is-juju https://discourse.jujucharms.com/t/what-is-juju/1032
/docs/whats-new-2-6 https://discourse.jujucharms.com/t/whats-new-in-2-6/1202
/docs/writing-a-layer-by-example https://discourse.jujucharms.com/t/writing-a-layer-by-example/1120
/docs/writing-charm-tests https://discourse.jujucharms.com/t/writing-charm-tests/1130
/docs/writing-charms-that-use-storage https://discourse.jujucharms.com/t/writing-charms-that-use-storage/1128
/docs/writing-charms-that-use-terms https://discourse.jujucharms.com/t/writing-charms-that-use-terms/1129
/docs/writing-your-first-juju-charm https://discourse.jujucharms.com/t/writing-your-first-juju-charm/1046
/docs/tutorial-managing-credentials https://discourse.jujucharms.com/t/tutorial-managing-credentials/1289
/docs/command-consume https://discourse.charmhub.io/t/command-consume/1698
/docs/command-find-offers https://discourse.charmhub.io/t/command-find-offers/1722
/docs/command-list-firewall-rules https://discourse.charmhub.io/t/command-list-firewall-rules/1745
/docs/command-offer https://discourse.charmhub.io/t/command-offer/1772
/docs/command-offers https://discourse.charmhub.io/t/command-offers/1773
/docs/command-remove-offer https://discourse.charmhub.io/t/command-remove-offer/1788
/docs/command-remove-saas https://discourse.charmhub.io/t/command-remove-saas/1790
/docs/command-resume-relation https://discourse.charmhub.io/t/command-resume-relation/1799
/docs/command-set-firewall-rule https://discourse.charmhub.io/t/command-set-firewall-rule/1811
/docs/command-show-offer https://discourse.charmhub.io/t/command-show-offer/1826
/docs/command-suspend-relation https://discourse.charmhub.io/t/command-suspend-relation/1840
/docs/kubernetes /docs/olm/get-started-on-kubernetes
/docs/getting-started-with-juju https://juju.is/docs/olm
/docs/installing https://juju.is/docs/olm/installing-juju
/docs/tutorials https://juju.is/tutorials
/docs/concepts-and-terms https://juju.is/docs/olm/quick-reference
/docs/applications-and-charms https://juju.is/docs/olm/applications-and-charmed-operators
/docs/models https://juju.is/docs/olm/models
/docs/relations https://juju.is/docs/olm/relations
/docs/clouds https://juju.is/docs/olm/clouds
/docs/credentials https://juju.is/docs/olm/credentials
/docs/controllers https://juju.is/docs/olm/controllers
/docs/constraints https://juju.is/docs/olm/constraints
/docs/fan-container-networking https://juju.is/docs/olm/fan-container-networking
/docs/ha-applications https://juju.is/docs/olm/high-availability
/docs/spaces https://juju.is/docs/olm/network-spaces
/docs/clouds https://juju.is/docs/olm/clouds
/docs/credentials https://juju.is/docs/olm/credentials
/docs/creating-a-controller https://juju.is/docs/olm/create-controllers
/docs/deploying-applications https://juju.is/docs/olm/deploying-applications
/docs/constraints https://juju.is/docs/olm/constraints
/docs/deploying-advanced-applications https://juju.is/docs/olm/advanced-application-deployment
/docs/relations https://juju.is/docs/olm/relations
/docs/cross-model-relations https://juju.is/docs/olm/cross-model-relations
/docs/lxd-cloud https://juju.is/docs/olm/lxd
/docs/microk8s-cloud https://juju.is/docs/olm/microk8s
/docs/kubernetes/azure-aks https://juju.is/docs/olm/azure-kubernetes-service-(azure-aks)
/docs/kubernetes/amazon-eks https://juju.is/docs/olm/amazon-elastic-kubernetes-service-(amazon-eks)
/docs/kubernetes/google-gke https://juju.is/docs/olm/google-kubernetes-engine-(gke)
/docs/kubernetes https://juju.is/docs/olm/other-clusters
/docs/troubleshooting-additions /docs/olm/troubleshoot
/docs/vsphere-cloud https://juju.is/docs/olm/vmware-vsphere
/docs/vmware-vsphere https://juju.is/docs/olm/vmware-vsphere
/docs/openstack-cloud https://juju.is/docs/olm/openstack
/docs/maas-cloud https://juju.is/docs/olm/maas
/docs/manual-cloud https://juju.is/docs/olm/manual-setup
/docs/aws-cloud https://juju.is/docs/olm/amazon-aws
/docs/azure-cloud https://juju.is/docs/olm/azure
/docs/gce-cloud https://juju.is/docs/olm/google-gce
/docs/oci-cloud https://juju.is/docs/olm/oracle
/docs/rackspace-cloud https://juju.is/docs/olm/rackspace
/docs/machine-auth https://juju.is/docs/olm/accessing-individual-machines-with-ssh
/docs/working-with-actions https://juju.is/docs/olm/working-with-actions
/docs/collecting-juju-metrics https://juju.is/docs/olm/collecting-juju-metrics
/docs/gui https://juju.is/docs/olm/accessing-juju’s-web-interface
/docs/storage https://juju.is/docs/olm/defining-and-using-persistent-storage
/docs/removing-things https://juju.is/docs/olm/removing-things
/docs/upgrading https://juju.is/docs/olm/upgrading
/docs/controller-backups https://juju.is/docs/olm/controller-backups
/docs/controller-high-availability https://juju.is/docs/olm/high-availability-juju-controller
/docs/working-with-multiple-users https://juju.is/docs/olm/working-with-multiple-users
/docs/working-offline https://juju.is/docs/olm/working-offline
/docs/migrating-models https://juju.is/docs/olm/migrating-models
/docs/cloud-image-metadata https://juju.is/docs/olm/cloud-image-metadata
/docs/charm-bundles https://juju.is/docs/sdk/bundles
/docs/juju-resources https://juju.is/docs/sdk/resources
/docs/charm-writing/kubernetes https://juju.is/docs/sdk/hello-world
/docs/charm-writing https://juju.is/docs/sdk/hello-world
/docs/tools https://juju.is/docs/sdk
/docs/glossary https://juju.is/docs/olm/glossary
/docs/charm-unit-status-and-their-meanings https://juju.is/docs/olm/status-values
/docs/constraints-reference https://juju.is/docs/olm/constraints
/docs/commands https://juju.is/docs/olm/commands
/docs/juju-environment-variables https://juju.is/docs/olm/environment-variables
/docs/charm-writing/hook-tools https://juju.is/docs/sdk
/docs/charm-metadata https://juju.is/docs/sdk/charm-anatomy
/docs/bundle-reference https://juju.is/docs/sdk/bundles
/docs/logs https://juju.is/docs/olm/juju-logs
/docs/contact-us http://discourse.charmhub.io/
/docs/help http://discourse.charmhub.io/