Juju Documentation

This is the documentation for the latest Juju version, with in-line notes about version differences.

To find out what’s new, see Roadmap & Releases.

To upgrade, see How to upgrade your deployment.

Welcome to Juju, your entrypoint into the Juju universe!

Juju is an open source orchestration engine for software operators that enables the deployment, integration and lifecycle management of applications at any scale, on any infrastructure, using special software operators called ‘charms’.

Juju provides a model-driven way to install, provision, maintain, update, upgrade, and integrate applications on and across Kubernetes containers, Linux containers, virtual machines, and bare metal machines, on public or private cloud.

As such, Juju makes it simple, intuitive, and efficient to manage the full lifecycle of complex applications in hybrid cloud.

For system operators and DevOps who manage applications in the cloud, Juju simplifies code; for CIOs, it helps align code with business decisions.

For a collection of existing charms, see Charmhub. To build your own charm, see the Charm SDK docs.


In this documentation

Tutorial
Get started - a hands-on introduction to Juju for new users
How-to guides
Step-by-step guides covering key operations and common tasks
Explanation
Discussion and clarification of key topics
Reference
Technical information - specifications, APIs, architecture

Project and community

Juju is an open source project that warmly welcomes community projects, contributions, suggestions, fixes and constructive feedback.

Navigation

