mirror of https://github.com/kubernetes/kops.git
Make sure that we enable systemd services
We were previously just starting them, which works fine for the new machine and machine termination case, but doesn't work when doing a machine restart (e.g. init 6) Issue #70
This commit is contained in:
parent
fcd644441e
commit
09dd3002ff
|
@ -26,6 +26,9 @@ type Service struct {
|
||||||
Definition *string
|
Definition *string
|
||||||
Running *bool
|
Running *bool
|
||||||
|
|
||||||
|
// Enabled configures the service to start at boot (or not start at boot)
|
||||||
|
Enabled *bool
|
||||||
|
|
||||||
ManageState *bool `json:"manageState"`
|
ManageState *bool `json:"manageState"`
|
||||||
SmartRestart *bool `json:"smartRestart"`
|
SmartRestart *bool `json:"smartRestart"`
|
||||||
}
|
}
|
||||||
|
@ -76,6 +79,11 @@ func NewService(name string, contents string, meta string) (fi.Task, error) {
|
||||||
s.ManageState = fi.Bool(true)
|
s.ManageState = fi.Bool(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Default Enabled to be the same as running
|
||||||
|
if s.Enabled == nil {
|
||||||
|
s.Enabled = s.Running
|
||||||
|
}
|
||||||
|
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,6 +139,7 @@ func (e *Service) Find(c *fi.Context) (*Service, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
activeState := properties["ActiveState"]
|
activeState := properties["ActiveState"]
|
||||||
switch activeState {
|
switch activeState {
|
||||||
case "active":
|
case "active":
|
||||||
|
@ -143,6 +152,20 @@ func (e *Service) Find(c *fi.Context) (*Service, error) {
|
||||||
actual.Running = fi.Bool(false)
|
actual.Running = fi.Bool(false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wantedBy := properties["WantedBy"]
|
||||||
|
switch wantedBy {
|
||||||
|
case "":
|
||||||
|
actual.Enabled = fi.Bool(false)
|
||||||
|
|
||||||
|
// TODO: Can probably do better here!
|
||||||
|
case "multi-user.target", "graphical.target multi-user.target":
|
||||||
|
actual.Enabled = fi.Bool(true)
|
||||||
|
|
||||||
|
default:
|
||||||
|
glog.Warningf("Unknown WantedBy=%q; will treat as not enabled", wantedBy)
|
||||||
|
actual.Enabled = fi.Bool(false)
|
||||||
|
}
|
||||||
|
|
||||||
return actual, nil
|
return actual, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,6 +290,23 @@ func (_ *Service) RenderLocal(t *local.LocalTarget, a, e, changes *Service) erro
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if changes.Enabled != nil && fi.BoolValue(e.ManageState) {
|
||||||
|
var args []string
|
||||||
|
if fi.BoolValue(e.Enabled) {
|
||||||
|
glog.Infof("Enabling service %q", serviceName)
|
||||||
|
args = []string{"enable", serviceName}
|
||||||
|
} else {
|
||||||
|
glog.Infof("Disabling service %q", serviceName)
|
||||||
|
args = []string{"disable", serviceName}
|
||||||
|
}
|
||||||
|
cmd := exec.Command("systemctl", args...)
|
||||||
|
|
||||||
|
output, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("error doing 'systemctl %v': %v\nOutput: %s", args, err, output)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue