Cannot bootstrap due to ""precise" images in RegionOne with arches [amd64 i386]" error

I am having an issue with installing Juju and bootstrapping. I have the Swift storage setup, and the new bucket gets created. The tools have been synced, and all that looks fine.

However when I attempt to bootstrap I get the error: "Cannot start bootstrap instance: no "precise images in RegionOne with arches."

In another bucket [Glance] I do have the Percise AMD64 image within it. I've even added the line for the "public bucket url." However, juju is still having this same issue.

Error:

juju -v bootstrap
2013-07-31 22:08:05 INFO juju provider.go:115 environs/openstack: opening environment "openstack"
2013-07-31 22:08:06 INFO juju provider.go:417 environs/openstack: bootstrapping environment "openstack"
2013-07-31 22:08:16 INFO juju tools.go:26 environs: reading tools with major version 1
2013-07-31 22:08:16 INFO juju tools.go:53 environs: filtering tools by series: precise
2013-07-31 22:08:16 INFO juju tools.go:76 environs: picked newest version: 1.10.0
2013-07-31 22:08:28 ERROR juju supercommand.go:235 command failed: cannot start bootstrap instance: no "precise" images in RegionOne with arches [amd64 i386]
error: cannot start bootstrap instance: no "precise" images in RegionOne with arches [amd64 i386]

The version that I am using is: 1.11.4-raring-amd64

My entire environments file is: [I removed all of the bits about MAAS, Amazon, and local]

default: openstack

environments:
  openstack:
    type: openstack
    admin-secret: f[...]2
    control-bucket: juj[..]2a
    auth-url: http://127.0.0.1:5000/v2.0/
    # default-series: precise
    auth-mode: userpass
    username: admin
    password: [XXXX]
    tenant-name: admin
    region: RegionOne
    public-bucket-url: https://swift.canonistack.canonical.com/v1/AUTH_526ad877f3e3464589dc1145dfeaac60

Solution 1:

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:

  • https://lists.ubuntu.com/archives/juju-dev/2013-August/001324.html

Solution 2:

Please make sure that you have installed the python-glanceclient packet. Otherwise, juju can't find the images.