mirror of
https://github.com/rancher/os.git
synced 2025-09-05 08:42:38 +00:00
do not save/use bad cloud-config
This commit is contained in:
@@ -208,15 +208,22 @@ func saveCloudConfig() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else if config.IsCloudConfig(userData) {
|
} else if config.IsCloudConfig(userData) {
|
||||||
// nothing to do
|
if rancherConfig.ReadConfig(userDataBytes) == nil {
|
||||||
|
log.WithFields(log.Fields{"cloud-config": userData}).Warn("Failed to parse cloud-config, not saving.")
|
||||||
|
userDataBytes = []byte{}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
log.Errorf("Unrecognized cloud-init\n%s", userData)
|
log.Errorf("Unrecognized cloud-init\n%s", userData)
|
||||||
userDataBytes = []byte{}
|
userDataBytes = []byte{}
|
||||||
}
|
}
|
||||||
|
|
||||||
if userDataBytes, scriptBytes, err = mergeBaseConfig(userDataBytes, scriptBytes); err != nil {
|
userDataBytesMerged, scriptBytes, err := mergeBaseConfig(userDataBytes, scriptBytes)
|
||||||
|
if err != nil {
|
||||||
log.Errorf("Failed to merge base config: %v", err)
|
log.Errorf("Failed to merge base config: %v", err)
|
||||||
return err
|
} else if rancherConfig.ReadConfig(userDataBytesMerged) == nil {
|
||||||
|
log.WithFields(log.Fields{"cloud-config": userData}).Warn("Failed to parse merged cloud-config, not merging.")
|
||||||
|
} else {
|
||||||
|
userDataBytes = userDataBytesMerged
|
||||||
}
|
}
|
||||||
|
|
||||||
return saveFiles(userDataBytes, scriptBytes, metadata)
|
return saveFiles(userDataBytes, scriptBytes, metadata)
|
||||||
@@ -306,14 +313,14 @@ func Main() {
|
|||||||
if save {
|
if save {
|
||||||
err := saveCloudConfig()
|
err := saveCloudConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to save cloud config: %v", err)
|
log.WithFields(log.Fields{"err": err}).Error("Failed to save cloud-config")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if execute {
|
if execute {
|
||||||
err := executeCloudConfig()
|
err := executeCloudConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("Failed to save cloud config: %v", err)
|
log.WithFields(log.Fields{"err": err}).Error("Failed to execute cloud-config")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -101,7 +101,7 @@ func imagesFromConfig(cfg *config.CloudConfig) []string {
|
|||||||
|
|
||||||
func runImages(c *cli.Context) {
|
func runImages(c *cli.Context) {
|
||||||
configFile := c.String("input")
|
configFile := c.String("input")
|
||||||
cfg := config.ReadConfig(configFile)
|
cfg := config.ReadConfig(nil, configFile)
|
||||||
if cfg == nil {
|
if cfg == nil {
|
||||||
log.Fatalf("Could not read config from file %v", configFile)
|
log.Fatalf("Could not read config from file %v", configFile)
|
||||||
}
|
}
|
||||||
|
@@ -67,6 +67,10 @@ func LoadConfig() (*CloudConfig, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *CloudConfig) merge(values map[interface{}]interface{}) error {
|
func (c *CloudConfig) merge(values map[interface{}]interface{}) error {
|
||||||
|
t := &CloudConfig{}
|
||||||
|
if err := util.Convert(values, t); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
return util.Convert(values, c)
|
return util.Convert(values, c)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,13 +1,15 @@
|
|||||||
package config
|
package config
|
||||||
|
|
||||||
func NewConfig() *CloudConfig {
|
func NewConfig() *CloudConfig {
|
||||||
return ReadConfig(OsConfigFile)
|
return ReadConfig(nil, OsConfigFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReadConfig(file string) *CloudConfig {
|
func ReadConfig(bytes []byte, files ...string) *CloudConfig {
|
||||||
if data, err := readConfig(nil, file); err == nil {
|
if data, err := readConfig(bytes, files...); err == nil {
|
||||||
c := &CloudConfig{}
|
c := &CloudConfig{}
|
||||||
c.merge(data)
|
if err := c.merge(data); err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
c.amendNils()
|
c.amendNils()
|
||||||
return c
|
return c
|
||||||
} else {
|
} else {
|
||||||
|
Reference in New Issue
Block a user