Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/release-notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ nav_order: 9

### Features

- Support Outscale ([#2296](https://github.com/coreos/ignition/pull/2296))
- Butane: add `--yaml-doc-separator` to prepend the YAML document separator
(`---`) to MachineConfig output

Expand Down
2 changes: 2 additions & 0 deletions docs/supported-platforms.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ Ignition is currently supported for the following platforms:
* [NVIDIA BlueField] (`nvidiabluefield`) - Ignition will read its configuration from the bootfifo sysfs interface from the mlxbf_bootctl platform driver.
* [OpenStack] (`openstack`) - Ignition will read its configuration from the instance userdata via either metadata service or config drive. Cloud SSH keys are handled separately.
* [Oracle Cloud Infrastucture] (`oraclecloud`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
* [Outscale] (`outscale`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
* [Proxmox VE] (`proxmoxve`) - Ignition will read its configuration from the instance userdata via config drive. If there isn't any valid Ignition configuration in userdata it will check the vendordata next. Cloud SSH keys are handled separately.
* [Equinix Metal] (`packet`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
* [IBM Power Systems Virtual Server] (`powervs`) - Ignition will read its configuration from the instance userdata. Cloud SSH keys are handled separately.
Expand Down Expand Up @@ -59,6 +60,7 @@ For most cloud providers, cloud SSH keys and custom network configuration are ha
[Nutanix]: https://www.nutanix.com/products/ahv
[OpenStack]: https://www.openstack.org/
[Oracle Cloud Infrastucture]: https://www.oracle.com/cloud
[Outscale]: https://docs.outscale.com
[Proxmox VE]: https://www.proxmox.com/en/proxmox-virtual-environment/overview
[Equinix Metal]: https://metal.equinix.com/product/
[IBM Power Systems Virtual Server]: https://www.ibm.com/products/power-virtual-server
Expand Down
59 changes: 59 additions & 0 deletions internal/providers/outscale/outscale.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// Copyright 2026 CoreOS, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// The outscale provider fetches a remote configuration from the Outscale
// user-data metadata service URL.

package outscale

import (
"net/url"

"github.com/coreos/ignition/v2/config/v3_7_experimental/types"
"github.com/coreos/ignition/v2/internal/platform"
"github.com/coreos/ignition/v2/internal/providers/util"
"github.com/coreos/ignition/v2/internal/resource"

"github.com/coreos/vcontext/report"
)

// userdataURL is the Outscale metadata service endpoint for user-data.
var (
userdataURL = url.URL{
Scheme: "http",
Host: "169.254.169.254",
Path: "/latest/user-data",
}
)

// init registers the Outscale provider with the platform registry.
func init() {
platform.Register(platform.Provider{
Name: "outscale",
Fetch: fetchConfig,
})
}

// fetchConfig fetches the Ignition config from the Outscale metadata service.
func fetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
data, err := f.FetchToBuffer(userdataURL, resource.FetchOptions{})
if err != nil {
if err == resource.ErrNotFound {
return types.Config{}, report.Report{}, nil
}
return types.Config{}, report.Report{}, err
}

return util.ParseConfig(f.Logger, data)
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Resolved
}
3 changes: 3 additions & 0 deletions internal/register/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.

// Package register imports all platform providers so their init functions
// register themselves with the platform registry.
package register

import (
Expand All @@ -35,6 +37,7 @@ import (
_ "github.com/coreos/ignition/v2/internal/providers/nvidiabluefield"
_ "github.com/coreos/ignition/v2/internal/providers/openstack"
_ "github.com/coreos/ignition/v2/internal/providers/oraclecloud"
_ "github.com/coreos/ignition/v2/internal/providers/outscale"
_ "github.com/coreos/ignition/v2/internal/providers/packet"
_ "github.com/coreos/ignition/v2/internal/providers/powervs"
_ "github.com/coreos/ignition/v2/internal/providers/proxmoxve"
Expand Down
Loading