Navigation
Level Path Navlink
1 Juju documentation
1 tutorial Get started with Juju
1 how-to How-to guides
2 Manage your deployment
3 set-up–tear-down-your-test-environment Set up / Tear down your test environment
3 harden-your-deployment Harden your deployment
3 upgrade-your-juju-deployment Upgrade your deployment
3 troubleshoot-your-deployment Troubleshoot your deployment
4 debug-bootstrapmachine-failures Debug bootstrap/machine failures
3 take-your-deployment-offline Take your deployment offline
2 install-and-manage-the-client Install and manage the client
2 manage-the-juju-dashboard Manage the dashboard
2 manage-clouds Manage clouds
2 manage-credentials Manage credentials
2 manage-controllers Manage controllers
2 manage-models Manage models
2 manage-applications Manage applications
2 manage-relations Manage relations
2 manage-offers Manage offers
2 manage-charms-or-bundles Manage charms or bundles
2 manage-charm-resources Manage charm resources
2 manage-machines Manage machines
2 manage-storage Manage storage
2 manage-storage-pools Manage storage pools
2 manage-subnets Manage subnets
2 manage-spaces Manage spaces
2 manage-logs Manage agent logs
2 manage-units Manage units
2 manage-actions Manage actions
2 manage-ssh-keys Manage SSH keys
2 manage-users Manage users
2 manage-secrets Manage secrets
2 manage-secret-backends Manage secret backends
2 manage-metadata Manage metadata
2 manage-plugins Manage plugins
2 unsorted Unsorted
3 define-instance-tags Define instance tags in a cloud
3 fan-container-networking Fan container networking
3 supported-features Supported features
1 reference Reference
2 action Action
2 agent Agent
3 commands-available-on-a-juju-machine Commands available on a Juju machine
4 agent-introspection Agent introspection
5 agent-introspection-juju-engine-report juju_engine_report
5 agent-introspection-juju-goroutines juju_goroutines
5 agent-introspection-juju-heap-profile juju_heap_profile
5 agent-introspection-juju-machine-lock juju_machine_lock
5 agent-introspection-juju-metrics juju_metrics
5 agent-introspection-juju-start-unit juju_start_unit
5 agent-introspection-juju-stop-unit juju_stop_unit
5 agent-introspection-juju-unit-status juju_unit_status
2 application Application
2 base Base
2 binding Binding
2 bootstrapping Bootstrapping
2 bundle Bundle
2 channel Channel
2 charmed-operator Charm
3 charm-environment-variables Charm environment variables
2 client Client
2 cloud Cloud
3 juju-supported-clouds List of supported clouds
4 amazon-ec2 Amazon AWS
4 amazon-eks Amazon EKS
4 equinix-metal Equinix Metal
4 google-gce Google GCE
4 google-gke Google GKE
4 lxd LXD
4 maas MAAS
4 manual Manual setup
4 microk8s MicroK8s
4 microsoft-azure Microsoft Azure
4 microsoft-aks Microsoft AKS
4 openstack OpenStack
4 oracle-oci Oracle
4 vmware-vsphere VMware vSphere
3 kubernetes-clouds-and-juju Kubernetes clouds and Juju
2 configuration Configuration
3 list-of-controller-configuration-keys List of controller configuration keys
4 audit-log-exclude-methods audit-log-exclude-methods
4 juju-ha-space juju-ha-space
4 juju-mgmt-space juju-mgmt-space
3 list-of-model-configuration-keys List of model configuration keys
2 constraint Constraint
2 containeragent-binary containeragent (binary)
2 controller Controller
2 credential Credential
2 deployment Deploying
2 endpoint Endpoint
2 high-availability High-availability
2 hook Hook
2 hook-tool Hook tool
2 Juju
3 roadmap Juju roadmap & releases
3 cross-version-compatibility-in-juju Cross-version compatibility in Juju
2 juju-client juju CLI (Juju client)
3 juju-cli-commands juju CLI commands
4 juju-actions juju actions
4 juju-add-cloud juju add-cloud
4 juju-add-credential juju add-credential
4 juju-add-k8s juju add-k8s
4 juju-add-machine juju add-machine
4 juju-add-model juju add-model
4 juju-add-secret juju add-secret
4 juju-add-secret-backend juju add-secret-backend
4 juju-add-space juju add-space
4 juju-add-ssh-key juju add-ssh-key
4 juju-add-storage juju add-storage
4 juju-add-unit juju add-unit
4 juju-add-user juju add-user
4 juju-agree juju agree
4 juju-agreements juju agreements
4 juju-attach-resource juju attach-resource
4 juju-attach-storage juju attach-storage
4 juju-autoload-credentials juju autoload-credentials
4 juju-bind juju bind
4 juju-bootstrap juju bootstrap
4 juju-cancel-task juju cancel-task
4 juju-change-user-password juju change-user-password
4 juju-charm-resources juju charm-resources
4 juju-clouds juju clouds
4 juju-collect-metrics juju collect-metrics
4 juju-config juju config
4 juju-constraints juju constraints
4 juju-consume juju consume
4 juju-controller-config juju controller-config
4 juju-controllers juju controllers
4 juju-create-backup juju create-backup
4 juju-create-storage-pool juju create-storage-pool
4 juju-credentials juju credentials
4 juju-dashboard juju dashboard
4 juju-debug-code juju debug-code
4 juju-debug-hook juju debug-hook
4 juju-debug-hooks juju debug-hooks
4 juju-debug-log juju debug-log
4 juju-default-credential juju default-credential
4 juju-default-region juju default-region
4 juju-deploy juju deploy
4 juju-destroy-controller juju destroy-controller
4 juju-destroy-model juju destroy-model
4 juju-detach-storage juju detach-storage
4 juju-diff-bundle juju diff-bundle
4 juju-disable-command juju disable-command
4 juju-disable-user juju disable-user
4 juju-disabled-commands juju disabled-commands
4 juju-documentation juju documentation
4 juju-download juju download
4 juju-download-backup juju download-backup
4 juju-enable-command juju enable-command
4 juju-enable-destroy-controlle juju enable-destroy-controller
4 juju-enable-ha juju enable-ha
4 juju-enable-user juju enable-user
4 juju-exec juju exec
4 juju-export-bundle juju export-bundle
4 juju-expose juju expose
4 juju-find juju find
4 juju-find-offers juju find-offers
4 juju-firewall-rules juju firewall-rules
4 juju-grant juju grant
4 juju-grant-cloud juju grant-cloud
4 juju-grant-secret juju grant-secret
4 juju-help juju help
4 juju-help-tool juju help-tool
4 juju-import-filesystem juju import-filesystem
4 juju-import-ssh-key juju import-ssh-key
4 juju-info juju info
4 juju-integrate juju integrate
4 juju-kill-controller juju kill-controller
4 juju-list-actions juju list-actions
4 juju-list-agreements juju list-agreements
4 juju-list-charm-resources juju list-charm-resources
4 juju-list-clouds juju list-clouds
4 juju-list-controllers juju list-controllers
4 juju-list-credentials juju list-credentials
4 juju-list-disabled-commands juju list-disabled-commands
4 juju-list-firewall-rules juju list-firewall-rules
4 juju-list-machines juju list-machines
4 juju-list-models juju list-models
4 juju-list-offers juju list-offers
4 juju-list-operations juju list-operations
4 juju-list-payloads juju list-payloads
4 juju-list-regions juju list-regions
4 juju-list-resources juju list-resources
4 juju-list-secret-backends juju list-secret-backends
4 juju-list-secrets juju list-secrets
4 juju-list-spaces juju list-spaces
4 juju-list-ssh-keys juju list-ssh-keys
4 juju-list-storage juju list-storage
4 juju-list-storage-pools juju list-storage-pools
4 juju-list-subnets juju list-subnets
4 juju-list-users juju list-users
4 juju-login juju login
4 juju-logout juju logout
4 juju-machines juju machines
4 juju-metrics juju metrics
4 juju-migrate juju migrate
4 juju-model-config juju model-config
4 juju-model-constraints juju model-constraints
4 juju-model-default juju model-default
4 juju-model-defaults juju model-defaults
4 juju-models juju models
4 juju-move-to-space juju move-to-space
4 juju-offer juju offer
4 juju-offers juju offers
4 juju-operations juju operations
4 juju-payloads juju payloads
4 juju-refresh juju refresh
4 juju-regions juju regions
4 juju-register juju register
4 juju-relate juju relate
4 juju-reload-spaces juju reload-spaces
4 juju-remove-application juju remove-application
4 juju-remove-cloud juju remove-cloud
4 juju-remove-credential juju remove-credential
4 juju-remove-k8s juju remove-k8s
4 juju-remove-machine juju remove-machine
4 juju-remove-offer juju remove-offer
4 juju-remove-relation juju remove-relation
4 juju-remove-saas juju remove-saas
4 juju-remove-secret juju remove-secret
4 juju-remove-secret-backend juju remove-secret-backend
4 juju-remove-space juju remove-space
4 juju-remove-ssh-key juju remove-ssh-key
4 juju-remove-storage juju remove-storage
4 juju-remove-storage-pool juju remove-storage-pool
4 juju-remove-unit juju remove-unit
4 juju-remove-user juju remove-user
4 juju-rename-space juju rename-space
4 juju-resolve juju resolve
4 juju-resolved juju resolved
4 juju-resources juju resources
4 juju-resume-relation juju resume-relation
4 juju-retry-provisioning juju retry-provisioning
4 juju-revoke juju revoke
4 juju-revoke-cloud juju revoke-cloud
4 juju-revoke-secret juju revoke-secret
4 juju-run juju run
4 juju-scale-application juju scale-application
4 juju-scp juju scp
4 juju-secret-backends juju secret-backends
4 juju-secrets juju secrets
4 juju-set-application-base juju set-application-base
4 juju-set-constraints juju set-constraints
4 juju-set-credential juju set-credential
4 juju-set-default-credentials juju set-default-credentials
4 juju-set-default-region juju set-default-region
4 juju-set-firewall-rule juju set-firewall-rule
4 juju-set-meter-status juju set-meter-status
4 juju-set-model-constraints juju set-model-constraints
4 juju-show-action juju show-action
4 juju-show-application juju show-application
4 juju-show-cloud juju show-cloud
4 juju-show-controller juju show-controller
4 juju-show-credential juju show-credential
4 juju-show-credentials juju show-credentials
4 juju-show-machine juju show-machine
4 juju-show-model juju show-model
4 juju-show-offer juju show-offer
4 juju-show-operation juju show-operation
4 juju-show-secret juju show-secret
4 juju-show-secret-backend juju show-secret-backend
4 juju-show-space juju show-space
4 juju-show-status-log juju show-status-log
4 juju-show-storage juju show-storage
4 juju-show-task juju show-task
4 juju-show-unit juju show-unit
4 juju-show-user juju show-user
4 juju-spaces juju spaces
4 juju-ssh juju ssh
4 juju-ssh-keys juju ssh-keys
4 juju-status juju status
4 juju-storage juju storage
4 juju-storage-pools juju storage-pools
4 juju-subnets juju subnets
4 juju-suspend-relation juju suspend-relation
4 juju-switch juju switch
4 juju-sync-agent-binary juju sync-agent-binary
4 juju-trust juju trust
4 juju-unexpose juju unexpose
4 juju-unregister juju unregister
4 juju-update-cloud juju update-cloud
4 juju-update-credential juju update-credential
4 juju-update-credentials juju update-credentials
4 juju-update-k8s juju update-k8s
4 juju-update-public-clouds juju update-public-clouds
4 juju-update-secret juju update-secret
4 juju-update-secret-backend juju update-secret-backend
4 juju-update-storage-pool juju update-storage-pool
4 juju-upgrade-controller juju upgrade-controller
4 juju-upgrade-machine juju upgrade-machine
4 juju-upgrade-model juju upgrade-model
4 juju-users juju users
4 juju-wait-for juju wait-for
4 juju-wait-for-application juju wait-for application
4 juju-wait-for-machine juju wait-for machine
4 juju-wait-for-model juju wait-for model
4 juju-wait-for-unit juju wait-for unit
4 juju-whoami juju whoami
3 environment-variables juju environment variables
2 the-juju-dashboard juju-dashboard (the Juju dashboard)
2 the-juju-web-cli juju web CLI
2 jujuc-binary jujuc (binary)
2 jujud-binary jujud (binary)
2 leader Leader
2 log Log
2 machine Machine
2 metric Metric
2 model Model
2 offer Offer
2 operation Operation (script execution)
2 placement-directive Placement directive
2 plugins Plugin
3 list-of-known-plugins List of known plugins
4 juju-metadata juju-metadata
4 juju-stash juju-stash
3 plugin-flags Plugin flags
2 python-libjuju-client python-libjuju (Juju client)
2 removing-things Removing things
2 relation Relation (integration)
2 charm-resource Resource (charm)
2 scaling Scaling
2 secret Secret
3 secret-backend Secret backend
2 network-spaces Space
2 ssh-key SSH key
2 status Status
2 storage Storage
3 storage-constraint Storage constraint
3 storage-pool Storage pool
3 storage-provider Storage provider
3 dynamic-storage Dynamic storage
3 storage-support Storage support
2 subnet Subnet
2 task Task (script execution)
2 telemetry-and-juju Telemetry
2 terraform-juju-client terraform CLI (Juju client)
2 unit Unit
2 upgrading Upgrading things
2 user User
3 user-permissions User access levels
2 worker Worker
2 availability-zone Zone
1 explanation Explanation
2 application-modelling Application modelling
2 juju-performance Performance with Juju
2 security-with-juju Security with Juju
2 kubernetes-in-juju Kubernetes in Juju
logfile-varlogjujumachine-locklog Logfile: /var/log/juju/machine-lock.log

