|
|
|
|
@ -20,6 +20,11 @@ type vmxTemplateData struct {
|
|
|
|
|
Version string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
type additionalDiskTemplateData struct {
|
|
|
|
|
DiskNumber int
|
|
|
|
|
DiskName string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// This step creates the VMX file for the VM.
|
|
|
|
|
//
|
|
|
|
|
// Uses:
|
|
|
|
|
@ -70,6 +75,25 @@ func (s *stepCreateVMX) Run(state multistep.StateBag) multistep.StepAction {
|
|
|
|
|
|
|
|
|
|
vmxTemplate = string(rawBytes)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(config.AdditionalDiskSize) > 0 {
|
|
|
|
|
for i, _ := range config.AdditionalDiskSize {
|
|
|
|
|
data := &additionalDiskTemplateData{
|
|
|
|
|
DiskNumber: i+1,
|
|
|
|
|
DiskName: config.DiskName,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
diskTemplate, err := config.tpl.Process(DefaultAdditionalDiskTemplate,data)
|
|
|
|
|
if err != nil {
|
|
|
|
|
err := fmt.Errorf("Error preparing VMX template for additional disk: %s", err)
|
|
|
|
|
state.Put("error", err)
|
|
|
|
|
ui.Error(err.Error())
|
|
|
|
|
return multistep.ActionHalt
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vmxTemplate += diskTemplate
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vmxContents, err := interpolate.Render(vmxTemplate, &ctx)
|
|
|
|
|
if err != nil {
|
|
|
|
|
@ -191,3 +215,9 @@ vmci0.pciSlotNumber = "35"
|
|
|
|
|
vmci0.present = "TRUE"
|
|
|
|
|
vmotion.checkpointFBSize = "65536000"
|
|
|
|
|
`
|
|
|
|
|
|
|
|
|
|
const DefaultAdditionalDiskTemplate = `
|
|
|
|
|
scsi0:{{ .DiskNumber }}.fileName = "{{ .DiskName}}-{{ .DiskNumber }}.vmdk"
|
|
|
|
|
scsi0:{{ .DiskNumber }}.present = "TRUE"
|
|
|
|
|
scsi0:{{ .DiskNumber }}.redo = ""
|
|
|
|
|
`
|
|
|
|
|
|