Removing Juju objects

This section looks at how to remove the various objects you will encounter as you work with Juju. These are:

  • applications
  • units
  • machines
  • relations

To remove a model or a controller see the Models and Controllers pages respectively.

For guidance on what to do when a removal does not apply cleanly consult the Troubleshooting removals page.

Removing applications

An application can be removed with:

juju remove-application <application-name>

If dynamic storage is in use, the storage will, by default, be detached and left alive in the model. However, the --destroy-storage option can be used to instruct Juju to destroy the storage once detached. See Using Juju Storage for details on dynamic storage.

Note: Removing an application which has active relations with another running application will terminate that relation. Charms are written to handle this, but be aware that the other application may no longer work as expected. To remove relations between deployed applications, see the section below.

Removing units

It is possible to remove individual units instead of the entire application (i.e. all the units):

juju remove-unit postgresql/2

In the case that the removed unit is the only one running the corresponding machine will also be removed unless any of the following is true for that machine:

  • it was created with juju add-machine
  • it is not being used as the only controller
  • it is not hosting Juju-managed containers (KVM guests or LXD containers)

To remove multiple units:

juju remove-unit mediawiki/1 mediawiki/3 mediawiki/5 mysql/2

The --destroy-storage option is available for this command as it is for the remove-application command above.

Removing machines

Juju machines can be removed like this:

juju remove-machine <number>

However, it is not possible to remove a machine which is currently allocated to a unit. If attempted, this message will be emitted:

error: no machines were destroyed: machine 3 has unit "mysql/0" assigned

By default, when a Juju machine is removed, the backing system, typically a cloud instance, is also destroyed. The --keep-instance option overrides this; it allows the instance to be left running.

Removing relations

A relation can be removed easily enough:

juju remove-relation mediawiki mysql

In cases where there is more than one relation between the two applications, it is necessary to specify the interface at least once:

juju remove-relation mediawiki mysql:db