OpenStack and Juju

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).

Juju points of variation Notes for the OpenStack cloud
setup (chronological order):
CLOUD
supported versions: Any version that supports:
- compute v2 (Nova)
- network v2 (Neutron) (optional)
- volume2 (Cinder) (optional)
- identity v2 or v3 (Keystone)
requirements: TBA
definition: :information_source: 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.
- name: user-defined
- type: openstack
- authentication types: [access-key, userpass]
- regions: [TO BE ADDED]
- cloud-specific model configuration keys: external-network (string)
The network label or UUID to create floating IP addresses on when multiple external networks exist.

network (string)
The network label or UUID to bring machines up on when multiple networks exist.

policy-target-group (string) The UUID of Policy Target Group to use for Policy Targets created.

use-default-secgroup (bool) Whether new machine instances should have the default Openstack security group assigned in addition to juju defined security groups.

use-openstack-gbp (bool) Whether to use Neutrons Group-Based Policy.

CREDENTIAL
definition: If you want to use environment variables (recommended):
Source the OpenStack RC file (see above). Run add-credential and accept the suggested defaults.
CONTROLLER
notes on 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 configure machine image 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.

other (alphabetical order:)
CONSTRAINT
conflicting: [instance-type] vs. [mem, root-disk, cores]
supported?
- allocate-public-ip :white_check_mark:
- arch :white_check_mark:
- container :white_check_mark:
- cores :white_check_mark:
- cpu-power :x:
- image-id :white_check_mark: (Starting with Juju 3.3)
Type: String.
Valid values: An OpenStack image ID.
- instance-role :x:
- instance-type :white_check_mark:
Valid values: Any (cloud admin) user defined OpenStack flavor.
- mem :white_check_mark:
- root-disk :white_check_mark:
- root-disk-source :white_check_mark:
root-disk-source is either local or volume.
- spaces :x:
- tags :x:
- virt-type :white_check_mark:
Valid values: [kvm, lxd].
- zones :white_check_mark:
PLACEMENT DIRECTIVE
<machine> TBA
subnet=... :x:
system-id=... :x:
zone=... :white_check_mark:
MACHINE
RESOURCE (cloud)

Consistent naming, tagging, and the ability to add user-controlled tags to created instances.

:white_check_mark:

Contributors: @hallback

Last updated a month ago. Help improve this document in the forum.