diff --git a/action/apply.go b/action/apply.go index 11b2a26a..4a0dbbde 100644 --- a/action/apply.go +++ b/action/apply.go @@ -84,6 +84,22 @@ func (a Apply) Run() error { if result = a.Manager.Run(); result != nil { analytics.Client.Publish("apply-failure", map[string]interface{}{"clusterID": a.Manager.Config.Spec.K0s.Metadata.ClusterID}) + log.Info(phase.Colorize.Red("==> Apply failed").String()) + + var installedHosts []string + for _, h := range a.Manager.Config.Spec.Hosts { + if h.Metadata.K0sInstalled { + installedHosts = append(installedHosts, h.String()) + } + } + if len(installedHosts) > 0 { + log.Warn("Cluster setup failed, but 'k0s install' has been run on the following hosts:") + for _, h := range installedHosts { + log.Warnf(" - %s", h) + } + log.Warn("You may need to reset them before retrying 'k0sctl apply'. See 'k0sctl reset --help' for more information.") + } + return result } diff --git a/phase/initialize_k0s.go b/phase/initialize_k0s.go index a2bf1726..a007feb2 100644 --- a/phase/initialize_k0s.go +++ b/phase/initialize_k0s.go @@ -72,6 +72,8 @@ func (p *InitializeK0s) Run() error { return err } + h.Metadata.K0sInstalled = true + if len(h.Environment) > 0 { log.Infof("%s: updating service environment", h) if err := h.Configurer.UpdateServiceEnvironment(h, h.K0sServiceName(), h.Environment); err != nil { diff --git a/phase/install_controllers.go b/phase/install_controllers.go index 19caa577..a04504c1 100644 --- a/phase/install_controllers.go +++ b/phase/install_controllers.go @@ -119,6 +119,7 @@ func (p *InstallControllers) Run() error { if err = h.Exec(cmd); err != nil { return err } + h.Metadata.K0sInstalled = true if len(h.Environment) > 0 { log.Infof("%s: updating service environment", h) diff --git a/phase/install_workers.go b/phase/install_workers.go index 2c1edaf1..f4848716 100644 --- a/phase/install_workers.go +++ b/phase/install_workers.go @@ -137,6 +137,8 @@ func (p *InstallWorkers) Run() error { return err } + h.Metadata.K0sInstalled = true + if len(h.Environment) > 0 { log.Infof("%s: updating service environment", h) if err := h.Configurer.UpdateServiceEnvironment(h, h.K0sServiceName(), h.Environment); err != nil { diff --git a/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go b/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go index fbece209..28522b64 100644 --- a/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go +++ b/pkg/apis/k0sctl.k0sproject.io/v1beta1/cluster/host.go @@ -175,6 +175,7 @@ type HostMetadata struct { K0sBinaryVersion *version.Version K0sBinaryTempFile string K0sRunningVersion *version.Version + K0sInstalled bool Arch string IsK0sLeader bool Hostname string