@@ -23,7 +23,9 @@ import (
2323 "github.com/replicatedhq/embedded-cluster/pkg/dryrun"
2424 "github.com/replicatedhq/embedded-cluster/pkg/goods"
2525 "github.com/replicatedhq/embedded-cluster/pkg/helpers"
26+ "github.com/replicatedhq/embedded-cluster/pkg/helpers/systemd"
2627 "github.com/replicatedhq/embedded-cluster/pkg/k0s"
28+ "github.com/replicatedhq/embedded-cluster/pkg/manager"
2729 "github.com/replicatedhq/embedded-cluster/pkg/metrics"
2830 "github.com/replicatedhq/embedded-cluster/pkg/netutils"
2931 "github.com/replicatedhq/embedded-cluster/pkg/preflights"
@@ -564,6 +566,7 @@ func gatherVersionMetadata(k0sCfg *k0sconfig.ClusterConfig, withChannelRelease b
564566 artifacts := map [string ]string {
565567 "k0s" : fmt .Sprintf ("k0s-binaries/%s-%s" , versions .K0sVersion , runtime .GOARCH ),
566568 "kots" : fmt .Sprintf ("kots-binaries/%s-%s.tar.gz" , adminconsole .KotsVersion , runtime .GOARCH ),
569+ "manager" : fmt .Sprintf ("manager-binaries/%s-%s.tar.gz" , versions .Version , runtime .GOARCH ),
567570 "operator" : fmt .Sprintf ("operator-binaries/%s-%s.tar.gz" , embeddedclusteroperator .Metadata .Version , runtime .GOARCH ),
568571 "local-artifact-mirror-image" : versions .LocalArtifactMirrorImage ,
569572 }
@@ -573,6 +576,9 @@ func gatherVersionMetadata(k0sCfg *k0sconfig.ClusterConfig, withChannelRelease b
573576 if versions .KOTSBinaryURLOverride != "" {
574577 artifacts ["kots" ] = versions .KOTSBinaryURLOverride
575578 }
579+ if versions .ManagerBinaryURLOverride != "" {
580+ artifacts ["manager" ] = versions .ManagerBinaryURLOverride
581+ }
576582 if versions .OperatorBinaryURLOverride != "" {
577583 artifacts ["operator" ] = versions .OperatorBinaryURLOverride
578584 }
@@ -827,28 +833,14 @@ func installAndEnableLocalArtifactMirror() error {
827833
828834// installAndEnableManager installs and enables the manager. This service is
829835// responsible for managing the embedded cluster after the initial installation.
830- func installAndEnableManager () error {
831- materializer := goods .NewMaterializer ()
832- if err := materializer .ManagerUnitFile (); err != nil {
833- return fmt .Errorf ("unable to materialize manager unit: %w" , err )
834- }
835- if err := writeManagerDropInFile (); err != nil {
836- return fmt .Errorf ("unable to write manager environment file: %w" , err )
837- }
838- if _ , err := helpers .RunCommand ("systemctl" , "daemon-reload" ); err != nil {
839- return fmt .Errorf ("unable to get reload systemctl daemon: %w" , err )
840- }
841- if _ , err := helpers .RunCommand ("systemctl" , "start" , runtimeconfig .ManagerServiceName ); err != nil {
842- return fmt .Errorf ("unable to start the manager: %w" , err )
843- }
844- if _ , err := helpers .RunCommand ("systemctl" , "enable" , runtimeconfig .ManagerServiceName ); err != nil {
845- return fmt .Errorf ("unable to start the manager service: %w" , err )
836+ func installAndEnableManager (ctx context.Context ) error {
837+ if err := manager .Install (ctx , logrus .Debugf ); err != nil {
838+ return fmt .Errorf ("failed to install manager service: %w" , err )
846839 }
847840 return nil
848841}
849842
850843const (
851- localArtifactMirrorSystemdConfFile = "/etc/systemd/system/local-artifact-mirror.service.d/embedded-cluster.conf"
852844 localArtifactMirrorDropInFileContents = `[Service]
853845Environment="LOCAL_ARTIFACT_MIRROR_PORT=%d"
854846Environment="LOCAL_ARTIFACT_MIRROR_DATA_DIR=%s"
@@ -858,47 +850,16 @@ ExecStart=%s serve
858850`
859851)
860852
861- var (
862- managerSystemdConfFile = fmt .Sprintf ("/etc/systemd/system/%s.service.d/embedded-cluster.conf" , runtimeconfig .ManagerServiceName )
863- managerDropInFileContents = `[Service]
864- # Empty ExecStart= will clear out the previous ExecStart value
865- ExecStart=
866- ExecStart=%s start
867- `
868- )
869-
870853func writeLocalArtifactMirrorDropInFile () error {
871- dir := filepath .Dir (localArtifactMirrorSystemdConfFile )
872- err := os .MkdirAll (dir , 0755 )
873- if err != nil {
874- return fmt .Errorf ("create directory: %w" , err )
875- }
876854 contents := fmt .Sprintf (
877855 localArtifactMirrorDropInFileContents ,
878856 runtimeconfig .LocalArtifactMirrorPort (),
879857 runtimeconfig .EmbeddedClusterHomeDirectory (),
880858 runtimeconfig .PathToEmbeddedClusterBinary ("local-artifact-mirror" ),
881859 )
882- err = os .WriteFile (localArtifactMirrorSystemdConfFile , []byte (contents ), 0644 )
883- if err != nil {
884- return fmt .Errorf ("write file: %w" , err )
885- }
886- return nil
887- }
888-
889- func writeManagerDropInFile () error {
890- dir := filepath .Dir (managerSystemdConfFile )
891- err := os .MkdirAll (dir , 0755 )
892- if err != nil {
893- return fmt .Errorf ("create directory: %w" , err )
894- }
895- contents := fmt .Sprintf (
896- managerDropInFileContents ,
897- runtimeconfig .PathToEmbeddedClusterBinary ("manager" ),
898- )
899- err = os .WriteFile (managerSystemdConfFile , []byte (contents ), 0644 )
860+ err := systemd .WriteDropInFile ("local-artifact-mirror.service" , "embedded-cluster.conf" , []byte (contents ))
900861 if err != nil {
901- return fmt .Errorf ("write file: %w" , err )
862+ return fmt .Errorf ("write drop-in file: %w" , err )
902863 }
903864 return nil
904865}
0 commit comments