mirror of
https://github.com/rancher/os.git
synced 2025-08-01 23:17:50 +00:00
Fix a bug when installing ros to disk with noformat.
The cloud-config files cannot written to RANCHER_STATE disk when users set the RANCHER_BOOT partition.
This commit is contained in:
parent
c04293f6dd
commit
ab4e0e590b
@ -606,12 +606,42 @@ func seedData(baseName, cloudData string, files []string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err = os.MkdirAll(filepath.Join(baseName, "/var/lib/rancher/conf/cloud-config.d"), 0700); err != nil {
|
||||
stateSeedDir := "state_seed"
|
||||
cloudConfigBase := "/var/lib/rancher/conf/cloud-config.d"
|
||||
cloudConfigDir := ""
|
||||
|
||||
// If there is a separate boot partition, cloud-config should be written to RANCHER_STATE partition.
|
||||
bootPartition, _, err := util.Blkid("RANCHER_BOOT")
|
||||
if err != nil {
|
||||
log.Errorf("Failed to run blkid: %s", err)
|
||||
}
|
||||
if bootPartition != "" {
|
||||
stateSeedFullPath := filepath.Join(baseName, stateSeedDir)
|
||||
if err = os.MkdirAll(stateSeedFullPath, 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer util.Unmount(stateSeedFullPath)
|
||||
|
||||
statePartition := install.GetStatePartition()
|
||||
cmd := exec.Command("mount", statePartition, stateSeedFullPath)
|
||||
//cmd.Stdout, cmd.Stderr = os.Stdout, os.Stderr
|
||||
log.Debugf("seedData: mount %s to %s", statePartition, stateSeedFullPath)
|
||||
if err = cmd.Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
cloudConfigDir = filepath.Join(baseName, stateSeedDir, cloudConfigBase)
|
||||
} else {
|
||||
cloudConfigDir = filepath.Join(baseName, cloudConfigBase)
|
||||
}
|
||||
|
||||
if err = os.MkdirAll(cloudConfigDir, 0700); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !strings.HasSuffix(cloudData, "empty.yml") {
|
||||
if err = dfs.CopyFile(cloudData, baseName+"/var/lib/rancher/conf/cloud-config.d/", filepath.Base(cloudData)); err != nil {
|
||||
if err = dfs.CopyFile(cloudData, cloudConfigDir, filepath.Base(cloudData)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -44,7 +44,6 @@ func MountDevice(baseName, device, partition string, raw bool) (string, string,
|
||||
//rootfs := partition
|
||||
// Don't use ResolveDevice - it can fail, whereas `blkid -L LABEL` works more often
|
||||
|
||||
cfg := config.LoadConfig()
|
||||
d, _, err := util.Blkid("RANCHER_BOOT")
|
||||
if err != nil {
|
||||
log.Errorf("Failed to run blkid: %s", err)
|
||||
@ -53,18 +52,7 @@ func MountDevice(baseName, device, partition string, raw bool) (string, string,
|
||||
partition = d
|
||||
baseName = filepath.Join(baseName, config.BootDir)
|
||||
} else {
|
||||
if dev := util.ResolveDevice(cfg.Rancher.State.Dev); dev != "" {
|
||||
// try the rancher.state.dev setting
|
||||
partition = dev
|
||||
} else {
|
||||
d, _, err := util.Blkid("RANCHER_STATE")
|
||||
if err != nil {
|
||||
log.Errorf("Failed to run blkid: %s", err)
|
||||
}
|
||||
if d != "" {
|
||||
partition = d
|
||||
}
|
||||
}
|
||||
partition = GetStatePartition()
|
||||
}
|
||||
cmd := exec.Command("lsblk", "-no", "pkname", partition)
|
||||
log.Debugf("Run(%v)", cmd)
|
||||
@ -80,3 +68,17 @@ func MountDevice(baseName, device, partition string, raw bool) (string, string,
|
||||
log.Debugf("mountdevice return2 -> d: %s, p: %s", device, partition)
|
||||
return device, partition, cmd.Run()
|
||||
}
|
||||
|
||||
func GetStatePartition() string {
|
||||
cfg := config.LoadConfig()
|
||||
|
||||
if dev := util.ResolveDevice(cfg.Rancher.State.Dev); dev != "" {
|
||||
// try the rancher.state.dev setting
|
||||
return dev
|
||||
}
|
||||
d, _, err := util.Blkid("RANCHER_STATE")
|
||||
if err != nil {
|
||||
log.Errorf("Failed to run blkid: %s", err)
|
||||
}
|
||||
return d
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user