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  }