wire ignition bp customization to simplified-installer and raw image
Signed-off-by: Antonio Murdaca <antoniomurdaca@gmail.com>
This commit is contained in:
parent
5c7d43c9a0
commit
1672fb1cf6
7 changed files with 323 additions and 82 deletions
|
|
@ -33,7 +33,7 @@ type IgnitionCustomization struct {
|
|||
|
||||
type EmbeddedIgnitionCustomization struct {
|
||||
ProvisioningURL string `json:"url,omitempty" toml:"url,omitempty"`
|
||||
Data64 string `json:"data,omitempty" toml:"data,omitempty"`
|
||||
Config string `json:"config,omitempty" toml:"config,omitempty"`
|
||||
}
|
||||
|
||||
type FirstBootIgnitionCustomization struct {
|
||||
|
|
@ -421,7 +421,7 @@ func (c *EmbeddedIgnitionCustomization) CheckEmbeddedIgnition() error {
|
|||
if c == nil {
|
||||
return nil
|
||||
}
|
||||
if c.Data64 != "" && c.ProvisioningURL != "" {
|
||||
if c.Config != "" && c.ProvisioningURL != "" {
|
||||
t := reflect.TypeOf(*c)
|
||||
return &CustomizationError{fmt.Sprintf("'%s' and '%s' are not allowed at the same time", t.Field(0).Name, t.Field(1).Name)}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,8 +211,8 @@ func edgeCommitImage(workload workload.Workload,
|
|||
|
||||
img.Platform = t.platform
|
||||
img.OSCustomizations = osCustomizations(t, packageSets[osPkgsKey], options, containers, customizations)
|
||||
if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || !common.VersionLessThan(t.arch.distro.osVersion, "9-stream") {
|
||||
img.OSCustomizations.EnabledServices = append(img.OSCustomizations.EnabledServices, "ignition-firstboot-complete.service", "coreos-ignition-write-issues", "coreos-ignition-write-issues")
|
||||
if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || t.arch.distro.osVersion == "9-stream" {
|
||||
img.OSCustomizations.EnabledServices = append(img.OSCustomizations.EnabledServices, "ignition-firstboot-complete.service", "coreos-ignition-write-issues.service")
|
||||
}
|
||||
img.Environment = t.environment
|
||||
img.Workload = workload
|
||||
|
|
@ -247,8 +247,8 @@ func edgeContainerImage(workload workload.Workload,
|
|||
|
||||
img.Platform = t.platform
|
||||
img.OSCustomizations = osCustomizations(t, packageSets[osPkgsKey], options, containers, customizations)
|
||||
if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || !common.VersionLessThan(t.arch.distro.osVersion, "9-stream") {
|
||||
img.OSCustomizations.EnabledServices = append(img.OSCustomizations.EnabledServices, "ignition-firstboot-complete.service", "coreos-ignition-write-issues", "coreos-ignition-write-issues")
|
||||
if !common.VersionLessThan(t.arch.distro.osVersion, "9.2") || t.arch.distro.osVersion == "9-stream" {
|
||||
img.OSCustomizations.EnabledServices = append(img.OSCustomizations.EnabledServices, "ignition-firstboot-complete.service", "coreos-ignition-write-issues.service")
|
||||
}
|
||||
img.ContainerLanguage = img.OSCustomizations.Language
|
||||
img.Environment = t.environment
|
||||
|
|
@ -421,6 +421,10 @@ func edgeSimplifiedInstallerImage(workload workload.Workload,
|
|||
|
||||
rawImg.Filename = t.Filename()
|
||||
|
||||
if bpIgnition := customizations.GetIgnition(); bpIgnition != nil && bpIgnition.FirstBoot != nil && bpIgnition.FirstBoot.ProvisioningURL != "" {
|
||||
rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, "ignition.config.url="+bpIgnition.FirstBoot.ProvisioningURL)
|
||||
}
|
||||
|
||||
// 92+ only
|
||||
if kopts := customizations.GetKernel(); kopts != nil && kopts.Append != "" {
|
||||
rawImg.KernelOptionsAppend = append(rawImg.KernelOptionsAppend, kopts.Append)
|
||||
|
|
@ -436,11 +440,12 @@ func edgeSimplifiedInstallerImage(workload workload.Workload,
|
|||
}
|
||||
// ignition configs from blueprint
|
||||
if bpIgnition := customizations.GetIgnition(); bpIgnition != nil {
|
||||
if bpIgnition.FirstBoot != nil {
|
||||
img.IgnitionFirstBoot = ignition.FirstbootOptionsFromBP(*bpIgnition.FirstBoot)
|
||||
}
|
||||
if bpIgnition.Embedded != nil {
|
||||
img.IgnitionEmbedded = ignition.EmbeddedOptionsFromBP(*bpIgnition.Embedded)
|
||||
var err error
|
||||
img.IgnitionEmbedded, err = ignition.EmbeddedOptionsFromBP(*bpIgnition.Embedded)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
package ignition
|
||||
|
||||
import "github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||
import (
|
||||
"encoding/base64"
|
||||
"errors"
|
||||
|
||||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||
)
|
||||
|
||||
type FirstBootOptions struct {
|
||||
ProvisioningURL string
|
||||
|
|
@ -13,10 +18,16 @@ func FirstbootOptionsFromBP(bpIgnitionFirstboot blueprint.FirstBootIgnitionCusto
|
|||
|
||||
type EmbeddedOptions struct {
|
||||
ProvisioningURL string
|
||||
Data64 string
|
||||
Config string
|
||||
}
|
||||
|
||||
func EmbeddedOptionsFromBP(bpIgnitionEmbedded blueprint.EmbeddedIgnitionCustomization) *EmbeddedOptions {
|
||||
ignition := EmbeddedOptions(bpIgnitionEmbedded)
|
||||
return &ignition
|
||||
func EmbeddedOptionsFromBP(bpIgnitionEmbedded blueprint.EmbeddedIgnitionCustomization) (*EmbeddedOptions, error) {
|
||||
decodedConfig, err := base64.StdEncoding.DecodeString(bpIgnitionEmbedded.Config)
|
||||
if err != nil {
|
||||
return nil, errors.New("can't decode Ignition config")
|
||||
}
|
||||
return &EmbeddedOptions{
|
||||
ProvisioningURL: bpIgnitionEmbedded.ProvisioningURL,
|
||||
Config: string(decodedConfig),
|
||||
}, nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -127,11 +127,6 @@ func (img *OSTreeSimplifiedInstaller) InstantiateManifest(m *manifest.Manifest,
|
|||
}
|
||||
}
|
||||
|
||||
// ignition firstboot options
|
||||
if img.IgnitionFirstBoot != nil {
|
||||
kernelOpts = append(kernelOpts, "coreos.inst.append ignition.config.url="+img.IgnitionFirstBoot.ProvisioningURL)
|
||||
}
|
||||
|
||||
bootTreePipeline.KernelOpts = kernelOpts
|
||||
|
||||
rootfsPartitionTable := &disk.PartitionTable{
|
||||
|
|
|
|||
|
|
@ -72,9 +72,9 @@ func (p *CoreOSISOTree) serialize() osbuild.Pipeline {
|
|||
copyInput := ""
|
||||
// These specific filenames in the root of the ISO are expected by
|
||||
// coreos-installer-dracut during installation
|
||||
if p.coiPipeline.Ignition.Data64 != "" {
|
||||
if p.coiPipeline.Ignition.Config != "" {
|
||||
filename = "ignition_config"
|
||||
copyInput = p.coiPipeline.Ignition.Data64
|
||||
copyInput = p.coiPipeline.Ignition.Config
|
||||
} else {
|
||||
filename = "ignition_url"
|
||||
copyInput = p.coiPipeline.Ignition.ProvisioningURL
|
||||
|
|
|
|||
|
|
@ -138,8 +138,8 @@ func (p *CoreOSInstaller) getInline() []string {
|
|||
}
|
||||
// inline data for ignition embedded (url or data)
|
||||
if p.Ignition != nil {
|
||||
if p.Ignition.Data64 != "" {
|
||||
inlineData = append(inlineData, p.Ignition.Data64)
|
||||
if p.Ignition.Config != "" {
|
||||
inlineData = append(inlineData, p.Ignition.Config)
|
||||
} else {
|
||||
inlineData = append(inlineData, p.Ignition.ProvisioningURL)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue