Comments (4)
Hmm well this is actually a tough question as to get user data you need to stuff it into hardware.metadata.instance.userdata. Which is one of those hidden packet ways things that is going on that I want to get rid of but I think needs to be done with a proper "Instance" object hence the instance proposal. Because as it is right now there's no well-defined way of doing it, on purpose.
As things stand today, this is in the "up to the operator how to serve and how to fetch it via workflow" area, at least w/o going through with the proposal. Hegel has an envvar tunable where the operator can configure where to grab the data from to serve both /metadata and /userdata endpoints. BUT no such var exists for the EC2 style metadata requests cloud-init does. So that means a code change to Hegel instead of just an envvar change.
IMO its just easier/better for everyone involved if we define some kind of OS+unique-per-installa-info like we do in EquinixMetal land.
And I think the hardware.metadata.instance.userdata (hegel's default today) should then become hardware.instance.userdata if the proposal is accepted (or w/e name we come up with) which means it'll impact CAPT.
from cluster-api-provider-tinkerbell.
Thanks, @mmlb for the context you shared with us. Now, I am sure the instance proposal will be accepted and in any case the unstructured metadata object as it is today won't stay forever. No matter what I presume it means a BC break. A "not that small one".
So, this should not stop us to get CAPT v0.1.0 Tech Preview out, because Tinkerbell is not v1.0.0 and we expect things to change today.
So how do we do it? If we pass a user data today as hardware.metadata.instance.userdata
will Ubuntu (not the packet one, but the official one) pick up the user data in the right way? or not?
Even if we accept the instance proposal today I presume the actual implementation will be a 2021 kind of thing, right? CAPT v0.1.0 has to move its first steps in 2020.
IMO its just easier/better for everyone involved if we define some kind of OS+unique-per-installa-info like we do in EquinixMetal land.
Can you elaborate because I don't know what we do at EquinixMetal land.
from cluster-api-provider-tinkerbell.
Thanks, @mmlb for the context you shared with us. Now, I am sure the instance proposal will be accepted and in any case the unstructured metadata object as it is today won't stay forever. No matter what I presume it means a BC break. A "not that small one".
Very much not a small one :D.
So, this should not stop us to get CAPT v0.1.0 Tech Preview out, because Tinkerbell is not v1.0.0 and we expect things to change today.
So how do we do it? If we pass a user data today as
hardware.metadata.instance.userdata
will Ubuntu (not the packet one, but the official one) pick up the user data in the right way? or not?
It should work but you'd need to go in and configure cloud-init after laying down the image. We need tell cloud-init where and in what format it can fetch the cloud-config data. Here's how we do it in EM production today: https://github.com/tinkerbell/osie/blob/master/docker/scripts/osie.sh#L349-L355
Even if we accept the instance proposal today I presume the actual implementation will be a 2021 kind of thing, right? CAPT v0.1.0 has to move its first steps in 2020.
Yep
IMO its just easier/better for everyone involved if we define some kind of OS+unique-per-installa-info like we do in EquinixMetal land.
Can you elaborate because I don't know what we do at EquinixMetal land.
Lets have this part over at the proposal instead.
from cluster-api-provider-tinkerbell.
Closing, as this has already been completed for the initial tech preview.
from cluster-api-provider-tinkerbell.
Related Issues (20)
- Update Tink dependency HOT 1
- v0.4 HOT 1
- Remove boilerplate and associated validation code
- can we add CAPT operators to operatorhub.io? HOT 2
- Investigate CAPI upgrades
- Upgrade Go version to 1.19
- Move away from tools.go
- Use `actions/setup-go` instead of our own wrapper HOT 1
- Possible race condition
- Consume Tink v1alpha2 APIs
- how to try capt on real hardware HOT 3
- Default mirror setting missing?
- Add Rufio to the quickstart
- v0.5.0 release
- Same Hardware assigned to multiple TinkerbellMachines when maxUnavailable >= 2 in MachineDeployment HOT 2
- Add Flatcar systemd-sysext how to HOT 1
- Implement retries for BMC interactions
- release process builds a broken infrastructure-components.yaml
- Update how network booting is disabled
- TinkerbellMachine's cannot be deleted when the bound Hardware doesn't exist
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cluster-api-provider-tinkerbell.