flag.BoolVar(&flags.printVersion,"version",false,"Print the version and exit")
flag.BoolVar(&flags.ignoreFailure,"ignore-failure",false,"Exits with 0 status in the event of malformed input from user-data")
flag.StringVar(&flags.sources.file,"from-file","","Read user-data from provided file")
flag.StringVar(&flags.sources.configDrive,"from-configdrive","","Read data from provided cloud-drive directory")
flag.StringVar(&flags.sources.waagent,"from-waagent","","Read data from provided waagent directory")
flag.BoolVar(&flags.sources.metadataService,"from-metadata-service",false,"[DEPRECATED - Use -from-ec2-metadata] Download data from metadata service")
flag.StringVar(&flags.sources.ec2MetadataService,"from-ec2-metadata","","Download EC2 data from the provided url")
flag.BoolVar(&flags.sources.cloudSigmaMetadataService,"from-cloudsigma-metadata",false,"Download data from CloudSigma server context")
flag.StringVar(&flags.sources.digitalOceanMetadataService,"from-digitalocean-metadata","","Download DigitalOcean data from the provided url")
flag.StringVar(&flags.sources.url,"from-url","","Download user-data from provided url")
flag.BoolVar(&flags.sources.procCmdLine,"from-proc-cmdline",false,fmt.Sprintf("Parse %s for '%s=<url>', using the cloud-config served by an HTTP GET to <url>",proc_cmdline.ProcCmdlineLocation,proc_cmdline.ProcCmdlineCloudConfigFlag))
flag.StringVar(&flags.oem,"oem","","Use the settings specific to the provided OEM")
flag.StringVar(&flags.convertNetconf,"convert-netconf","","Read the network config provided in cloud-drive and translate it from the specified format into networkd unit files")
flag.StringVar(&flags.workspace,"workspace","/var/lib/coreos-cloudinit","Base directory coreos-cloudinit should use to store data")
flag.StringVar(&flags.sshKeyName,"ssh-key-name",initialize.DefaultSSHKeyName,"Add SSH keys to the system with the given name")
flag.BoolVar(&flags.validate,"validate",false,"[EXPERIMENTAL] Validate the user-data but do not apply it to the system")
flag.BoolVar(&flags.preInit,"preinit",true,"Does not initialize the cloud config. Just reads, validates and saves the merged file to disk")
flag.StringVar(&flags.outDir,"outdir","/var/lib/rancher/","output directory to store cloud-config")
fmt.Println("specify either --preinit or provide a filename to load config from")
os.Exit(2)
}
ifc,ok:=oemConfigs[flags.oem];ok{
fork,v:=rangec{
flag.Set(k,v)
}
}elseifflags.oem!=""{
oems:=make([]string,0,len(oemConfigs))
fork:=rangeoemConfigs{
oems=append(oems,k)
}
fmt.Printf("Invalid option to --oem: %q. Supported options: %q\n",flags.oem,oems)
os.Exit(2)
}
ifflags.printVersion==true{
fmt.Printf("coreos-cloudinit version %s\n",version)
os.Exit(0)
}
switchflags.convertNetconf{
case"":
case"debian":
case"digitalocean":
default:
fmt.Printf("Invalid option to -convert-netconf: '%s'. Supported options: 'debian, digitalocean'\n",flags.convertNetconf)
os.Exit(2)
}
dss:=getDatasources()
iflen(dss)==0{
fmt.Println("Provide at least one of --from-file, --from-configdrive, --from-ec2-metadata, --from-cloudsigma-metadata, --from-url or --from-proc-cmdline")
os.Exit(2)
}
ds:=selectDatasource(dss)
ifds==nil{
fmt.Println("No datasources available in time")
os.Exit(1)
}
fmt.Printf("Fetching user-data from datasource of type %q\n",ds.Type())
userdataBytes,err:=ds.FetchUserdata()
iferr!=nil{
fmt.Printf("Failed fetching user-data from datasource: %v\nContinuing...\n",err)