warning: environments.yaml schema change
william.reade at canonical.com
Tue Mar 20 10:21:57 UTC 2012
Basic support for EC2 machine constraints will be landing in trunk very
shortly. This includes a change to the environments.yaml schema: the
default-image-id and default-instance-type keys are no longer valid (as
discussed here shortly before Christmas 2011).
In exchange for this, it will become much easier to specify instance
juju deploy foobar --constraints ec2-instance-type=m1.medium
...and to change them later:
juju set-constraints -s foobar ec2-instance-type=m1.large
...or to select machines based on alternative criteria:
juju deploy foobar --constraints "ec2-zone=a arch=i386 mem=3G"
...and of course to update them later:
juju set-constraints -s foobar ec2-zone=b arch=amd64
* EC2 is the only provider that pays any attention to the constraints
* Constraint changes do not cause units to be redeployed; they only
affect provisioning of future machines. Redeploying a service on a
larger instance type involves setting the new service constraints;
adding new units, which will use the new constraints; and retiring the
old units once the new ones have come up.
* Environment constraints are not implemented: services without explicit
constraints will default to "cpu=1 mem=512M", which translates to a
* EC2 architecture will implicitly default to "amd64" if
ec2-instance-type is specified. To start an i386 instance, you can't use
ec2-instance-type directly: you need to specify "arch=i386", along with
cpu and mem constraints satisfied by the instance-type you're looking
for. (The easiest option is just to set "arch=i386", which will get you
a 32-bit m1.small.)
* When multiple instance types can satisfy your constraints (that is,
very frequently: a cg1.4xlarge satisfies "cpu=1 mem=512M" just fine) the
cheapest one will be chosen (based on us-east-1 pricing).
* This mechanism should also take care of image selection (based on
charm series and desired architecture).
* HVM images are not yet supported. Re-reading the EC2 FAQs, it emerges
that this is a proper no-foolin' bug that will prevent anyone from using
cc1.4xlarge, cc2.8xlarge, or cg1.4xlarge instance types.
In light of the HVM issue, I'm going to hold off merging this for a
short time; however, please consider this to be your final warning that
a potentially disruptive change is *imminent*.
More information about the Juju