57ba300be4
The source-repositories element will now symlink the install scripts corresponding to the set install type for an element into the install.d directory. Different install types are implemented by elements by writing scripts to do the install type under install.d/<element-name>-<install-type>-install directories. For example, the nova element would provide: nova/install.d/nova-package-install/74-nova nova/install.d/nova-source-install/74-nova source-repositories will create the following symlink for the package install type: $TMP_HOOKS_PATH/install.d/74-nova -> nova-package-install/74-nova Or, for the source install type: $TMP_HOOKS_PATH/install.d/74-nova -> nova-source-install/74-nova Change-Id: I1bfaf39e5a98b2af904fbc6d674dbada30b27ed9
84 lines
3.7 KiB
Markdown
84 lines
3.7 KiB
Markdown
With this element other elements can register their installation source by
|
|
placing their details in the file source-repository-\*. An example
|
|
of an element "custom-element" that wants to retrieve the ironic source
|
|
from git and pbr from a tarball would be
|
|
|
|
*File : elements/custom-element/source-repository-ironic*
|
|
|
|
#<name> <type> <destination> <location> [<ref>]
|
|
# <ref> defaults to master if not specified
|
|
ironic git /usr/local/ironic git://git.openstack.org/openstack/ironic.git
|
|
|
|
*File : elements/custom-element/source-repository-pbr*
|
|
|
|
pbr tar /usr/local/pbr http://tarballs.openstack.org/pbr/pbr-master.tar.gz
|
|
|
|
diskimage-builder will then retrieve the sources specified and place them
|
|
at the directory \<destination\>
|
|
|
|
A number of environment variables can be set by the process calling
|
|
diskimage-builder which can change the details registered by the element, these are
|
|
|
|
DIB_REPOTYPE_<name> : change the registered type
|
|
DIB_REPOLOCATION_<name> : change the registered location
|
|
DIB_REPOREF_<name> : change the registered reference
|
|
|
|
for example if you would like diskimage-builder to get ironic from a local
|
|
mirror you could set DIB_REPOLOCATION_ironic=git://localgitserver/ironic.git
|
|
|
|
Alternatively if you would like to use the keystone element and build an image with
|
|
keystone from a stable branch then you would set DIB_REPOREF_keystone=stable/grizzly
|
|
|
|
If you wish to build an image using code from a gerrit review, you can set
|
|
DIB_REPOLOCATION_<name> and DIB_REPOREF_<name> to the values given by gerrit in the
|
|
fetch/pull section of a review. For example:
|
|
|
|
DIB_REPOLOCATION_nova=https://review.openstack.org/openstack/nova
|
|
DIB_REPOREF_nova=refs/changes/72/61972/8
|
|
|
|
Git sources will be cloned to \<destination\>
|
|
|
|
Tarballs will be extracted to \<destination\>. Tarballs should contain a
|
|
single topleval directory, regardless of the name of this top level directory
|
|
it will be renamed to \<destination\>
|
|
|
|
The package type indicates the element should install from packages onto the
|
|
root filesystem of the image build during the install.d phase.
|
|
|
|
Git and Tarballs are treated as source installs. If the element provides an
|
|
<element-name>-source-install directory under it's install.d hook directory,
|
|
symlinks to the scripts in that directory will be created under install.d for
|
|
the image build. Alternatively for the package install type, if the element
|
|
provides an <element-name>-package-install directory, symlinks will be created
|
|
for those scripts instead.
|
|
|
|
For example, the nova element would provide:
|
|
|
|
nova/install.d/nova-package-install/74-nova
|
|
nova/install.d/nova-source-install/74-nova
|
|
|
|
source-repositories will create the following symlink for the package install
|
|
type:
|
|
|
|
install.d/74-nova -> nova-package-install/74-nova
|
|
|
|
Or, for the source install type:
|
|
|
|
install.d/74-nova -> nova-source-install/74-nova
|
|
|
|
All other scripts that exist under install.d for an element will be executed as
|
|
normal. This allows common install code to live in a script outside of
|
|
<element-name>-package-install or <element-name>-source-install.
|
|
|
|
If multiple elements register a source location with the same <destination>
|
|
then source-repositories will exit with an error. Care should therefore be taken
|
|
to only use elements together that download source to different locations.
|
|
|
|
The repository paths built into the image are stored in
|
|
etc/dib-source-repositories, one repository per line. This permits later review
|
|
of the repositories (by users or by other elements).
|
|
|
|
The repository names and types are written to an environment.d hook script at
|
|
01-source-repositories-environment. This allows later hook scripts during the
|
|
install.d phase to know which install type to use for the element.
|