fix: fix ubuntu debian chrony bug

This commit is contained in:
Shiny Hou 2022-08-12 03:36:36 +08:00
parent 7613472688
commit 9aa61f4b13
2 changed files with 29 additions and 5 deletions

View File

@ -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,

View File

@ -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")
}