Merge pull request #237 from kairos-io/after-install-hooks

fix(after-install): run after-install hook after partitions are encrypted
This commit is contained in:
Ettore Di Giacinto 2024-02-27 17:56:08 +01:00 committed by GitHub
commit 694add86ae
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 21 additions and 5 deletions

View File

@ -13,7 +13,6 @@ var AfterInstall = []Interface{
&GrubOptions{}, // Set custom GRUB options
&BundlePostInstall{},
&CustomMounts{},
&Kcrypt{},
&Lifecycle{}, // Handles poweroff/reboot by config options
}
@ -31,10 +30,16 @@ var FirstBoot = []Interface{
}
// AfterUkiInstall sets which Hooks to run after uki runs the install action
var AfterUkiInstall = []Interface{
var AfterUkiInstall = []Interface{}
var UKIEncryptionHooks = []Interface{
&KcryptUKI{},
}
var EncryptionHooks = []Interface{
&Kcrypt{},
}
func Run(c config.Config, spec v1.Spec, hooks ...Interface) error {
for _, h := range hooks {
if err := h.Run(c, spec); err != nil {

View File

@ -18,13 +18,14 @@ package action
import (
"fmt"
hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks"
"github.com/kairos-io/kairos-agent/v2/pkg/config"
events "github.com/kairos-io/kairos-sdk/bus"
"path/filepath"
"strings"
"time"
hook "github.com/kairos-io/kairos-agent/v2/internal/agent/hooks"
"github.com/kairos-io/kairos-agent/v2/pkg/config"
events "github.com/kairos-io/kairos-sdk/bus"
cnst "github.com/kairos-io/kairos-agent/v2/pkg/constants"
"github.com/kairos-io/kairos-agent/v2/pkg/elemental"
v1 "github.com/kairos-io/kairos-agent/v2/pkg/types/v1"
@ -252,6 +253,11 @@ func (i InstallAction) Run() (err error) {
return err
}
err = hook.Run(*i.cfg, i.spec, hook.EncryptionHooks...)
if err != nil {
return err
}
err = i.installHook(cnst.AfterInstallHook, false)
if err != nil {
return err

View File

@ -144,6 +144,11 @@ func (i *InstallAction) Run() (err error) {
return fmt.Errorf("removing artifact set with role %s: %w", UnassignedArtifactRole, err)
}
err = hook.Run(*i.cfg, i.spec, hook.UKIEncryptionHooks...)
if err != nil {
return err
}
// after install hook happens after install (this is for compatibility with normal install, so users can reuse their configs)
err = Hook(i.cfg, constants.AfterInstallHook)
if err != nil {