diff --git a/builder/googlecompute/config.go b/builder/googlecompute/config.go index 13446a092..ab2d5b7cb 100644 --- a/builder/googlecompute/config.go +++ b/builder/googlecompute/config.go @@ -25,6 +25,7 @@ type Config struct { DiskName string `mapstructure:"disk_name"` DiskSizeGb int64 `mapstructure:"disk_size"` + DiskType string `mapstructure:"disk_type"` ImageName string `mapstructure:"image_name"` ImageDescription string `mapstructure:"image_description"` InstanceName string `mapstructure:"instance_name"` @@ -74,6 +75,10 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) { c.DiskSizeGb = 10 } + if c.DiskType == "" { + c.DiskType = "pd-standard" + } + if c.ImageDescription == "" { c.ImageDescription = "Created by Packer" } diff --git a/builder/googlecompute/driver.go b/builder/googlecompute/driver.go index 1789a988a..5f4ad3ca7 100644 --- a/builder/googlecompute/driver.go +++ b/builder/googlecompute/driver.go @@ -42,6 +42,7 @@ type Image struct { type InstanceConfig struct { Description string DiskSizeGb int64 + DiskType string Image Image MachineType string Metadata map[string]string diff --git a/builder/googlecompute/driver_gce.go b/builder/googlecompute/driver_gce.go index dbe978158..7c8e45f02 100644 --- a/builder/googlecompute/driver_gce.go +++ b/builder/googlecompute/driver_gce.go @@ -274,6 +274,7 @@ func (d *driverGCE) RunInstance(c *InstanceConfig) (<-chan error, error) { InitializeParams: &compute.AttachedDiskInitializeParams{ SourceImage: image.SelfLink, DiskSizeGb: c.DiskSizeGb, + DiskType: fmt.Sprintf("zones/%s/diskTypes/%s", zone.Name, c.DiskType), }, }, }, diff --git a/builder/googlecompute/step_create_instance.go b/builder/googlecompute/step_create_instance.go index 3f6874f6a..45320d158 100644 --- a/builder/googlecompute/step_create_instance.go +++ b/builder/googlecompute/step_create_instance.go @@ -54,6 +54,7 @@ func (s *StepCreateInstance) Run(state multistep.StateBag) multistep.StepAction errCh, err := driver.RunInstance(&InstanceConfig{ Description: "New instance created by Packer", DiskSizeGb: config.DiskSizeGb, + DiskType: config.DiskType, Image: config.getImage(), MachineType: config.MachineType, Metadata: config.getInstanceMetadata(sshPublicKey),