diff --git a/cmd/control/bootstrap.go b/cmd/control/bootstrap.go index 0f44a7eb..5111ff2f 100644 --- a/cmd/control/bootstrap.go +++ b/cmd/control/bootstrap.go @@ -23,6 +23,13 @@ func BootstrapMain() { log.Debugf("bootstrapAction: loadingConfig") cfg := config.LoadConfig() + log.Debugf("bootstrapAction: Rngd(%v)", cfg.Rancher.State.Rngd) + if cfg.Rancher.State.Rngd { + if err := runRngd(); err != nil { + log.Errorf("Failed to run rngd: %v", err) + } + } + log.Debugf("bootstrapAction: MdadmScan(%v)", cfg.Rancher.State.MdadmScan) if cfg.Rancher.State.MdadmScan { if err := mdadmScan(); err != nil { @@ -68,6 +75,13 @@ func mdadmScan() error { return cmd.Run() } +func runRngd() error { + cmd := exec.Command("rngd", "-q") + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return cmd.Run() +} + func runStateScript(script string) error { f, err := ioutil.TempFile("", "") if err != nil { diff --git a/config/schema.go b/config/schema.go index 12a9aa2d..f6f2b490 100644 --- a/config/schema.go +++ b/config/schema.go @@ -169,6 +169,7 @@ var schema = `{ "required": {"type": "boolean"}, "autoformat": {"$ref": "#/definitions/list_of_strings"}, "mdadm_scan": {"type": "boolean"}, + "rngd": {"type": "boolean"}, "script": {"type": "string"}, "oem_fstype": {"type": "string"}, "oem_dev": {"type": "string"} diff --git a/config/types.go b/config/types.go index 6ab92c41..5142793a 100644 --- a/config/types.go +++ b/config/types.go @@ -200,6 +200,7 @@ type StateConfig struct { Required bool `yaml:"required,omitempty"` Autoformat []string `yaml:"autoformat,omitempty"` MdadmScan bool `yaml:"mdadm_scan,omitempty"` + Rngd bool `yaml:"rngd,omitempty"` Script string `yaml:"script,omitempty"` OemFsType string `yaml:"oem_fstype,omitempty"` OemDev string `yaml:"oem_dev,omitempty"` diff --git a/os-config.tpl.yml b/os-config.tpl.yml index 72525beb..bd6fbc90 100644 --- a/os-config.tpl.yml +++ b/os-config.tpl.yml @@ -82,6 +82,7 @@ rancher: fstype: auto oem_fstype: auto oem_dev: LABEL=RANCHER_OEM + rngd: true sysctl: fs.file-max: 1000000000 services: