diff --git a/builder/googlecompute/config.go b/builder/googlecompute/config.go index a47e628f5..803963eb3 100644 --- a/builder/googlecompute/config.go +++ b/builder/googlecompute/config.go @@ -18,6 +18,7 @@ type Config struct { BucketName string `mapstructure:"bucket_name"` ClientSecretsFile string `mapstructure:"client_secrets_file"` + DiskSizeGb int64 `mapstructure:"disk_size"` ImageName string `mapstructure:"image_name"` ImageDescription string `mapstructure:"image_description"` InstanceName string `mapstructure:"instance_name"` @@ -64,6 +65,10 @@ func NewConfig(raws ...interface{}) (*Config, []string, error) { c.Network = "default" } + if c.DiskSizeGb == 0 { + c.DiskSizeGb = 10 + } + if c.ImageDescription == "" { c.ImageDescription = "Created by Packer" } diff --git a/builder/googlecompute/driver.go b/builder/googlecompute/driver.go index 743440e24..f4b6006a9 100644 --- a/builder/googlecompute/driver.go +++ b/builder/googlecompute/driver.go @@ -25,6 +25,7 @@ type Driver interface { type InstanceConfig struct { Description string + DiskSizeGb int64 Image string MachineType string Metadata map[string]string diff --git a/builder/googlecompute/driver_gce.go b/builder/googlecompute/driver_gce.go index 9c155ae81..65d7c7bcd 100644 --- a/builder/googlecompute/driver_gce.go +++ b/builder/googlecompute/driver_gce.go @@ -177,6 +177,7 @@ func (d *driverGCE) RunInstance(c *InstanceConfig) (<-chan error, error) { AutoDelete: true, InitializeParams: &compute.AttachedDiskInitializeParams{ SourceImage: image.SelfLink, + DiskSizeGb: c.DiskSizeGb, }, }, }, diff --git a/builder/googlecompute/step_create_image.go b/builder/googlecompute/step_create_image.go index 249b59186..ef8026a99 100644 --- a/builder/googlecompute/step_create_image.go +++ b/builder/googlecompute/step_create_image.go @@ -31,8 +31,8 @@ func (s *StepCreateImage) Run(state multistep.StateBag) multistep.StepAction { ui.Say("Creating image...") cmd := new(packer.RemoteCmd) - cmd.Command = fmt.Sprintf("%s%s --output_file_name %s", - sudoPrefix, imageBundleCmd, imageFilename) + cmd.Command = fmt.Sprintf("%s%s --output_file_name %s --fssize %d", + sudoPrefix, imageBundleCmd, imageFilename, config.DiskSizeGb*1024*1024*1024) err := cmd.StartWithUi(comm, ui) if err == nil && cmd.ExitStatus != 0 { err = fmt.Errorf( diff --git a/builder/googlecompute/step_create_instance.go b/builder/googlecompute/step_create_instance.go index ff94d5d38..3eab82021 100644 --- a/builder/googlecompute/step_create_instance.go +++ b/builder/googlecompute/step_create_instance.go @@ -28,6 +28,7 @@ func (s *StepCreateInstance) Run(state multistep.StateBag) multistep.StepAction errCh, err := driver.RunInstance(&InstanceConfig{ Description: "New instance created by Packer", + DiskSizeGb: config.DiskSizeGb, Image: config.SourceImage, MachineType: config.MachineType, Metadata: map[string]string{ diff --git a/website/source/docs/builders/googlecompute.markdown b/website/source/docs/builders/googlecompute.markdown index c5410d78b..6d3c6216d 100644 --- a/website/source/docs/builders/googlecompute.markdown +++ b/website/source/docs/builders/googlecompute.markdown @@ -91,6 +91,9 @@ each category, the available options are alphabetized and described. ### Optional: +* `disk_size` (integer) - The size of the disk in GB. + This defaults to 10, which is 10GB. + * `image_name` (string) - The unique name of the resulting image. Defaults to `packer-{{timestamp}}`.