List of supported clouds > OpenStack
This document describes details specific to using your existing OpenStack cloud with Juju.
See more: OpenStack
When using the OpenStack cloud with Juju, it is important to keep in mind that it is a (1) machine cloud and (2) not some other cloud.
See more: Cloud differences in Juju
As the differences related to (1) are already documented generically in our Tutorial, How-to guides, and Reference docs, here we record just those that follow from (2).
Supported cloud versions
Any version that supports:
- compute v2 (Nova)
- network v2 (Neutron) (optional)
- volume2 (Cinder) (optional)
- identity v2 or v3 (Keystone)
Notes on juju add-cloud
Type in Juju: openstack
.
Name in Juju: User-defined.
If you want to use the novarc file (recommended):
Source the OpenStack RC file (source <path to file>
). This will allow Juju to detect values from preset OpenStack environment variables. Run add-cloud
in interactive mode and accept the suggested defaults.
Notes on juju add-credential
If you want to use environment variables (recommended):
Source the OpenStack RC file (see above). Run add-credential
and accept the suggested defaults.
Authentication types
userpass
Attributes:
- username: The username to authenticate with. (required)
- password: The password for the specified username. (required)
- tenant-name: The OpenStack tenant name. (optional)
- tenant-id: The Openstack tenant ID (optional)
- version: The Openstack identity version (optional)
- domain-name: The OpenStack domain name. (optional)
- project-domain-name: The OpenStack project domain name. (optional)
- user-domain-name: The OpenStack user domain name. (optional)
Notes on juju bootstrap
You will need to create an OpenStack machine metadata. If the metadata is available locally, you can pass it to Juju via juju bootstrap ... --metadata-source <path to metadata simplestreams
.
> See more: How to manage metadata
If your cloud has multiple private networks: You will need to specify the one that you want the instances to boot from via juju bootstrap ... --model-default network=<network uuid or name>
.
If your cloud’s topology requires that its instances are accessed via floating IP addresses: Pass the allocate-public-ip=true
(see constraints below) as a bootstrap constraint.
Cloud-specific model configuration keys
external-network
The network label or UUID to create floating IP addresses on when multiple external networks exist.
type | string |
default value | “” |
immutable | false |
mandatory | false |
use-openstack-gbp
Whether to use Neutrons Group-Based Policy
type | bool |
default value | false |
immutable | false |
mandatory | false |
policy-target-group
The UUID of Policy Target Group to use for Policy Targets created.
type | string |
default value | “” |
immutable | false |
mandatory | false |
use-default-secgroup
Whether new machine instances should have the “default” Openstack security group assigned in addition to juju defined security groups.
type | bool |
default value | false |
immutable | false |
mandatory | false |
network
The network label or UUID to bring machines up on when multiple networks exist.
type | string |
default value | “” |
immutable | false |
mandatory | false |
Supported constraints
Juju points of variation | Notes for the OpenStack cloud |
---|---|
CONSTRAINT | |
conflicting: | [instance-type] vs. [mem, root-disk, cores] |
supported? | |
- allocate-public-ip |
|
- arch |
|
- container |
|
- cores |
|
- cpu-power |
|
- image-id |
(Starting with Juju 3.3) Type: String. Valid values: An OpenStack image ID. |
- instance-role |
|
- instance-type |
Valid values: Any (cloud admin) user defined OpenStack flavor. |
- mem |
|
- root-disk |
|
- root-disk-source |
root-disk-source is either local or volume . |
- spaces |
|
- tags |
|
- virt-type |
Valid values: [kvm, lxd] . |
- zones |
|
PLACEMENT DIRECTIVE | |
<machine> |
TBA |
subnet=... |
|
system-id=... |
|
zone=... |
|
MACHINE | – |
RESOURCE (cloud) Consistent naming, tagging, and the ability to add user-controlled tags to created instances. |
Contributors: @acsgn, @gerdner, @hallback, @tmihoc, @wallyworld