juju devel 2.0-beta4 is released
Curtis Hovey-Canonical
curtis at canonical.com
Fri Apr 15 04:38:58 UTC 2016
# juju 2.0-beta4
A new development release of Juju, juju 2.0-beta4, is now available.
This release replaces version 2.0-beta3.
## Getting Juju
Juju 2.0-beta4 is available for Xenial and backported to earlier
series in the following PPA:
https://launchpad.net/~juju/+archive/devel
Windows, Centos, and OS X users will find installers at:
https://launchpad.net/juju-core/+milestone/2.0-beta4
Upgrading to this development releases is not supported.
## The complete release notes available on the Web
The release notes for Juju 2.0-beta4 are very long. They are too large
to post to a list. The complete release notes are published at
https://jujucharms.com/docs/devel/temp-release-notes
## Getting started with Juju 2.0
Juju 2.0 allows you to get started creating models without modifying any
definition files. Just provide your credentials and go! (Note: to
fully understand the new bootstrap experience please see the "New
Bootstrap and Cloud Management Experience" section below)
* LXD provider (requires lxd 2.0.0~rc9 or later):
The LXD provider requires no credentials, so you can create a
controller by just specifying its name:
juju bootstrap <controller name> lxd
Note that the lxdbr0 bridge needs to be properly configured for the lxd
provider to work, for details see:
http://insights.ubuntu.com/2016/04/07/lxd-networking-lxdbr0-explained/
* Public Clouds:
Known public clouds can be listed with juju list-clouds:
juju list-clouds
CLOUD TYPE REGIONS
aws ec2 us-east-1, us-west-1, us-west-2, ...
aws-china ec2 cn-north-1
aws-gov ec2 us-gov-west-1
azure azure japanwest, centralindia, eastus2, ...
azure-china azure chinaeast, chinanorth
cloudsigma cloudsigma mia, sjc, wdc, zrh, hnl
google gce us-east1, us-central1, ...
joyent joyent us-east-1, us-east-2, us-east-3, …
lxd lxd
maas maas
manual manual
rackspace rackspace LON, SYD, HKG, DFW, ORD, IAD
Add your credentials using either:
juju add-credential <cloud>
or
juju add-credential <cloud> -f creds.yaml
or
juju autoload-credentials
When specifying just the cloud, juju add-credential will allow a new
credential to be added interactively. You will be prompted type the
required credential attributes. Example:
juju add-credential maas
credential name: hmaas
replace existing credential? [y/N]: y
auth-type: oauth1
maas-oauth:
credentials added for cloud maas
The new credentials.yaml file at: ~/.local/share/juju/credentials.yaml
The autoload tool will search for existing credentials for AWS,
OpenStack/Rackspace, and Google clouds. You will then be prompted for
which ones you'd like to save.
If you have an existing credential.yaml file, you can also import a
named credential, eg for MAAS
cat credentials.yaml
credentials:
maas:
my-credentials:
auth-type: oauth1
maas-oauth: <mass-oauth-key>
or, for AWS
cat credentials.yaml
credentials:
aws:
default-credential: my-credentials
my-credentials:
auth-type: access-key
access-key: <key>
secret-key: <secret>
Bootstrap using your default credentials:
juju bootstrap <controller name> <cloud>[/region]
Examples:
juju bootstrap aws-controller aws
juju bootstrap mass-controller maas/192.168.0.1
In the MAAS example above, you specify the host address of the MAAS
controller. So to use Juju on MAAS out of the box, you set up a
credentials file (either interactively, or based on the example above)
and then bootstrap. This avoids the need for any cloud configuration.
But it's also possible to set up a named MAAS cloud definition as
explained later.
More details on the new bootstrap experience, including defining private
clouds can be found in the New Bootstrap and Cloud Management Experience
section.
## What's New in Beta4
* Mongo 3.2 is now used when bootstrapping on Xenial hosts
* address-allocation feature flag no longer supported in MAAS provider
* prefer-ipv6 setting is now ignored in all providers
* MAAS 1.9+ provisioned LXD containers now have a bridge per NIC
* Accurate address selection based on spaces (in MAAS)
* extra-bindings support for charms metadata
* network-get hook tool arguments changed
* Juju GUI in the Controller
* Juju Now Respects CharmStore Channels
### Mongo 3.2 Support
Juju will now use Mongo 3.2 for its database, with the new Wired Tiger
storage engine enabled. This is initially only when bootstrapping on
Xenial. Trusty and Wily will be supported soon.
### address-allocation feature flag no longer supported in MAAS provider
In earlier releases, it was possible to get Juju to use static IP
addresses for containers from the same subnet as their host machine,
using the following development feature flag:
JUJU_DEV_FEATURE_FLAGS=address-allocation juju bootstrap ...
This flag is no longer supported and will not be accepted.
### Accurate Address Selection Based on Network Spaces (in MAAS)
MAAS 1.9+ offers native support for Network Spaces, which Juju will
discover and import. This means Juju knows which space any machine
address comes from and can select addresses based on their space. An
example for this improved support is the used by the 'network-get' hook
tool. Earlier versions of Juju (and even this one on providers other
than MAAS) use a simpler address selection based on scope and
lexicographic order.
### network-get Hook Tool Arguments Changed
The new 'network-get' hook tool introduced in 2.0-alpha3 slightly
changed:
Before: network-get -r <relation-id> --primary-address
Now: network-get <binding-name> --primary-address
Instead of taking an (implicit) -r argument with relation ID, the first
expected argument is now a binding name. This can be a name listed
inside the "extra-bindings" section of the charm metadata.yaml, or a
name of a relation (from the "provides", "requires", or "peers"
sections). The output is the same otherwise - a single address returned.
### extra-bindings Support for Charms Metadata
Many charms use a simple model where a relationship with another charm
also indicates there is a network connection between units of those
services. We have utilized this fact to add a network model that allows
system operators to control where those TCP connections are made by
binding the service relation endpoints onto a network space.
However, some charms specifically use relation endpoints as simply a way
to pass configuration around, and the relations don't map directly to
services that are running in that charm and/or networking configuration.
These charms want to be able to express that they have more networking
configuration that an operator wants to control without having yet-
another interface that will never be related to another service.
Juju solves the aforementioned issues by introducing an optional new
section in the charm metadata,yaml. The new section is called "extra-
bindings". Similarly to the peers/provides/requires sections, extra-
bindings contains a list of names, which can be used with 'juju deploy
--bind' like relation names. Unlike relations, you don't have to define
hooks or anything more complex to allow the users of the charm to bind
those names to Juju spaces.
Example: ceph charm's metadata.yaml would look like:
name: ceph
summary: Highly scalable distributed storage
maintainer: OpenStack Charmers <openstack-charmers at lists.ubuntu.com>
description: |
Ceph is a distributed storage and network file system designed to provide
excellent performance, reliability, and scalability.
tags:
- openstack
- storage
- file-servers
- misc
peers:
mon:
interface: ceph
extra-bindings:
cluster:
public:
provides:
nrpe-external-master:
interface: nrpe-external-master
scope: container
…
storage:
osd-devices:
type: block
multiple:
range: 0-
osd-journal:
type: block
multiple:
range: 0-1
As a user then you can deploy this charm and tell Juju to provide
distinct addresses for it on one or more spaces:
juju deploy ~/path/to/charm/ceph --bind 'cluster=admin-api
public=public-api internal-api'
Units of the ceph service will be deployed on machines which have access
to the "admin-api", "public-api", and "internal-api" spaces in MAAS, a
different network interface and address for each binding.
Then, e.g. in a hook of the same charm, running 'network-get cluster
--primary-address' will only return the correct address - the one coming
from the "admin-api" space.
### Juju GUI in the Controller
Juju GUI is now automatically included in every Juju controller after
bootstrapping, thus eliminating the need to additionally deploy the Juju
GUI charm.
In order to open the Juju GUI in the default browser the following
command should be used.
juju gui
The GUI connects to the model that is currently active. You are greeted
with the login window, where you will have to provide the credentials to
access the model. If you want to output your credentials in the
terminal for easier copy/paste into login window, run the GUI with the
'--show-credentials' option.
juju gui --show-credentials
### juju upgrade-gui
The upgrade-gui command downloads the latest published GUI from the
streams and replaces the one on the controller. To verify which versions
of the GUI are available before the upgrade, try:
juju upgrade-gui --list
If you want to upgrade (or downgrade) to a specific version of the GUI,
provide the revision as a parameter to the upgrade-gui command, where
the revision listed by the `juju upgrade-gui --list`. For example:
juju upgrade-gui 2.1.1
If you’d like to try a version of the GUI that has not been published in
the streams and is not listed yet, you are able to provide the blob
either from a charm or from the manually built GUI. Example:
juju upgrade-gui /path/to/release.tar.bz2
In order to upgrade the GUI, you need proper access rights to
the controller. When an administrator upgrades the GUI, the users will
have to reload the open sessions in the browser.
If you don not want to install the GUI into the controller, bootstrap
your controller with the '--no-gui option.
### Juju Now Respects CharmStore Channels
For more information on the new support for channels in the Charm Store
and how they work, please see our
[documentation](https://jujucharms.com/docs/devel/authors-charm-store
#entities-explained) on the subject.
Support for channels has been brought into Juju via command options on the
relevant sub-commands:
juju deploy
Juju upgrade-charm
## Known issues
* juju lxd bridge detection fallback is not reliable
Lp 1570573
* Juju 2.0 no longer supports KVM for local provider
Lp 1547665
* Cannot deploy a dense openstack bundle with native deploy
Lp 1555808
* Cannot add LXD containers in 2.0beta4 on trusty
Lp 1568895
* Address Allocation feature flag still enabled for MAAS provider
in Juju 2.0
Lp 1568925
* Newly created LXD container has zero network devices
Lp 1564395
* LXD containers /etc/network/interfaces as generated by Juju gets
overwritten by LXD container start
Lp 1566801
* juju restore-backup does not complete properly
Lp 1569467
* Credentials files containing Joyent credentials must be updated to
work with beta3 (See "Joyent Provider No Longer Uses Manta Storage")
## Resolved issues
* Certificate error when visiting the embedded juju gui
Lp 1555083
* The client.watchall api command never responds when the model has
no machines
Lp 1560201
* Juju does not fall back to cloud-images if --bootstrap-series not
supplied
Lp 1560625
* Error cannot find network interface "lxcbr0": route ip+net: no
such network interface
Lp 1566589
* Juju cannot bootstrap on xenial without juju-mongodb3.2 package
Lp 1566628
* Agents stuck in "waiting for agent initialization to finish" with
lxd provider
Lp 1567683
* Juju should fallback to juju-mongodb after first failure to find
juju-mongodb3.2
Lp 1568312
* Fallback for mongo packages doesn't include wily
Lp 1568390
* Region names for rackspace should accept caps and lowercase
Lp 1569024
* Jujud fails to start with "could not find a suitable binary for
"0.0/mmapv1""
Lp 1569097
* Enable-ha with placement fails due to invalid jobmanagenetworking
Lp 1569196
* Failed to bootstrap because exec: "mongod": executable file not
found in $path
Lp 1569408
* Proxyupdater api facade does not set notifywatcherid in the result
Lp 1569725
* Provider/azure: creating subnet fails if the environment name is
too long
Lp 1524077
* Add xenial to supported series
Lp 1533262
* Ec2: destroy-controller blows the rate limit trying to delete
security group - can leave instances around
Lp 1537620
* --bootstrap-series can cause "no matching tools available" error
Lp 1538735
* Kill-controller fails on missing volume
Lp 1543223
* Concurent map access in joyent
Lp 1554251
* Help text for juju destroy-controller needs improving
Lp 1555248
* The addcharmwithauthorization api endpoint needs to respect
channels.
Lp 1560511
* Charm channels must be used on the controller.
Lp 1560520
* Charm store macaroons must be used on the controller.
Lp 1560531
* Juju 2 beta3 can't bootstrap to lcy02
Lp 1563576
* Destroy-controller blocks when you've not removed an empty default
model
Lp 1563615
* "juju upgrade-juju --upload-tools" fails after "juju login"
Lp 1563762
* Kvm containers don't use correct parent interface device
Lp 1563853
* Juju2: charms fail with series mismatch when deployed to
containers in bundle
Lp 1564057
* Juju ssh doesn't work with multiple models
Lp 1566237
* Fallback to installing mongo 2.4 if no 3.2 doesn't work
Lp 1567182
* "juju destroy-controller" can leak hosted models
Lp 1567228
* Juju-run does not work on windows hosts
Lp 1426729
* Help text for juju destroy-model needs improving
Lp 1553272
* Help text for juju remove-service needs improving
Lp 1554687
* Help text for juju list-models needs improving
Lp 1556249
* Help text for juju show-cloud needs improving
Lp 1560595
* Help text for juju status needs improving
Lp 1560665
* Help text for juju list-clouds needs improving
Lp 1560667
* Update-clouds message improvement when fully up to date
Lp 1563843
* Region names should be case-insensitive but displayed as lowercase
Lp 1563845
* Help text for juju set-model-config needs improving
Lp 1563923
* Help text for juju get-model-config needs improving
Lp 1563924
* Help text for juju get-model-constraints needs improving
Lp 1563927
* Help text for juju set-model-constraints needs improving
Lp 1563928
* Help text for juju unset-model-config needs improving
Lp 1563938
* Help text for juju update-clouds needs improving
Lp 1563958
* All: mutex's copied by value
Lp 1563628
Finally
We encourage everyone to subscribe the mailing list at
juju at lists.ubuntu.com, or join us on #juju on freenode.
--
Curtis Hovey
Canonical Cloud Development and Operations
http://launchpad.net/~sinzui
More information about the Juju-dev
mailing list