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:
@@ -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)
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
}
|
||||
}
|
||||
|
@@ -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 {
|
||||
|
Reference in New Issue
Block a user