You need to create a simplestreams file for your cloud. The simplest way for now is to use the juju image-metadata command.
Depending on your version of juju-core, it will be juju image-metadata
or juju-metadata generate-image
. The parameters are the same and I hope they are self explanatory. You can source your openrc.sh
file before running it and it will take most parameters from the environment.
You need to have an image already uploaded into your cloud. See the output of the glance list
command and pick a precise 64bits image.
The metadata command will give you two files: index.json and imagemetadata.json. You need to upload these to a bucket called juju-dist, and a path called streams/v1. Like this:
First, create the bucket:
swift post juju-dist
Now give it the proper ACLs:
swift post juju-dist -r '.r:*'
And now upload the generated files:
swift upload juju-dist/streams/v1 imagemetadata.json index.json
Now point your public-bucket-uri
config parameter from your environments.yaml file to your object storage url. To find it, run keystone catalog
and look for the publicURL
address inthe Service: object-store
block. That's what you will put in your juju public-bucket-url
config parameter.
Now you should be able to bootstrap juju with a precise 64bit image (use series: precise
in your environments.yaml
file), assuming you have taken care of the tools.
More information:
Best Answer
The juju openstack provider can also be utilized with the nova/objectstore (s3 equiv) for deployments like these. The object storage requirements are minimal and are used primarily for distribution of charms to machines and some client metadata (ie. not much size, or bandwidth).
https://jujucharms.com/docs/stable/config-openstack