1
0
mirror of https://github.com/rancher/os.git synced 2025-09-16 23:21:19 +00:00

Reshuffle cloud-config

Read files cloud-config.d in alphanumeric order, then cloud-config.yml
`ros config` writes to cloud-config.yml (and cloud-config.d/private.yml - only private keys)

Add (c *CloudConfig) Save() method, use it to save the changed config

Read and apply metadata as part of LoadConfig()

Simplify ros config export logic
This commit is contained in:
Ivan Mikushin
2015-09-23 16:36:28 +05:00
parent 0ac4c783f9
commit 338abb758f
20 changed files with 658 additions and 695 deletions

View File

@@ -57,13 +57,17 @@ func configSubcommands() []cli.Command {
Name: "output, o",
Usage: "File to which to save",
},
cli.BoolFlag{
Name: "boot, b",
Usage: "Include cloud-config provided at boot",
},
cli.BoolFlag{
Name: "private, p",
Usage: "Include private information such as keys",
Usage: "Include the generated private keys",
},
cli.BoolFlag{
Name: "full, f",
Usage: "Include full configuration, including internal and default settings",
Usage: "Export full configuration, including internal and default settings",
},
},
Action: export,
@@ -101,9 +105,9 @@ func imagesFromConfig(cfg *config.CloudConfig) []string {
func runImages(c *cli.Context) {
configFile := c.String("input")
cfg := config.ReadConfig(nil, configFile)
if cfg == nil {
log.Fatalf("Could not read config from file %v", configFile)
cfg, err := config.ReadConfig(nil, false, configFile)
if err != nil {
log.WithFields(log.Fields{"err": err, "file": configFile}).Fatalf("Could not read config from file")
}
images := imagesFromConfig(cfg)
fmt.Println(strings.Join(images, " "))
@@ -133,10 +137,14 @@ func runImport(c *cli.Context) {
log.Fatal(err)
}
err = cfg.Import(bytes)
cfg, err = cfg.Import(bytes)
if err != nil {
log.Fatal(err)
}
if err := cfg.Save(); err != nil {
log.Fatal(err)
}
}
func configSet(c *cli.Context) {
@@ -151,10 +159,14 @@ func configSet(c *cli.Context) {
log.Fatal(err)
}
err = cfg.Set(key, value)
cfg, err = cfg.Set(key, value)
if err != nil {
log.Fatal(err)
}
if err := cfg.Save(); err != nil {
log.Fatal(err)
}
}
func configGet(c *cli.Context) {
@@ -203,14 +215,18 @@ func merge(c *cli.Context) {
log.Fatal(err)
}
err = cfg.Merge(bytes)
cfg, err = cfg.MergeBytes(bytes)
if err != nil {
log.Fatal(err)
}
if err := cfg.Save(); err != nil {
log.Fatal(err)
}
}
func export(c *cli.Context) {
content, err := config.Dump(c.Bool("private"), c.Bool("full"))
content, err := config.Dump(c.Bool("boot"), c.Bool("private"), c.Bool("full"))
if err != nil {
log.Fatal(err)
}

View File

@@ -86,12 +86,12 @@ func installAction(c *cli.Context) {
force := c.Bool("force")
reboot := !c.Bool("no-reboot")
if err := runInstall(cfg, image, installType, cloudConfig, device, force, reboot); err != nil {
if err := runInstall(image, installType, cloudConfig, device, force, reboot); err != nil {
log.WithFields(log.Fields{"err": err}).Fatal("Failed to run install")
}
}
func runInstall(cfg *config.CloudConfig, image, installType, cloudConfig, device string, force, reboot bool) error {
func runInstall(image, installType, cloudConfig, device string, force, reboot bool) error {
in := bufio.NewReader(os.Stdin)
fmt.Printf("Installing from %s\n", image)

View File

@@ -53,7 +53,7 @@ func disable(c *cli.Context) {
}
if changed {
if err = cfg.Set("rancher.services_include", cfg.Rancher.ServicesInclude); err != nil {
if err = cfg.Save(); err != nil {
log.Fatal(err)
}
}
@@ -75,7 +75,7 @@ func del(c *cli.Context) {
}
if changed {
if err = cfg.Set("rancher.services_include", cfg.Rancher.ServicesInclude); err != nil {
if err = cfg.Save(); err != nil {
log.Fatal(err)
}
}
@@ -102,7 +102,7 @@ func enable(c *cli.Context) {
}
if changed {
if err := cfg.Set("rancher.services_include", cfg.Rancher.ServicesInclude); err != nil {
if err := cfg.Save(); err != nil {
log.Fatal(err)
}
}

View File

@@ -65,16 +65,21 @@ func writeCerts(generateServer bool, hostname []string, cfg *config.CloudConfig,
return err
}
return cfg.SetConfig(&config.CloudConfig{
Rancher: config.RancherConfig{
Docker: config.DockerConfig{
CAKey: cfg.Rancher.Docker.CAKey,
CACert: cfg.Rancher.Docker.CACert,
ServerCert: string(cert),
ServerKey: string(key),
cfg, err = cfg.Merge(map[interface{}]interface{}{
"rancher": map[interface{}]interface{}{
"docker": map[interface{}]interface{}{
"ca_key": cfg.Rancher.Docker.CAKey,
"ca_cert": cfg.Rancher.Docker.CACert,
"server_cert": string(cert),
"server_key": string(key),
},
},
})
if err != nil {
return err
}
return cfg.Save()
}
if err := ioutil.WriteFile(certPath, []byte(cfg.Rancher.Docker.ServerCert), 0400); err != nil {
@@ -101,11 +106,11 @@ func writeCaCerts(cfg *config.CloudConfig, caCertPath, caKeyPath string) error {
return err
}
err = cfg.SetConfig(&config.CloudConfig{
Rancher: config.RancherConfig{
Docker: config.DockerConfig{
CAKey: string(caKey),
CACert: string(caCert),
cfg, err = cfg.Merge(map[interface{}]interface{}{
"rancher": map[interface{}]interface{}{
"docker": map[interface{}]interface{}{
"ca_key": string(caKey),
"ca_cert": string(caCert),
},
},
})
@@ -113,7 +118,7 @@ func writeCaCerts(cfg *config.CloudConfig, caCertPath, caKeyPath string) error {
return err
}
return nil
return cfg.Save()
}
if err := ioutil.WriteFile(caCertPath, []byte(cfg.Rancher.Docker.CACert), 0400); err != nil {