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

_______________________________________________
OpenStack-Infra mailing list
OpenStack-Infra@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-infra

Reply via email to