github.com/flanksource/konfigadm@v0.12.0/cmd/cloud-init.go (about) 1 package cmd 2 3 import ( 4 "fmt" 5 "log" 6 7 cloudinit "github.com/flanksource/konfigadm/pkg/cloud-init" 8 "github.com/spf13/cobra" 9 ) 10 11 var ( 12 CloudInit = cobra.Command{ 13 Use: "cloud-init", 14 Short: "Exports the configuration in cloud-init format", 15 Args: cobra.MinimumNArgs(0), 16 17 Run: func(cmd *cobra.Command, args []string) { 18 19 cfg := GetConfig(cmd, args) 20 var userdata string 21 if base64, _ := cmd.Flags().GetBool("base64"); base64 { 22 cfg.Extra.FileEncoding = "base64" 23 userdata = cfg.ToCloudInit().String() 24 } else { 25 userdata = cfg.ToCloudInit().String() 26 } 27 28 if iso, _ := cmd.Flags().GetBool("iso"); iso { 29 hostname, _ := cmd.Flags().GetString("hostname") 30 path, err := cloudinit.CreateISO(hostname, userdata) 31 if err != nil { 32 log.Fatalf("%+v", err) 33 } 34 fmt.Println(path) 35 } else { 36 fmt.Println(userdata) 37 } 38 }, 39 } 40 ) 41 42 func init() { 43 CloudInit.Flags().Bool("base64", true, "Base64 encode files") 44 CloudInit.Flags().Bool("iso", false, "Create an ISO with the cloud-init embedded as user-metadata") 45 CloudInit.Flags().String("hostname", "", "Hostname to use in generated cloud-init") 46 }