From 9aa61f4b1376cf9560c96255a67ce4ee053ec2b5 Mon Sep 17 00:00:00 2001 From: Shiny Hou Date: Fri, 12 Aug 2022 03:36:36 +0800 Subject: [PATCH] fix: fix ubuntu debian chrony bug --- pkg/bootstrap/os/module.go | 9 +++++++++ pkg/bootstrap/os/tasks.go | 25 ++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/pkg/bootstrap/os/module.go b/pkg/bootstrap/os/module.go index 53f20970..d3a9cf61 100644 --- a/pkg/bootstrap/os/module.go +++ b/pkg/bootstrap/os/module.go @@ -35,6 +35,14 @@ func (c *ConfigureOSModule) Init() { c.Name = "ConfigureOSModule" c.Desc = "Init os dependencies" + getOSData := &task.RemoteTask{ + Name: "GetOSData", + Desc: "Get OS release", + Hosts: c.Runtime.GetAllHosts(), + Action: new(GetOSData), + Parallel: true, + } + initOS := &task.RemoteTask{ Name: "InitOS", Desc: "Prepare to init OS", @@ -75,6 +83,7 @@ func (c *ConfigureOSModule) Init() { } c.Tasks = []task.Interface{ + getOSData, initOS, GenerateScript, ExecScript, diff --git a/pkg/bootstrap/os/tasks.go b/pkg/bootstrap/os/tasks.go index feac97e1..5c374b0e 100644 --- a/pkg/bootstrap/os/tasks.go +++ b/pkg/bootstrap/os/tasks.go @@ -458,14 +458,27 @@ type NodeConfigureNtpServer struct { func (n *NodeConfigureNtpServer) Execute(runtime connector.Runtime) error { currentHost := runtime.RemoteHost() + release, ok := currentHost.GetCache().Get(Release) + if !ok { + return errors.New("get os release failed by host cache") + } + r := release.(*osrelease.Data) + + chronyConfigFile := "/etc/chrony.conf" + chronyService := "chronyd.service" + if r.ID == "ubuntu" || r.ID == "debian" { + chronyConfigFile = "/etc/chrony/chrony.conf" + chronyService = "chrony.service" + } + // if NtpServers was configured for _, server := range n.KubeConf.Cluster.System.NtpServers { serverAddr := strings.Trim(server, " \"") if serverAddr == currentHost.GetName() || serverAddr == currentHost.GetInternalAddress() { - allowClientCmd := `sed -i '/#allow/ a\allow 0.0.0.0/0' /etc/chrony.conf` + allowClientCmd := fmt.Sprintf(`sed -i '/#allow/ a\allow 0.0.0.0/0' %s`, chronyConfigFile) if _, err := runtime.GetRunner().SudoCmd(allowClientCmd, false); err != nil { - return errors.Wrapf(err, "change host:%s chronyd conf failed, please check file /etc/chrony.conf", serverAddr) + return errors.Wrapf(err, "change host:%s chronyd conf failed, please check file %s", serverAddr, chronyConfigFile) } } @@ -477,10 +490,11 @@ func (n *NodeConfigureNtpServer) Execute(runtime connector.Runtime) error { } } - checkOrAddCmd := fmt.Sprintf(`grep -q '^server %s iburst' /etc/chrony.conf||sed '1a server %s iburst' -i /etc/chrony.conf`, serverAddr, serverAddr) + checkOrAddCmd := fmt.Sprintf(`grep -q '^server %s iburst' %s||sed '1a server %s iburst' -i %s`, serverAddr, chronyConfigFile, serverAddr, chronyConfigFile) if _, err := runtime.GetRunner().SudoCmd(checkOrAddCmd, false); err != nil { - return errors.Wrapf(err, "set ntpserver: %s failed, please check file /etc/chrony.conf", serverAddr) + return errors.Wrapf(err, "set ntpserver: %s failed, please check file %s", serverAddr, chronyConfigFile) } + } // if Timezone was configured @@ -497,7 +511,8 @@ func (n *NodeConfigureNtpServer) Execute(runtime connector.Runtime) error { // ensure chronyd was enabled and work normally if len(n.KubeConf.Cluster.System.NtpServers) > 0 || len(n.KubeConf.Cluster.System.Timezone) > 0 { - if _, err := runtime.GetRunner().SudoCmd("systemctl enable chronyd.service && systemctl restart chronyd.service", false); err != nil { + startChronyCmd := fmt.Sprintf("systemctl enable %s && systemctl restart %s", chronyService, chronyService) + if _, err := runtime.GetRunner().SudoCmd(startChronyCmd, false); err != nil { return errors.Wrap(err, "restart chronyd failed") }