diff --git a/post-processor/vsphere/post-processor.go b/post-processor/vsphere/post-processor.go index 514face0f..182be5c0e 100644 --- a/post-processor/vsphere/post-processor.go +++ b/post-processor/vsphere/post-processor.go @@ -22,19 +22,20 @@ var builtins = map[string]string{ type Config struct { common.PackerConfig `mapstructure:",squash"` - Cluster string `mapstructure:"cluster"` - Datacenter string `mapstructure:"datacenter"` - Datastore string `mapstructure:"datastore"` - DiskMode string `mapstructure:"disk_mode"` - Host string `mapstructure:"host"` - Insecure bool `mapstructure:"insecure"` - Overwrite bool `mapstructure:"overwrite"` - Password string `mapstructure:"password"` - ResourcePool string `mapstructure:"resource_pool"` - Username string `mapstructure:"username"` - VMFolder string `mapstructure:"vm_folder"` - VMName string `mapstructure:"vm_name"` - VMNetwork string `mapstructure:"vm_network"` + Cluster string `mapstructure:"cluster"` + Datacenter string `mapstructure:"datacenter"` + Datastore string `mapstructure:"datastore"` + DiskMode string `mapstructure:"disk_mode"` + Host string `mapstructure:"host"` + Insecure bool `mapstructure:"insecure"` + Options []string `mapstructure:"options"` + Overwrite bool `mapstructure:"overwrite"` + Password string `mapstructure:"password"` + ResourcePool string `mapstructure:"resource_pool"` + Username string `mapstructure:"username"` + VMFolder string `mapstructure:"vm_folder"` + VMName string `mapstructure:"vm_name"` + VMNetwork string `mapstructure:"vm_network"` ctx interpolate.Context } @@ -143,12 +144,16 @@ func (p *PostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (pac options = append(options, "--overwrite") } + if len(p.config.Options) > 0 { + options = append(options, p.config.Options...) + } + command := append(options, args...) ui.Message(fmt.Sprintf("Uploading %s to vSphere", vmx)) var out bytes.Buffer log.Printf("Starting ovftool with parameters: %s", strings.Join(command, " ")) - cmd := exec.Command("ovftool", args...) + cmd := exec.Command("ovftool", command...) cmd.Stdout = &out if err := cmd.Run(); err != nil { return nil, false, fmt.Errorf("Failed: %s\nStdout: %s", err, out.String()) diff --git a/website/source/docs/post-processors/vsphere.html.markdown b/website/source/docs/post-processors/vsphere.html.markdown index 326fdf56c..7cb790418 100644 --- a/website/source/docs/post-processors/vsphere.html.markdown +++ b/website/source/docs/post-processors/vsphere.html.markdown @@ -58,3 +58,7 @@ Optional: - `overwrite` (boolean) - If it's true force the system to overwrite the existing files instead create new ones. Default is false + +* `options` (array of strings) - Custom options to add in ovftool. See `ovftool + --help` to list all the options +