Conversation
3 tasks
appkins
force-pushed
the
main
branch
8 times, most recently
from
January 15, 2026 02:14
072f412 to
8aa2632
Compare
Signed-off-by: appkins <nbatkins@gmail.com>
Signed-off-by: appkins <nbatkins@gmail.com>
Signed-off-by: appkins <nbatkins@gmail.com>
Signed-off-by: appkins <nbatkins@gmail.com>
The file was a macOS arm64 build output, not something the image build uses. Signed-off-by: appkins <nbatkins@gmail.com>
Signed-off-by: appkins <nbatkins@gmail.com>
Upstream's CI now runs golangci-lint. Annotate the gosec taint findings on operator-supplied values, return errors from ubootenv's run() so the deferred unmount is not skipped by os.Exit, drop an always-constant test parameter, and use unix.BLKRRPART instead of a local constant. Signed-off-by: appkins <nbatkins@gmail.com>
The fork hard-coded linux/arm64 for local builds while upstream and CI use linux/amd64. Use the host's GOARCH by default and allow overriding with BUILD_PLATFORM. Signed-off-by: appkins <nbatkins@gmail.com>
Write Talos Linux metal platform network configuration into the META partition of a freshly imaged disk. Hardware data is retrieved from the Tinkerbell metadata service like rootio does, mapped onto Talos' PlatformConfigSpec document (addresses, links, routes, hostname, resolvers, time servers, external IPs) and stored under META key 0xa using the siderolabs/go-adv module, which is the extracted Talos ADV code behind talosctl meta write. Link names resolve from the Hardware iface_name, else from the MAC via sysfs with udev-style predictable naming (LINK_NAMING=kernel keeps the HookOS name). NETWORK_CONFIG passes a document through verbatim. Also register the cidataio and ubootenv actions in the CI matrices and README table where they were missing. Signed-off-by: appkins <nbatkins@gmail.com>
Upstream added REGISTRY_USERNAME, REGISTRY_PASSWORD and SKIP_VERIFY, and later fixed anonymous pulls from registries that always issue a bearer challenge. The fork's oras v2 rewrite dropped those during the upstream sync; bring them back on the v2 client: static credentials bound to the image's registry host, an always-present token cache so anonymous pulls work, and an opt-in insecure TLS transport. Signed-off-by: appkins <nbatkins@gmail.com>
Set kernel command line arguments inside Talos Linux unified kernel images, for example talos.config=http://<tinkerbell>:7080/2009-04-04/user-data so a node fetches its machine configuration from Tinkerbell. Talos 1.10+ metal images boot through systemd-boot on UEFI and keep the command line in the .cmdline PE section of EFI/Linux/Talos-*.efi, one for the default boot and one per boot profile. The action finds the EFI partition through the GPT, mounts it, and rewrites every .cmdline the way Talos' own assembler lays sections out: everything before the first .cmdline stays byte-identical, later data sections are relocated with the same alignment rules, and header sizes are recomputed. Signed UKIs are refused unless STRIP_SIGNATURE=true. Verified against the Talos v1.14.0 metal image: both command lines updated, the rerun is a no-op, and the image boots under OVMF with the new command line. Signed-off-by: appkins <nbatkins@gmail.com>
Report the PE section index, file offset and size of every .cmdline the action finds, and document the layout of the Image Factory v1.13.10 and upstream v1.14.0 metal images. Signed-off-by: appkins <nbatkins@gmail.com>
Tinkerbell exposes the Hardware object to Workflow templates as .hardware, so a template can render spec.interfaces and metadata.instance to JSON and hand them to the action directly. This removes the dependency on the /metadata endpoint, which today only returns storage fields. Precedence: NETWORK_CONFIG, HARDWARE_SPEC, then MIRROR_HOST. Signed-off-by: appkins <nbatkins@gmail.com>
…ng releases go.mod requires Go 1.26.3 since go-adv was added, but the two fork-authored Dockerfiles still pinned golang:1.24-alpine with GOTOOLCHAIN=local, so their Release jobs failed and fail-fast then cancelled every other action's release. Build them with the same base image as the rest and let each action publish independently. Signed-off-by: appkins <nbatkins@gmail.com>
Both only need a static Go binary: cidataio shells out to sgdisk, partprobe, mkfs.vfat and mount from its Alpine runtime image, and ubootenv is pure Go. Drop the CGO external-linking recipe and the C toolchain packages, build with CGO_ENABLED=0 like upstream, and pin the cidataio runtime image to alpine:3.22. Signed-off-by: appkins <nbatkins@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds a workflow action to write user data, meta-data and user-data to a cloud init volume - to be consumed by nocloud provisioning.
Example
The following template fully implements the
TalosControlPlanerequirements using predictable image paths. No additional configuration is needed to pair Tinkerbell and Talos bootstrap/control plane.Fixes: #
How Has This Been Tested?
Extensively. Using it in a real world environment to write
TalosConfigto a fleet of edge devices.How are existing users impacted? What migration steps/scripts do we need?
No impact, new action.
Checklist:
This pull request introduces a new Tinkerbell action called
cidataio, which automates the creation of a cloud-init (cidata) partition and writes configuration files to it. The changes include adding the new action to the build system, updating CI/CD workflows, and providing documentation and implementation forcidataio. The most important changes are grouped below:Addition of the
cidataioAction:cidataioaction, including its implementation incidataio/main.go, which creates acidatapartition, formats it, mounts it, and writes cloud-init data files from environment variables.cidataioto build and package the action as a container image.cidataioincidataio/README.md, describing its usage, environment variables, and example workflow.Build System and Workflow Updates:
Makefileto includecidataioin the list of buildable actions and made the container repository configurable.Makefilefromlinux/amd64tolinux/arm64.CI/CD Pipeline Enhancements:
.github/workflows/ci.ymland.github/workflows/release.ymlto includecidataioin the matrix of actions to build and release. [1] [2]I have: