Draft: This document is not authoritative. If you encounter a mistake, please either make corrections directly, or add a comment below if you would prefer.
Juju is an evolving system and supports a wide array of underlying infrastructure. Not all things are possible on all combinations of infrastructure and so this is a general guideline of support for functionality.
| Provider | Instance Creation | Spaces Management | Storage Management | Firewall Management | LXD containers | KVM containers | Container Networking |
|---|---|---|---|---|---|---|---|
| MAAS | Y | Y | Y | - | Y | Y | Y |
| LXD Localhost | Y | - | Y | - | Y | Y | - |
| LXD Cluster | Y | - | Y | Y | Y | Y | - |
| OpenStack | Y | Y | Y | Y | Y | Y | Y |
| AWS | Y | Y | Y | - | Y | Y | Y |
| Y | - | Y | - | Y | Y | - | |
| Azure | Y | - | Y | - | Y | Y | - |
| Oracle | Y | - | Y | - | Y | Y | - |
| Manual | - | - | - | - | Y | Y | - |
Feature Definitions
Instance Creation
Description
Juju can automatically create machine instances on behalf of an administrator. By default, the juju deploy command will use this functionality to automatically provision new capacity.
Providers without this capability require administrators to manually execute juju add-machine ssh:<user>@<host> or juju add-machine winrm:<user>@<host> to register machines with Juju.
Acceptance Criteria
-
juju add-machineprovisions a new machine when no arguments are supplied -
juju deployprovisions a new machine when default arguments are supplied
Spaces
Description
Networks are modelled by Juju as “spaces”. They enable administrators to prevent specific applications from being directly accessed by the Internet.
Acceptance Criteria
The provider supports the following commands:
juju add-spacejuju add-subnetjuju bindjuju reload-spacesjuju subnets-
juju deployrespects thespacesconstraint -
juju add-machinerespects thespacesconstraint
Further Documentation
Storage
Description
Juju interacts with cloud providers’ API to provide persistent storage volumes.
Acceptance Criteria
The provider supports:
juju add-storagejuju add-storage-pooljuju import-filesystemjuju remove-storagejuju remove-storage-pooljuju storagejuju storage-poolsjuju show-storage-
juju deployrespects--attach-storage -
juju deployrespects--storage
Further Documentation
Firewalls
Description
Juju will manage firewalls and security groups on providers where there is an API to manage. Administrators interact with firewall APIs via the juju expose command.
Acceptance Criteria
The provider supports:
-
juju exposeinteracts with a provider’s API to open network access to unit(s) -
juju unexposeinteracts with a provider’s API to restrict network access to unit(s)
LXD containers
Juju directly supports provisioning LXD containers as machines. This can greatly increase application density.
Acceptance criteria
Provider supports the following commands:
juju add-machine lxdjuju deploy --to lxd
KVM containers
Juju directly supports provisioning KVM containers as machines. This can greatly increase application density.
Acceptance criteria
Provider supports the following commands:
juju add-machine kvmjuju deploy --to kvm
Container networking
The provider supports container addresses on the same network as their host.
MAAS and OpenStack allow containers request addresses that are on the same network as the host machines. In this way, a workload placed in a LXD container can be reached by any other service on the same network, containerized or not.