[OpenStack-Infra] [nodepool] Restricting images to specific nodepool builders
Ian Wienand
iwienand at redhat.com
Mon Feb 19 03:25:34 UTC 2018
Hi,
How should we go about restricting certain image builds to specific
nodepool builder instances? My immediate issue is with ARM64 image
builds, which I only want to happen on a builder hosted in an ARM64
cloud.
Currently, the builders go through the image list and check "is the
existing image missing or too old, if so, build" [1]. Additionally,
all builders share a configuration file [2]; so builders don't know
"who they are".
I'd propose we add an arbitrary tag/match system so that builders can
pickup only those builds they mark themselves capable of building?
e.g. diskimages would specify required builder tags similar to:
---
diskimages:
- name: arm64-ubuntu-xenial
elements:
- block-device-efi
- vm
- ubuntu-minimal
...
env-vars:
TMPDIR: /opt/dib_tmp
DIB_CHECKSUM: '1'
...
builder-requires:
architecture: arm64
---
The nodepool.yaml would grow another section similar:
---
builder-provides:
architecture: arm64
something_else_unique_about_this_buidler: true
---
For OpenStack, we would template this section in the config file via
puppet in [2], ensuring above that only our theoretical ARM64 build
machine had that section in it's config.
The nodepool-buidler build loop can then check that its
builder-provides section has all the tags specified in an image's
"builder-requires" section before deciding to start building.
Thoughts welcome :)
-i
[1] https://git.openstack.org/cgit/openstack-infra/nodepool/tree/nodepool/builder.py#n607
[2] https://git.openstack.org/cgit/openstack-infra/project-config/tree/nodepool/nodepool.yaml
More information about the OpenStack-Infra
mailing list