Note
Available as of BOSH Director version v268.7.0
Motivation¶
When deploying instance groups that use compiled releases, if the release is not compiled against the exact stemcell used by the instance group, Bosh will use the release compiled against the most recent compatible stemcell.
This leads to situations where a simple operator action such as "scale up by 1 VM" will detect a newer compiled release and update many VMs.
Consider a manifest without exported_from
- name: bpm url: https://s3.amazonaws.com/bosh-compiled-release-tarballs/bpm-0.12.3-ubuntu-xenial-250.4.tgz version: 0.12.3
If this bpm
release was compiled against ubuntu-xenial/250.4
and it is used by an instance group running on ubuntu-xenial/250.17
,
a deploy will use the bpm
release compiled against ubuntu-xenial/250.4
.
If later, an operator uploads a new bpm release with the same 0.12.3
version,
but compiled against a newer stemcell, ubuntu-xenial/250.9
,
Bosh will use the new release compiled against the newer stemcell.
To lock a compiled release and reduce unexpected VM updates,
use exported_from
in the releases block of your manifest.
Usage¶
To specify which compiled release to use in a deployment, add exported_from
to the release:
releases: - name: bpm url: https://s3.amazonaws.com/bosh-compiled-release-tarballs/bpm-0.12.3-ubuntu-xenial-250.4.tgz version: 0.12.3 exported_from: - os: ubuntu-xenial version: 250.4
A deployment with this release specified will always use the packages from this release
compiled against 250.4
and will not update the packages
when newer releases are uploaded.
To create a compiled release, follow the instructions on the compiled releases page
Why an array?¶
exported_from
is an array to support future use cases, such as matching multiple stemcells.
Currently, only the first entry in exported_from
is used.
Caveats¶
-
The
exported_from
field is designed for compiled releases. If using a source release withexported_from
, bosh will not compile the release packages during deployment. -
The stemcell specified in
exported_from
must be compatible with the stemcell used by the instance group. This means they have the sameos
and the same majorversion
. -
exported_from
is distinct from thestemcell
block in a release.stemcell
is used when downloading a release from aurl
. It does not tell bosh which compiled packages to use in a deployment.