33module Packer
44 module Config
55 class Gcp
6- def initialize ( account_json :, project_id :, source_image :, image_family :, os :, output_directory :, version :, vm_prefix : '' , mount_ephemeral_disk : false )
6+ def initialize (
7+ account_json :,
8+ project_id :,
9+ source_image :,
10+ image_family :,
11+ os :,
12+ output_directory :,
13+ version :,
14+ vm_prefix : '' ,
15+ mount_ephemeral_disk : false ,
16+ root_disk_size : 32 ,
17+ omit_external_ip : false ,
18+ vm_tags : [ 'winrm' ] ,
19+ network : nil ,
20+ network_project_id : nil ,
21+ subnetwork : nil )
722 @account_json = account_json
823 @project_id = project_id
924 @source_image = source_image
@@ -13,32 +28,42 @@ def initialize(account_json:, project_id:, source_image:, image_family:, os:, ou
1328 @version = version
1429 @vm_prefix = vm_prefix . empty? ? 'packer' : vm_prefix
1530 @mount_ephemeral_disk = mount_ephemeral_disk
31+ @root_disk_size = root_disk_size
32+ @omit_external_ip = omit_external_ip
33+ @vm_tags = vm_tags
34+ @network = network
35+ @network_project_id = network_project_id
36+ @subnetwork = subnetwork
1637 end
1738
1839 def builders
1940 [
20- {
21- 'type' => 'googlecompute' ,
22- 'credentials_json' => @account_json ,
23- 'project_id' => @project_id ,
24- 'tags' => [ 'winrm' ] ,
25- 'source_image' => @source_image ,
26- 'image_family' => @image_family ,
27- 'zone' => 'us-east1-c' ,
28- 'disk_size' => 32 ,
29- 'image_name' => "packer-#{ Time . now . to_i } " ,
30- 'machine_type' => 'n1-standard-4' ,
31- 'omit_external_ip' => false ,
32- 'communicator' => 'winrm' ,
33- 'winrm_username' => 'winrmuser' ,
34- 'winrm_use_ssl' => false ,
35- 'winrm_timeout' => '1h' ,
36- 'state_timeout' => '10m' ,
37- 'metadata' => {
38- 'sysprep-specialize-script-url' => 'https://raw.githubusercontent.com/cloudfoundry/bosh-windows-stemcell-builder/master/scripts/gcp/setup-winrm.ps1' ,
39- 'name' => "#{ @vm_prefix } -#{ Time . now . to_i } " ,
40- }
41- }
41+ {
42+ 'type' => 'googlecompute' ,
43+ 'credentials_json' => @account_json ,
44+ 'project_id' => @project_id ,
45+ 'tags' => @vm_tags ,
46+ 'source_image' => @source_image ,
47+ 'image_family' => @image_family ,
48+ 'zone' => 'us-west1-c' ,
49+ 'disk_size' => @root_disk_size ,
50+ 'image_name' => "packer-#{ Time . now . to_i } " ,
51+ 'machine_type' => 'n1-standard-4' ,
52+ 'network' => @network ,
53+ 'network_project_id' => @network_project_id ,
54+ 'subnetwork' => @subnetwork ,
55+ 'omit_external_ip' => @omit_external_ip ,
56+ 'use_internal_ip' => @omit_external_ip ,
57+ 'communicator' => 'winrm' ,
58+ 'winrm_username' => 'winrmuser' ,
59+ 'winrm_use_ssl' => false ,
60+ 'winrm_timeout' => '1h' ,
61+ 'state_timeout' => '10m' ,
62+ 'metadata' => {
63+ 'sysprep-specialize-script-url' => 'https://raw.githubusercontent.com/cloudfoundry/bosh-windows-stemcell-builder/master/scripts/gcp/setup-winrm.ps1' ,
64+ 'name' => "#{ @vm_prefix } -#{ Time . now . to_i } " ,
65+ } . compact_blank!
66+ }
4267 ]
4368 end
4469
@@ -48,8 +73,8 @@ def provisioners
4873
4974 def dump
5075 JSON . dump (
51- 'builders' => builders ,
52- 'provisioners' => provisioners
76+ 'builders' => builders ,
77+ 'provisioners' => provisioners
5378 )
5479 end
5580 end
0 commit comments