When both --bootstrap-series and the "default-series" environment variable are different, juju fails to bootstrap with "no matching tools." When they match, or one is not specified, the bootstrap succeeds.
This was observed with revision-build 3545 and 3513.
Full log:
$ JUJU_HOME=$JUJU_HOME/jes-homes/bootstrap-args-ab /home/abentley/canonical/juju-versions/2.0-alpha2-3545/usr/lib/juju-2.0-alpha2/bin/juju --debug bootstrap -e bootstrap-args-ab --bootstrap-series trusty
2016-01-27 20:33:54 INFO juju.cmd supercommand.go:58 running juju [2.0-alpha2 gc]
2016-01-27 20:33:54 WARNING juju.environs config.go:168 Config attribute "tools-metadata-url" (https://us-east.manta.joyent.com/cpcjoyentsupport/public/juju-dist/parallel-testing/agents) is deprecated.
It is replaced by "agent-metadata-url" attribute.
Your configuration should be updated to set "agent-metadata-url" as follows
agent-metadata-url: https://us-east.manta.joyent.com/cpcjoyentsupport/public/juju-dist/parallel-testing/agents.
2016-01-27 20:33:54 WARNING juju.environs config.go:168 Config attribute "tools-metadata-url" (https://us-east.manta.joyent.com/cpcjoyentsupport/public/juju-dist/parallel-testing/agents) is deprecated.
It is replaced by "agent-metadata-url" attribute.
Your configuration should be updated to set "agent-metadata-url" as follows
agent-metadata-url: https://us-east.manta.joyent.com/cpcjoyentsupport/public/juju-dist/parallel-testing/agents.
2016-01-27 20:33:56 DEBUG juju.environs.configstore disk.go:326 writing cache file
2016-01-27 20:33:56 DEBUG juju.environs imagemetadata.go:111 using image datasource "default cloud images"
2016-01-27 20:33:56 DEBUG juju.environs imagemetadata.go:111 using image datasource "default ubuntu cloud images"
2016-01-27 20:33:58 DEBUG juju.environs.simplestreams simplestreams.go:430 read metadata index at "http://cloud-images.ubuntu.com/releases/streams/v1/index.sjson"
2016-01-27 20:33:58 DEBUG juju.environs.simplestreams simplestreams.go:969 metadata: &{map[com.ubuntu.cloud:server:15.04:amd64:{vivid 15.04 amd64 map[20150807:0xc82044c6c0 20160114.1:0xc82044c600]} com.ubuntu.cloud:server:12.04:amd64:{precise 12.04 amd64 map[20140806:0xc820311380 20160114:0xc8203114a0 20140408:0xc820311560 20140227:0xc820311680 20150127:0xc820311740 20140926:0xc820311a40 20150225.1:0xc8203111a0 20140519:0xc8203112c0 20150709:0xc820311800 20140929:0xc8203118c0 20140608:0xc820311980]} com.ubuntu.cloud:server:14.04:amd64:{trusty 14.04 amd64 map[20140519:0xc820311c80 20150225.2:0xc820311d40 20140608:0xc82044c180 20140926:0xc82044c240 20160114.5:0xc820311e00 20140416:0xc820311f20 20140729:0xc82044c000 20140929:0xc82044c0c0 20150708:0xc82044c300]} com.ubuntu.cloud:server:15.10:amd64:{wily 15.10 amd64 map[20151021:0xc82044c420 20160114:0xc82044c4e0]}] map[crsn:map[euww1:map[endpoint:https://eu-ams-1.api.joyentcloud.com region:eu-ams-1] ussw1:map[region:us-sw-1 endpoint:https://us-sw-1.api.joyentcloud.com] usee3:map[region:us-east-3 endpoint:https://us-east-3.api.joyentcloud.com] usee2:map[region:us-east-2 endpoint:https://us-east-2.api.joyentcloud.com] usee1:map[region:us-east-1 endpoint:https://us-east-1.api.joyentcloud.com] usww1:map[region:us-west-1 endpoint:https://us-west-1.api.joyentcloud.com]]] Mon, 25 Jan 2016 14:14:06 +0000 products:1.0 com.ubuntu.cloud:released:joyent }
2016-01-27 20:33:59 INFO juju.cmd.juju bootstrap.go:297 combined bootstrap constraints:
2016-01-27 20:33:59 INFO juju.network network.go:248 setting prefer-ipv6 to true
2016-01-27 20:34:02 INFO cmd cmd.go:129 Bootstrapping environment "bootstrap-args-ab"
2016-01-27 20:34:02 DEBUG juju.environs.bootstrap bootstrap.go:137 environment "bootstrap-args-ab" supports service/machine networks: false
2016-01-27 20:34:02 DEBUG juju.environs.bootstrap bootstrap.go:139 network management by juju enabled: true
2016-01-27 20:34:02 INFO juju.environs.bootstrap tools.go:89 looking for bootstrap tools: version=2.0-alpha2
2016-01-27 20:34:02 INFO juju.environs.tools tools.go:86 finding tools in stream "revision-build-3545"
2016-01-27 20:34:02 INFO juju.environs.tools tools.go:88 reading tools with major.minor version 2.0
2016-01-27 20:34:02 INFO juju.environs.tools tools.go:96 filtering tools by version: 2.0-alpha2
2016-01-27 20:34:02 INFO juju.environs.tools tools.go:99 filtering tools by series: trusty
2016-01-27 20:34:02 DEBUG juju.environs.tools urls.go:108 trying datasource "keystone catalog"
2016-01-27 20:34:03 DEBUG juju.environs.simplestreams simplestreams.go:430 read metadata index at "https://us-east.manta.joyent.com/cpcjoyentsupport/public/juju-dist/parallel-testing/agents/streams/v1/index2.json"
2016-01-27 20:34:04 DEBUG juju.environs.simplestreams simplestreams.go:969 metadata: &{map[com.ubuntu.juju:14.04:ppc64:{trusty ppc64 map[20160125:0xc820475920]} com.ubuntu.juju:15.04:i386:{vivid i386 map[20160125:0xc82044c660]} com.ubuntu.juju:15.10:ppc64el:{wily ppc64el map[20160125:0xc82044d140]} com.ubuntu.juju:win2012hv:amd64:{win2012hv amd64 map[20160126:0xc82044de60 20160125:0xc82044dda0]} com.ubuntu.juju:14.04:arm64:{trusty arm64 map[20160125:0xc8204753e0]} com.ubuntu.juju:14.10:i386:{utopic i386 map[20160125:0xc820475f80]} com.ubuntu.juju:14.10:ppc64el:{utopic ppc64el map[20160125:0xc82044c1e0]} com.ubuntu.juju:15.04:arm64:{vivid arm64 map[20160125:0xc82044c420]} com.ubuntu.juju:15.10:armhf:{wily armhf map[20160125:0xc82044cde0]} com.ubuntu.juju:16.04:amd64:{xenial amd64 map[20160125:0xc82044d260 20160126:0xc82044d320]} com.ubuntu.juju:16.04:ppc64el:{xenial 1.25.3 ppc64el map[20160125:0xc82044d8c0]} com.ubuntu.juju:win8:amd64:{win8 amd64 map[20160125:0xc820404720 20160126:0xc8204047e0]} com.ubuntu.juju:13.10:armhf:{saucy armhf map[20160125:0xc820474f00]} com.ubuntu.juju:14.04:amd64:{trusty amd64 map[20160125:0xc8204751a0 20160126:0xc820475260]} com.ubuntu.juju:14.04:armhf:{trusty armhf map[20160125:0xc820475500]} com.ubuntu.juju:14.10:amd64:{utopic amd64 map[20160125:0xc820475c20]} com.ubuntu.juju:14.10:arm64:{utopic arm64 map[20160125:0xc820475d40]} com.ubuntu.juju:14.10:ppc64:{utopic ppc64 map[20160125:0xc82044c0c0]} com.ubuntu.juju:15.10:ppc64:{wily ppc64 map[20160125:0xc82044d020]} com.ubuntu.juju:16.04:arm64:{xenial 1.25.3 arm64 map[20160125:0xc82044d440]} com.ubuntu.juju:12.04:i386:{precise i386 map[20160125:0xc820474720]} com.ubuntu.juju:15.04:ppc64:{vivid ppc64 map[20160125:0xc82044c780]} com.ubuntu.juju:centos7:amd64:{centos7 amd64 map[20160125:0xc82044d9e0 20160126:0xc82044daa0]} com.ubuntu.juju:13.04:amd64:{raring amd64 map[20160125:0xc820474ae0]} com.ubuntu.juju:13.10:i386:{saucy i386 map[20160125:0xc820475080]} com.ubuntu.juju:14.04:i386:{trusty i386 map[20160125:0xc820475620 20160126:0xc8204756e0]} com.ubuntu.juju:14.04:powerpc:{trusty powerpc map[20160125:0xc820475800]} com.ubuntu.juju:15.10:amd64:{wily amd64 map[20160125:0xc82044c9c0 20160126:0xc82044cae0]} com.ubuntu.juju:15.10:i386:{wily i386 map[20160125:0xc82044cf00]} com.ubuntu.juju:win2012hvr2:amd64:{win2012hvr2 amd64 map[20160125:0xc82044df80 20160126:0xc820404060]} com.ubuntu.juju:12.04:armhf:{precise armhf map[20160125:0xc8204743c0]} com.ubuntu.juju:14.10:armhf:{utopic armhf map[20160125:0xc820475e60]} com.ubuntu.juju:15.04:amd64:{vivid amd64 map[20160125:0xc82044c300]} com.ubuntu.juju:15.04:armhf:{vivid armhf map[20160125:0xc82044c540]} com.ubuntu.juju:win2012r2:amd64:{win2012r2 amd64 map[20160125:0xc820404180 20160126:0xc820404240]} com.ubuntu.juju:12.04:amd64:{precise amd64 map[20160125:0xc8204741e0 20160126:0xc8204742a0]} com.ubuntu.juju:12.10:i386:{quantal i386 map[20160125:0xc8204749c0]} com.ubuntu.juju:13.04:i386:{raring i386 map[20160125:0xc820474c00]} com.ubuntu.juju:13.10:amd64:{saucy amd64 map[20160125:0xc820474d80]} com.ubuntu.juju:14.04:ppc64el:{trusty ppc64el map[20160125:0xc820475a40 20160126:0xc820475b00]} com.ubuntu.juju:15.10:arm64:{wily arm64 map[20160125:0xc82044cc00 20160126:0xc82044ccc0]} com.ubuntu.juju:16.04:i386:{xenial 1.25.3 i386 map[20160125:0xc82044d680]} com.ubuntu.juju:16.04:ppc64:{xenial 1.25.3 ppc64 map[20160125:0xc82044d7a0]} com.ubuntu.juju:12.10:amd64:{quantal amd64 map[20160125:0xc8204748a0]} com.ubuntu.juju:win81:amd64:{win81 amd64 map[20160125:0xc820404540 20160126:0xc820404600]} com.ubuntu.juju:win7:amd64:{win7 amd64 map[20160125:0xc820404360 20160126:0xc820404420]} com.ubuntu.juju:16.04:armhf:{xenial 1.25.3 armhf map[20160125:0xc82044d560]} com.ubuntu.juju:win2012:amd64:{win2012 amd64 map[20160126:0xc82044dc80 20160125:0xc82044dbc0]} com.ubuntu.juju:15.04:ppc64el:{vivid ppc64el map[20160125:0xc82044c8a0]}] map[] Tue, 26 Jan 2016 23:20:42 +0000 products:1.0 com.ubuntu.juju:revision-build-3545:tools }
2016-01-27 20:34:04 DEBUG juju.environs imagemetadata.go:111 using image datasource "default cloud images"
2016-01-27 20:34:04 DEBUG juju.environs imagemetadata.go:111 using image datasource "default ubuntu cloud images"
2016-01-27 20:34:06 DEBUG juju.environs.simplestreams simplestreams.go:430 read metadata index at "http://cloud-images.ubuntu.com/releases/streams/v1/index.sjson"
2016-01-27 20:34:06 DEBUG juju.environs.simplestreams simplestreams.go:969 metadata: &{map[com.ubuntu.cloud:server:12.04:amd64:{precise 12.04 amd64 map[20140806:0xc820671ec0 20160114:0xc820671f80 20140408:0xc82090a060 20140926:0xc82090a4e0 20150225.1:0xc820671d40 20140519:0xc820671e00 20140227:0xc82090a120 20150127:0xc82090a1e0 20150709:0xc82090a2a0 20140929:0xc82090a360 20140608:0xc82090a420]} com.ubuntu.cloud:server:14.04:amd64:{trusty 14.04 amd64 map[20150225.2:0xc82090a6c0 20140416:0xc82090a840 20140729:0xc82090a900 20140929:0xc82090a9c0 20140608:0xc82090aa80 20140519:0xc82090a600 20140926:0xc82090ab40 20150708:0xc82090ac00 20160114.5:0xc82090a780]} com.ubuntu.cloud:server:15.10:amd64:{wily 15.10 amd64 map[20151021:0xc82090ad20 20160114:0xc82090ade0]} com.ubuntu.cloud:server:15.04:amd64:{vivid 15.04 amd64 map[20160114.1:0xc82090af00 20150807:0xc82090afc0]}] map[crsn:map[usee2:map[region:us-east-2 endpoint:https://us-east-2.api.joyentcloud.com] usee1:map[region:us-east-1 endpoint:https://us-east-1.api.joyentcloud.com] usww1:map[region:us-west-1 endpoint:https://us-west-1.api.joyentcloud.com] euww1:map[region:eu-ams-1 endpoint:https://eu-ams-1.api.joyentcloud.com] ussw1:map[endpoint:https://us-sw-1.api.joyentcloud.com region:us-sw-1] usee3:map[region:us-east-3 endpoint:https://us-east-3.api.joyentcloud.com]]] Mon, 25 Jan 2016 14:14:06 +0000 products:1.0 com.ubuntu.cloud:released:joyent }
2016-01-27 20:34:06 INFO cmd cmd.go:129 Starting new instance for initial state server
2016-01-27 20:34:06 DEBUG juju.cmd.juju common.go:101 Destroying environment.
2016-01-27 20:34:06 INFO cmd cmd.go:129 Bootstrap failed, destroying environment
2016-01-27 20:34:06 INFO juju.provider.common destroy.go:22 destroying environment "bootstrap-args-ab"
2016-01-27 20:34:06 INFO juju.provider.common destroy.go:33 destroying instances
2016-01-27 20:34:08 INFO juju.provider.common destroy.go:53 destroying storage
2016-01-27 20:34:09 ERROR cmd supercommand.go:448 failed to bootstrap environment: no matching tools available
Although both default-series and --bootstrap-series can determine which series is used for the initial controller, they do not mean the same thing. Default-series is also an ongoing default for all instances. I think it is reasonable for them to have different values, but if not, then the failure mode should be better.