redhat-openstack / ansible-role-tripleo-image-build

An ansible role used to create and publish quickstart built images
Apache License 2.0
5 stars 3 forks source link

abstract: images built (and metadata needed to do so) #12

Closed halcyondude closed 8 years ago

halcyondude commented 8 years ago

The current implementation has 2 disk-image-create passes, both hard coded (ironic python agent and overcloud-full). Older (and future) versions will require differences (e.g. discovery ramdisk for Kilo).

This issue tracks migrating these 2 hard coded passes (IPA, overcloud) to a declarative, data-driven idiom.

We will specify via YML a list of images to build. For each image the following shall be declarable:

  1. Name
  2. DIB elements
  3. DIB packages
  4. Custom env vars

Generating disk images will merely be a traversal of this list, and will maintain ability to rundisk-image-create tasks async, to leverage multi-core HW and nice disk subsystems/arrays.

halcyondude commented 8 years ago

WIP: https://review.gerrithub.io/#/c/273340/ feedback heartily welcomed

halcyondude commented 8 years ago

Now that we have tripleo-common support merged (vs. thin DIB wrapper), work here is proceeding.

halcyondude commented 8 years ago

After having fingers in this a bit, I'm headed in the following direction:

Current implementation The yaml format describing the images that tripleo-common expects is presently something we generate from jinja templates (hard coded) that ref a gaggle of env variables (artibdib*). We hard code the templates (one for IPA, one for overcloud). This allows us to run the image builds (using tripleo-common mechanism via python library) in parallel as ansible async tasks. This...

Working on this now

halcyondude commented 8 years ago

After discussion with @bcrochet going to look at adding an env dict to the yaml we pass to tripleo-common. There are a set of ENV variables that DIB uses to override (vs. command line args). In practice we need these. The corresponding change to upstream tripleo-common will allow for specifying env variables in the yaml, but will still allow for overriding via env (to remain consistent...ENV block wins all fights). Specifically we need the following:

FYI: @trown @weshayutin @bcrochet

halcyondude commented 8 years ago

WIP: https://review.gerrithub.io/#/c/276629/

halcyondude commented 8 years ago

tripleo-common change to have env variables as part of yaml input just merged.

https://github.com/openstack/tripleo-common/commit/b98590791c060928cbe43ee59082ad3cb684531e

proceeding...

halcyondude commented 8 years ago

https://review.gerrithub.io/#/c/276629/ is no longer WIP, waiting on gates to merge.