mirror of
https://github.com/rancher/os.git
synced 2025-09-01 23:04:41 +00:00
Added LVM and LUKS
This commit is contained in:
@@ -1,9 +1,11 @@
|
||||
package control
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
@@ -37,6 +39,20 @@ func BootstrapMain() {
|
||||
}
|
||||
}
|
||||
|
||||
log.Debugf("bootstrapAction: cryptsetup(%v)", cfg.Rancher.State.Cryptsetup)
|
||||
if cfg.Rancher.State.Cryptsetup {
|
||||
if err := cryptsetup(); err != nil {
|
||||
log.Errorf("Failed to run cryptsetup: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
log.Debugf("bootstrapAction: LvmScan(%v)", cfg.Rancher.State.LvmScan)
|
||||
if cfg.Rancher.State.LvmScan {
|
||||
if err := vgchange(); err != nil {
|
||||
log.Errorf("Failed to run vgchange: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
stateScript := cfg.Rancher.State.Script
|
||||
log.Debugf("bootstrapAction: stateScript(%v)", stateScript)
|
||||
if stateScript != "" {
|
||||
@@ -75,6 +91,45 @@ func mdadmScan() error {
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func vgchange() error {
|
||||
cmd := exec.Command("vgchange", "--activate", "ay")
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
return cmd.Run()
|
||||
}
|
||||
|
||||
func cryptsetup() error {
|
||||
devices, err := util.BlkidType("crypto_LUKS")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for _, cryptdevice := range devices {
|
||||
fdRead, err := os.Open("/dev/console")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fdRead.Close()
|
||||
|
||||
fdWrite, err := os.OpenFile("/dev/console", os.O_WRONLY|os.O_APPEND, 0)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fdWrite.Close()
|
||||
|
||||
cmd := exec.Command("cryptsetup", "luksOpen", cryptdevice, fmt.Sprintf("luks-%s", filepath.Base(cryptdevice)))
|
||||
cmd.Stdout = fdWrite
|
||||
cmd.Stderr = fdWrite
|
||||
cmd.Stdin = fdRead
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
log.Errorf("Failed to run cryptsetup for %s: %v", cryptdevice, err)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func runRngd() error {
|
||||
cmd := exec.Command("rngd", "-q")
|
||||
cmd.Stdout = os.Stdout
|
||||
|
Reference in New Issue
Block a user