Giter Site home page Giter Site logo

Proposal 0016, Default Workflows about boots HOT 4 OPEN

Belchy06 avatar Belchy06 commented on July 22, 2024 1
Proposal 0016, Default Workflows

from boots.

Comments (4)

tstromberg avatar tstromberg commented on July 22, 2024 2

Just an update to say that I personally like this idea and feel like it will make Tinkerbell much more user-friendly.

from boots.

displague avatar displague commented on July 22, 2024 2

In the 8/31 Tinkerbell meeting, this proposal was discussed briefly.

I have some thoughts on the overall approach.

Regarding, the registration approach:

  • create hardware with mac
  • push hardware

Tinkerbell should avoid taking on more responsibilities. A default workflow could take on this function.

When attributing workflows as default:

  • grab a template titled 'default'
  • create workflow with new hw id and default template id

Workflows could be matched to hardware ID using some matching system rather than == comparisons.
For example, one component of a matching system could be a regexp pattern. A "Raspberry Pi Default Workflow" could match all Pi MAC Addresses (B8:27:EB:.*, https://www.wireshark.org/tools/oui-lookup.html).

A more comprehensive matching system could take all hardware components into consideration.

Following that pattern, an 'AutoRegister Workflow' (any "default" workflow) could match .* HW IDs.

Questions:

  • Would we need to ensure that some default workflows are executed only once?
  • Would we also need to set the priority of default workflows, enabling auto-register-workflow to run before raspberry-pi-workflow?
  • Can or should the pattern matching workflow executor run as a workflow? (Let a workflow fetch matching workflows, perhaps apply additional filters and then execute these workflows in some sequence)
  • Are there trust issues in allowing the node to self-register, if so, can we enable the necessary trust level?

Cross-posted in discussion tinkerbell/tink#522 (comment)

from boots.

jmpolom avatar jmpolom commented on July 22, 2024

Workflows could be matched to hardware ID using some matching system rather than == comparisons.
For example, one component of a matching system could be a regexp pattern. A "Raspberry Pi Default Workflow" could match all Pi MAC Addresses (B8:27:EB:.*, https://www.wireshark.org/tools/oui-lookup.html).

A more comprehensive matching system could take all hardware components into consideration.

I'm very interested in tinkerbell/boots gaining support to do "wildcard" hardware matching, initially just using a regex to match MAC addresses much like @displague provided as an example. I prefer the paradigm of creating workflows that can match a hardware identifier via some provided (regex) patterns, instead of only allowing a single "default" (both in name and function) template that is auto-registered to the specific hardware that is initially unknown to tinkerbell. I think this would be far more flexible and in effect create "scoped default workflows".

I think it should be left up to the user whether to run a workflow that explicitly registers a specific workflow per piece of hardware (ex: to build an inventory) or simply allow workflows to run as they are matched to a specified identifier pattern. I do like the idea of having a "discovery" workflow that runs and is potentially able to gather much more system information than you receive from a simple DHCP request.

Am I correct in understanding that adding support for an enabling feature like regex matching of MAC addresses would need to be added to the tink server and not boots? Best I can tell from my read of the boots codebase is that boots does not do any hardware matching itself, except in the case of the standalone data model.

from boots.

mmlb avatar mmlb commented on July 22, 2024

We should discuss this in tinkerbell/tink#522. This is a tink feature not so much a boots one an as such doesn't make sense as an issue here.

from boots.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.