From c72f4e0811fbe77394a0c417b586428098bd373c Mon Sep 17 00:00:00 2001 From: Yujie <34276395+Yujie-Xie@users.noreply.github.com> Date: Wed, 31 Jan 2024 11:25:54 +0800 Subject: [PATCH] create systemd dir when use systemd user mode (#2373) --- embed/templates/systemd/system.service.tpl | 2 +- pkg/cluster/manager/builder.go | 8 +++++--- pkg/cluster/manager/deploy.go | 4 +++- pkg/cluster/spec/instance.go | 3 --- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/embed/templates/systemd/system.service.tpl b/embed/templates/systemd/system.service.tpl index eea588f017..40dedf1f59 100644 --- a/embed/templates/systemd/system.service.tpl +++ b/embed/templates/systemd/system.service.tpl @@ -21,7 +21,7 @@ LimitCORE={{.LimitCORE}} LimitNOFILE=1000000 LimitSTACK=10485760 -{{- if .GrantCapNetRaw}} +{{- if and .GrantCapNetRaw (eq .SystemdMode "system")}} AmbientCapabilities=CAP_NET_RAW {{- end}} {{- if eq .SystemdMode "system"}} diff --git a/pkg/cluster/manager/builder.go b/pkg/cluster/manager/builder.go index 0714e6f925..f00a5030e4 100644 --- a/pkg/cluster/manager/builder.go +++ b/pkg/cluster/manager/builder.go @@ -140,7 +140,9 @@ func buildScaleOutTask( dirs = append(dirs, spec.Abs(globalOptions.User, dirname)) } } - + if systemdMode == spec.UserMode { + dirs = append(dirs, spec.Abs(globalOptions.User, ".config/systemd/user")) + } t := task.NewBuilder(m.logger). RootSSH( instance.GetManageHost(), @@ -434,7 +436,7 @@ type hostInfo struct { func buildMonitoredDeployTask( m *Manager, uniqueHosts map[string]hostInfo, // host -> ssh-port, os, arch - noAgentHosts set.StringSet, // hosts that do not deploy monitor agents + noAgentHosts set.StringSet, // hosts that do not deploy monitor agents globalOptions *spec.GlobalOptions, monitoredOptions *spec.MonitoredOptions, gOpt operator.Options, @@ -508,7 +510,7 @@ func buildMonitoredCertificateTasks( m *Manager, name string, uniqueHosts map[string]hostInfo, // host -> ssh-port, os, arch - noAgentHosts set.StringSet, // hosts that do not deploy monitor agents + noAgentHosts set.StringSet, // hosts that do not deploy monitor agents globalOptions *spec.GlobalOptions, monitoredOptions *spec.MonitoredOptions, gOpt operator.Options, diff --git a/pkg/cluster/manager/deploy.go b/pkg/cluster/manager/deploy.go index 48b4a64e26..52ea581d70 100644 --- a/pkg/cluster/manager/deploy.go +++ b/pkg/cluster/manager/deploy.go @@ -231,7 +231,9 @@ func (m *Manager) Deploy( if strings.HasPrefix(globalOptions.DataDir, "/") { dirs = append(dirs, globalOptions.DataDir) } - + if systemdMode == spec.UserMode { + dirs = append(dirs, spec.Abs(globalOptions.User, ".config/systemd/user")) + } t := task.NewBuilder(m.logger). RootSSH( host, diff --git a/pkg/cluster/spec/instance.go b/pkg/cluster/spec/instance.go index 83bd66aa48..33c79b570c 100644 --- a/pkg/cluster/spec/instance.go +++ b/pkg/cluster/spec/instance.go @@ -215,9 +215,6 @@ func (i *BaseInstance) InitConfig(ctx context.Context, e ctxt.Executor, opt Glob sudo := true if opt.SystemdMode == UserMode { systemdDir = "~/.config/systemd/user/" - if err := os.MkdirAll(systemdDir, os.ModePerm); err != nil { - return err - } sudo = false } cmd := fmt.Sprintf("mv %s %s%s-%d.service", tgt, systemdDir, comp, port)