https://github.com/oxidecomputer/omni-infra-provider-oxide
Sidero Omni infrastructure provider for Oxide.
https://github.com/oxidecomputer/omni-infra-provider-oxide
Last synced: 5 months ago
JSON representation
Sidero Omni infrastructure provider for Oxide.
- Host: GitHub
- URL: https://github.com/oxidecomputer/omni-infra-provider-oxide
- Owner: oxidecomputer
- License: mpl-2.0
- Created: 2025-08-11T18:18:37.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-01-27T22:15:31.000Z (5 months ago)
- Last Synced: 2026-01-28T10:57:46.372Z (5 months ago)
- Language: Go
- Homepage:
- Size: 45.9 KB
- Stars: 5
- Watchers: 0
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.adoc
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
- awesome-talos - Oxide
README
= Oxide Omni Infrastructure Provider
The Oxide Omni infrastructure provider is used to provision Talos Linux
instances on Oxide and connect those instances to Omni where they will be
configured as nodes in a Kubernetes cluster.
== Usage
Please note the following before using the Oxide Omni infrastructure provider.
* The infrastructure provider is a dynamic provider, meaning it provisions and
deprovisions Oxide instances on demand as Omni users create and scale Kubernetes
clusters.
* The infrastructure provider is designed to manage resources within a single
Oxide silo. To support multiple Oxide silos, run a separate instance of the
infrastructure provider using a different provider ID. The infrastructure
provider uses machine classes to specify the Oxide project instances are
provisioned within.
With the above noted, let's run the Oxide Omni infrastructure provider.
. Create the infrastructure provider in Omni.
+
[source,shell]
----
omnictl --omniconfig omniconfig.yaml infraprovider create oxide
----
. Export the `OMNI_ENDPOINT` and `OMNI_SERVICE_ACCOUNT_KEY` environment variables.
+
[source,shell]
----
export OMNI_ENDPOINT=https://example.na-west-1.omni.siderolabs.io:443
export OMNI_SERVICE_ACCOUNT_KEY=ZXhhbXBsZQ==
----
. Export the `OXIDE_HOST` and `OXIDE_TOKEN` environment variables.
+
[source,shell]
----
export OXIDE_HOST='https://oxide.sys.example.com'
export OXIDE_TOKEN='oxide-token-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
----
. Run the infrastructure provider. Update `${TAG}` to use the latest stable
Oxide infrastructure provider, without the `v` prefix, which can be found on
https://github.com/oxidecomputer/omni-infra-provider-oxide/releases[GitHub
releases].
+
----
docker run --rm \
--env OMNI_ENDPOINT \
--env OMNI_SERVICE_ACCOUNT_KEY \
--env OXIDE_HOST \
--env OXIDE_TOKEN \
ghcr.io/oxidecomputer/omni-infra-provider-oxide:${TAG}
----
== Development
The `Makefile` is the primary method of interfacing with this project. Refer to
its targets for more information. The build artifact is a container image to be
run wherever it'll have access to the Oxide silo it's configured to connect to.
=== Running Locally
. Export the necessary environment variables.
+
[source,shell]
----
export OMNI_ENDPOINT=https://example.na-west-1.omni.siderolabs.io:443
export OMNI_SERVICE_ACCOUNT_KEY=ZXhhbXBsZQ==
export OXIDE_HOST='https://oxide.sys.example.com'
export OXIDE_TOKEN='oxide-token-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
----
. Run the infrastructure provider.
+
[source,shell]
----
make dev
----
== Release Process
The release process is manual and runs from a developer's workstation for now.
. Check out the revision to be released. Ensure the working copy is clean.
. Build the container image.
+
[source,shell]
----
RELEASE=true make build
----
. Push the container image.
+
[source,shell]
----
RELEASE=true make push
----
. Create a GitHub release.
.. Create and push a Git tag with the v-prefixed `VERSION` (e.g., v0.1.0).
.. Create the GitHub release for the newly pushed tag. Automatically generate the release notes.
. Open a pull request with the following changes.
.. Update the `VERSION` within the `Makefile` to the next version.