Redirects

Mapping table
Location Path
/docs/juju/manage-relations /docs/juju/relations
/docs/juju/manage-controllers /docs/juju/controllers
/docs/juju/manage-clouds /docs/juju/clouds
/docs/juju/manage-models /docs/juju/models
/docs/juju/the-juju-web-cli /docs/juju/using-the-juju-web-cli
/docs/juju/the-juju-dashboard /docs/juju/using-the-dashboard
/docs/juju/constraints /docs/juju/about-constraints
/docs/juju/user-types-and-abilities /docs/juju/about-user-types-and-abilities
/docs/juju/manage-the-client /docs/juju/upgrading-client
/docs/juju/migrate-a-model /docs/juju/migrating-models
/docs/juju/configure-a-model /docs/juju/configuring-models
/docs/juju/additional-how-to-guides /docs/juju/other-tutorials
/docs/sdk /t/charm-bundles/1058
/docs/sdk /t/juju-resources/1074
/docs/sdk /t/writing-a-kubernetes-v1-charm-updated/3976
/docs/sdk /t/charm-writing/1260
/docs/sdk /t/tools/1181
/docs/sdk /t/hook-tools/1163
/docs/sdk /t/charm-metadata/1043
/docs/sdk /t/bundle-reference/1158
/t/advanced-application-deployment /t/deploying-advanced-applications
http://discourse.charmhub.io/ /docs/juju/community-help
http://discourse.charmhub.io/ /docs/contact-us
http://discourse.charmhub.io/ /docs/juju/community-help
/docs/juju/accessing-the-dashboard /docs/juju/accessing-juju’s-web-interface
/docs/juju/basic-concepts /docs/juju/reference
/docs/juju/quick-reference /docs/juju/reference
/docs/juju/glossary /docs/juju/reference
/docs/juju/deploying-applications /docs/juju/manage-applications/
/t/5458 /t/1158
/docs/juju/get-started-on-a-localhost /docs/juju/tutorial
/docs/juju/get-started-on-kubernetes /docs/juju/tutorial
/docs/juju/add-a-relation /docs/juju/manage-same-model-relations
/docs/juju/remove-a-relation /docs/juju/manage-same-model-relations
/docs/juju/cross-model-relations /docs/juju/manage-cross-model-relations
/docs/juju/juju-update-clouds /docs/juju/juju-update-cloud
/docs/juju/working-with-multiple-users /docs/juju/manage-users
/docs/juju/applications-and-charmed-operators /docs/juju/applications
/docs/juju/deploy-charms-offline /docs/juju/manage-applications
/docs/juju/juju-sync-agent-binaries /docs/juju/juju-sync-agent-binary
/docs/juju/list-of-available-plugins /docs/juju/list-of-known-plugins
/docs/juju/plugins-wait-for /docs/juju/juju-wait-for
/docs/juju/configure-a-controller#heading–excluding-information-from-the-audit-log /docs/juju/audit-log-exclude-methods
/docs/juju/defining-and-using-persistent-storage /docs/juju/manage-storage
/docs/juju/remove-storage /docs/juju/manage-storage
/docs/juju/juju-show-units /docs/juju/juju-show-unit
/docs/juju/remove-units /docs/juju/manage-units
/docs/juju/working-with-actions /docs/juju/manage-actions
/docs/juju/juju-add-subnet /docs/juju/add-unit
/docs/juju/commands /docs/juju/juju-cli-commands
/docs/juju/juju-add-relation /docs/juju/juju-cli-commands
/docs/juju/juju-add-subnet /docs/juju/juju-cli-commands
/docs/juju/juju-budget /docs/juju/juju-cli-commands
/docs/juju/juju-cached-images /docs/juju/juju-cli-commands
/docs/juju/juju-cancel-action /docs/juju/juju-cli-commands
/docs/juju/juju-create-wallet /docs/juju/juju-cli-commands
/docs/juju/juju-get-constraints /docs/juju/juju-cli-commands
/docs/juju/juju-get-model-constraints /docs/juju/juju-cli-commands
/docs/juju/juju-gui /docs/juju/juju-cli-commands
/docs/juju/juju-hook-tool /docs/juju/juju-cli-commands
/docs/juju/juju-hook-tools /docs/juju/juju-cli-commands
/docs/juju/juju-list-cached-images /docs/juju/juju-cli-commands
/docs/juju/juju-list-plans /docs/juju/juju-cli-commands
/docs/juju/juju-plans /docs/juju/juju-cli-commands
/docs/juju/juju-remove-cached-images /docs/juju/juju-cli-commands
/docs/juju/juju-run-action /docs/juju/juju-cli-commands
/docs/juju/juju-set-plan /docs/juju/juju-cli-commands
/docs/juju/juju-set-series /docs/juju/juju-cli-commands
/docs/juju/juju-set-wallet /docs/juju/juju-cli-commands
/docs/juju/juju-show-action-output /docs/juju/juju-cli-commands
/docs/juju/juju-show-action-status /docs/juju/juju-cli-commands
/docs/juju/juju-show-status /docs/juju/juju-cli-commands
/docs/juju/juju-show-wallet /docs/juju/juju-cli-commands
/docs/juju/juju-sla /docs/juju/juju-cli-commands
/docs/juju/juju-sync-tools /docs/juju/juju-cli-commands
/docs/juju/juju-upgrade-charm /docs/juju/juju-cli-commands
/docs/juju/juju-upgrade-dashboard /docs/juju/juju-cli-commands
/docs/juju/juju-upgrade-gui /docs/juju/juju-cli-commands
/docs/juju/juju-upgrade-series /docs/juju/juju-cli-commands
/docs/juju/juju-wallets /docs/juju/juju-cli-commands
/docs/juju/juju-attach /docs/juju/juju-cli-commands
/docs/juju/juju-charm /docs/juju/juju-cli-commands
/docs/juju/juju-remove-consumed-application /docs/juju/juju-cli-commands
/docs/juju/juju-upgrade-juju /docs/juju/juju-cli-commands
/docs/juju/manage-relations /docs/juju/manage-integrations
/docs/juju/manage-same-model-relations /docs/juju/manage-same-model-integrations
/docs/juju/manage-cross-model-relations /docs/juju/manage-cross-model-integrations
/docs/juju/relations /docs/juju/integration
/docs/juju cross-model-relation /docs/juju cross-model-integration
/docs/juju/install-snaps-offline /docs/juju/install-and-manage-the-client
/docs/juju/manage-the-client /docs/juju/manage-juju
/docs/juju/installing-juju /docs/juju/install-and-manage-the-client
/docs/juju/use-the-client /docs/juju/use-juju
/docs/juju/back-up-the-juju-client /docs/juju/back-up-juju
/docs/juju/upgrade-the-juju-client /docs/juju/upgrade-juju
/docs/juju/accessing-individual-machines-with-ssh /docs/juju/manage-machines
/docs/juju/set-constraints-for-a-machine /docs/juju/manage-machines
/docs/juju/upgrade-a-machines-series /docs/juju/manage-machines
/docs/juju/remove-a-machine /docs/juju/manage-machines
/docs/juju/juju-set-default-credential /docs/juju/juju-set-default-credentials
/docs/juju/upgrade-the-dashboard /docs/juju/manage-the-juju-dashboard
/docs/juju/accessing-the-dashboard /docs/juju/manage-the-juju-dashboard
/docs/juju/restore-a-controller-from-a-backup /docs/juju/controller-backups
/docs/juju/manage-constraints /docs/juju/constraint
/docs/juju/constraints /docs/juju/constraint
/docs/juju/controllers /docs/juju/controller
/docs/juju/credentials /docs/juju/credential
/docs/juju/endpoints /docs/juju/endpoint
/docs/juju/agents /docs/juju/agent
/docs/juju/bundles /docs/juju/bundle
/docs/juju/clouds /docs/juju/cloud
/docs/juju/leaders /docs/juju/leader
/docs/juju/machines /docs/juju/machine
/docs/juju/models /docs/juju/model
/docs/juju/units /docs/juju/unit
/docs/juju/create-a-controller /docs/juju/manage-controllers
/docs/juju/configure-a-controller /docs/juju/manage-controllers
/docs/juju/set-constraints-for-a-controller /docs/juju/manage-controllers
/docs/juju/controller-backups /docs/juju/manage-controllers
/docs/juju/high-availability-juju-controller /docs/juju/manage-controllers
/docs/juju/remove-a-controller /docs/juju/manage-controllers
/docs/juju/applications /docs/juju/application
/docs/juju/add-a-model /docs/juju/manage-models
/docs/juju/get-information-about-a-model /docs/juju/manage-models
/docs/juju/configure-a-model /docs/juju/manage-models
/docs/juju/set-constraints-for-a-model /docs/juju/manage-models
/docs/juju/switch-to-a-different-model /docs/juju/manage-models
/docs/juju/migrate-a-model /docs/juju/manage-models
/docs/juju/upgrade-models /docs/juju/manage-models
/docs/juju/remove-a-model /docs/juju/manage-models
/docs/juju/disabling-commands /docs/juju/manage-models
/docs/juju/monitor-elasticsearch-with-elasticsearch-and-kibana /docs/juju/how-to
/docs/juju/additional-how-to-guides /docs/juju/how-to
/docs/juju/deploy-postgres-on-ubuntu-server /docs/juju/how-to
/docs/juju/deploy-rabbitmq-cluster-on-ubuntu-server /docs/juju/how-to
/docs/juju/get-started-charmed-kubernetes /docs/juju/how-to
/docs/juju/using-gitlab-as-a-container-registry /docs/juju/how-to
/docs/juju/streaming-hadoop-analysis /docs/juju/how-to
/docs/juju/charmed-kubernetes-kata-containers /docs/juju/how-to
/docs/juju/get-started-hadoop-spark /docs/juju/how-to
/docs/juju/kubeapps-on-canonical-kubernetes /docs/juju/how-to
/docs/juju/deploying-storageos-on-kubernetes /docs/juju/how-to
/docs/juju/charmed-osm-get-started /docs/juju/how-to
/docs/juju/lma-light /docs/juju/how-to
/docs/juju/deploy-a-charm-from-charmhub /docs/juju/manage-applications
/docs/juju/deploy-an-application-from-a-local-charm /docs/juju/manage-applications
/docs/juju/deploy-to-a-lxd-container /docs/juju/manage-applications
/docs/juju/deploy-an-application-with-a-specific-series /docs/juju/manage-applications
/docs/juju/deploy-to-a-specific-machine /docs/juju/manage-applications
/docs/juju/deploy-to-a-specific-availability-zone /docs/juju/manage-applications
/docs/juju/deploy-to-a-network-space /docs/juju/manage-applications
/docs/juju/trust-an-application-with-a-credential /docs/juju/manage-applications
/docs/juju/expose-a-deployed-application /docs/juju/manage-applications
/docs/juju/configure-an-application /docs/juju/manage-applications
/docs/juju/set-constraints-for-an-application /docs/juju/manage-applications
/docs/juju/scale-an-application /docs/juju/manage-applications
/docs/juju/upgrade-applications /docs/juju/manage-applications
/docs/juju/remove-an-application /docs/juju/manage-applications
/docs/juju/debug-charm-hooks https://juju.is/docs/sdk/debug-a-charm
/docs/juju/test /docs/sdk/debug-a-charm
/docs/juju/juju-logs /docs/juju/log
/docs/juju/adding-clouds /docs/juju/manage-clouds
/docs/juju/view-the-available-clouds /docs/juju/manage-clouds
/docs/juju/view-the-available-cloud-regions /docs/juju/manage-clouds
/docs/juju/change-the-default-region-for-a-cloud /docs/juju/manage-clouds
/docs/juju/view-detailed-information-about-a-cloud /docs/juju/manage-clouds
/docs/juju/update-the-definition-of-a-cloud /docs/juju/manage-clouds
/docs/juju/remove-a-cloud /docs/juju/manage-clouds
/docs/juju/charmed-operators /docs/juju/charmed-operator
/docs/juju/user-types-and-abilities /docs/juju/user
/docs/juju/add-credentials /docs/juju/manage-credentials
/docs/juju/list-credentials /docs/juju/manage-credentials
/docs/juju/set-the-default-credential-for-a-cloud /docs/juju/manage-credentials
/docs/juju/relate-a-credential-to-a-model /docs/juju/manage-credentials
/docs/juju/query-a-credential-related-to-a-model /docs/juju/manage-credentials
/docs/juju/update-a-credential /docs/juju/manage-credentials
/docs/juju/remove-a-credential /docs/juju/manage-credentials
/docs/juju/log-in-to-a-controller /docs/juju/manage-users
/docs/juju/remove-a-user-from-a-controller /docs/juju/manage-users
/docs/juju/status-values /docs/juju/status
/docs/juju/deployment-of-juju-agents /docs/juju/deployment
/docs/juju/agent-version /docs/juju/list-of-model-configuration-keys
/docs/juju/apt-mirror /docs/juju/list-of-model-configuration-keys
/docs/juju/automatically-retry-hooks /docs/juju/list-of-model-configuration-keys
/docs/juju/cloudinit-userdata /docs/juju/list-of-model-configuration-keys
/docs/juju/container-inherit-properties /docs/juju/list-of-model-configuration-keys
/docs/juju/disable-network-management /docs/juju/list-of-model-configuration-keys
/docs/juju/enable-os-refresh-update /docs/juju/list-of-model-configuration-keys
/docs/juju/enable-os-upgrade /docs/juju/list-of-model-configuration-keys
/docs/juju/firewall-mode /docs/juju/list-of-model-configuration-keys
/docs/juju/image-stream /docs/juju/list-of-model-configuration-keys
/docs/juju/provisioner-harvest-mode /docs/juju/list-of-model-configuration-keys
/docs/juju/amazon-aws /docs/juju/amazon-ec2
/docs/juju/amazon-elastic-kubernetes-service-(amazon-eks) /docs/juju/amazon-eks
/docs/juju/google-kubernetes-engine-(gke) /docs/juju/google-gke
/docs/juju/azure /docs/juju/microsoft-azure
/docs/juju/azure-kubernetes-service-(azure-aks) /docs/juju/microsoft-aks
/docs/juju/oracle /docs/juju/oracle-oci
/docs/juju/manual-setup /docs/juju/manual
/docs/juju/agent-binary /docs/juju/jujud-binary
/docs/juju/other-clusters /docs/juju/tutorial
/docs/aws-cloud /docs/juju/amazon-ec2
/docs/juju/tutorials /docs/juju/tutorial
/docs/juju/get-started-with-juju /docs/juju/tutorial
/docs/juju/use-lxd-clustering /docs/juju/lxd
/docs/juju/manage-a-lxd-cloud /docs/juju/lxd
/docs/juju/use-lxd-profiles https://juju.is/docs/sdk/lxd-profile-yaml
/docs/juju/control-application-network-ingress /docs/juju/manage-applications
/docs/juju/manage-same-model-integrations /docs/juju/manage-integrations
/docs/juju/manage-cross-model-integrations /docs/juju/manage-offers
/docs/juju/controller-agent /docs/juju/agent
/docs/juju/cross-model-integration /docs/juju/relation
/docs/juju/integration /docs/juju/relation
/docs/juju/manage-integrations /docs/juju/manage-relations
/docs/juju/cloud-image-metadata /docs/juju/manage-metadata
/docs/juju/install-juju /docs/juju/install-and-manage-the-client
/docs/juju/use-juju /docs/juju/install-and-manage-the-client
/docs/juju/back-up-juju /docs/juju/install-and-manage-the-client
/docs/juju/upgrade-juju /docs/juju/install-and-manage-the-client
/docs/juju/manage-juju /docs/juju/install-and-manage-the-client
/docs/juju/the-juju-client /docs/juju/juju-client
/docs/juju/terraform-cli-client /docs/juju/terraform-juju-client
/docs/juju/manage-charm-bundles /docs/juju/manage-charms
/docs/juju/manage-charms /docs/juju/manage-charms-or-bundles
/docs/juju/upgrade-your-juju-deployment-from-2-9-to-3-x /docs/juju/upgrade-your-juju-deployment
/docs/juju/collecting-juju-metrics /docs/juju/manage-controllers
/docs/juju/juju-security /docs/juju/harden-your-deployment
/docs/juju/troubleshooting /docs/juju/troubleshoot-your-deployment
/docs/juju/troubleshoot-additions /docs/juju/troubleshoot-your-deployment
/docs/juju/troubleshoot-clouds /docs/juju/troubleshoot-your-deployment
/docs/juju/working-offline /docs/juju/take-your-deployment-offline
/docs/juju/use-the-localhost-cloud-offline /docs/juju/take-your-deployment-offline
/docs/juju/configure-juju-for-offline-usage /docs/juju/take-your-deployment-offline
/docs/juju/offline-mode-strategies /docs/juju/take-your-deployment-offline
/docs/juju/troubleshoot-model-upgrades /docs/juju/troubleshoot-your-deployment
/docs/juju/troubleshoot-removals /docs/juju/troubleshoot-your-deployment
/docs/juju/juju-version-compatibility-matrix /docs/juju/cross-version-compatibility-in-juju
/docs/juju/agent-introspection-juju-leases /docs/juju/agent-introspection
/docs/juju/agent-introspection-juju-revoke-lease /docs/juju/agent-introspection

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

FYI, I very much like this page pinned to the Docs category. Helps me a lot. :slight_smile:

This currently links to Getting started with Juju - the same target as “Getting started on traditional infrastructure” which is highly confusing until you notice it.

As a minimum it should probably link to Using Kubernetes with Juju and be moved lower (because that document references Getting started with Juju as a prerequisite)

Thanks for raising this @doismellburning. I will get this addressed very shortly :slight_smile:

Edit: updated

I found these 404 broken links:

That’s strange… I must have edited the index incorrectly. I will take a look now.

Edit: the problem was that I had edited the titles of those URLs. Discourse is not sensitive to these changes (it only cares about the post ID).

relate link is broken
(4. Relate applications:)
I believe it should point to Managing relations

1 Like

Hello all, should we post our improvement recommendations here or should the GitHub page be used? I believe the initial drawing is a bit confusing, it seems like there is a flow starting from the left (user) to the right (application) which is not the case. I would suggest a new drawing if it is possible?

@ismailkayi Either here or on Issues · juju/docs · GitHub is fine.

What about this picture do you think is wrong?

@tmihoc , thanks for the reply. It is not wrong but I think it is a bit confusing. When I first look at it from a newbie perspective, it is like flow starting with the user and will trigger juju to connect Charmhub and then CharmSDK and ends up with Application. I believe we can segregate Juju and Charm creation parts more obviously.

Just a quick example of what I meant. I am not saying this one is better btw :slight_smile: but this kind of placement and 2 way arrows might be a bit better for all unexperienced users of Juju. Just an idea.

Thank you for your suggestion!

Regarding 2-way arrows: We deliberately chose not to use them. 1-way arrows following a data or a dependency flow result in much easier to understand stories.

Regarding the arrow from Juju to the Cloud Environment – I’m not sure I understand the suggestion. We try to make sure that going from one entity to another you get a full sentence, but “Juju deploy and manage cloud cloud environment” doesn’t do that (compare with “Juju manages charms from Charmhub”).

Regarding the fact that the bigger diagram unites the Juju and charm SDK story, with a direct line from User to Application: In a sense that is exactly the point we want to make, that with Juju you the user can manage applications. A user typing juju deploy mattermost-k8s in their CLI will in fact cause Juju to connect to Charmhub and get the mattermost-k8s charm, and that charm lands there through the charm SDK after being released there by charm authors who spent time charming the application. Should we segregate the stories? We do currently but we are also considering bringing them closer together, so this diagram would be a step in that direction.

That said, I am always looking to improve things further (e.g., I can see how the arrows from Charmhub to Charm Developer make some leaps…). Happy to discuss further!