feat(unit): Allow user to control enabling units
Fix #69 - A user may provide an `enable` attribute of a unit in their cloud config document. If true, coreos-cloudinit will instruct systemd to enable the associated unit. If false, the unit will not be enabled. Fix #71 - The default enable behavior has been changed from on to off.
This commit is contained in:
parent
10d73930d9
commit
5981e12ac0
@ -87,6 +87,7 @@ Arbitrary systemd units may be provided in the `coreos.units` attribute.
|
|||||||
|
|
||||||
- **name**: String representing unit's name. Required.
|
- **name**: String representing unit's name. Required.
|
||||||
- **runtime**: Boolean indicating whether or not to persist the unit across reboots. This is analagous to the `--runtime` argument to `systemd enable`. Default value is false.
|
- **runtime**: Boolean indicating whether or not to persist the unit across reboots. This is analagous to the `--runtime` argument to `systemd enable`. Default value is false.
|
||||||
|
- **enable**: Boolean indicating whether or not to handle the [Install] section of the unit file. This is similar to running `systemctl enable <name>`. Default value is false.
|
||||||
- **content**: Plaintext string representing entire unit file. If no value is provided, the unit is assumed to exist already.
|
- **content**: Plaintext string representing entire unit file. If no value is provided, the unit is assumed to exist already.
|
||||||
- **command**: Command to execute on unit: start, stop, reload, restart, try-restart, reload-or-restart, reload-or-try-restart. Default value is restart.
|
- **command**: Command to execute on unit: start, stop, reload, restart, try-restart, reload-or-restart, reload-or-try-restart. Default value is restart.
|
||||||
|
|
||||||
|
@ -140,14 +140,16 @@ func Apply(cfg CloudConfig, env *Environment) error {
|
|||||||
}
|
}
|
||||||
log.Printf("Placed unit %s at %s", unit.Name, dst)
|
log.Printf("Placed unit %s at %s", unit.Name, dst)
|
||||||
|
|
||||||
if unit.Group() != "network" {
|
if unit.Enable {
|
||||||
log.Printf("Enabling unit file %s", dst)
|
if unit.Group() != "network" {
|
||||||
if err := system.EnableUnitFile(dst, unit.Runtime); err != nil {
|
log.Printf("Enabling unit file %s", dst)
|
||||||
return err
|
if err := system.EnableUnitFile(dst, unit.Runtime); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
log.Printf("Enabled unit %s", unit.Name)
|
||||||
|
} else {
|
||||||
|
log.Printf("Skipping enable for network-like unit %s", unit.Name)
|
||||||
}
|
}
|
||||||
log.Printf("Enabled unit %s", unit.Name)
|
|
||||||
} else {
|
|
||||||
log.Printf("Skipping enable for network-like unit %s", unit.Name)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ const fakeMachineID = "42000000000000000000000000000042"
|
|||||||
|
|
||||||
type Unit struct {
|
type Unit struct {
|
||||||
Name string
|
Name string
|
||||||
|
Enable bool
|
||||||
Runtime bool
|
Runtime bool
|
||||||
Content string
|
Content string
|
||||||
Command string
|
Command string
|
||||||
|
Loading…
Reference in New Issue
Block a user