packer-cn/builder/googlecompute/driver.go

127 lines
4.9 KiB
Go
Raw Normal View History

package googlecompute
import (
"crypto/rsa"
"time"
compute "google.golang.org/api/compute/v1"
oslogin "google.golang.org/api/oslogin/v1"
)
// Driver is the interface that has to be implemented to communicate
// with GCE. The Driver interface exists mostly to allow a mock implementation
// to be used to test the steps.
type Driver interface {
// CreateImage creates an image from the given disk in Google Compute
// Engine.
CreateImage(name, description, family, zone, disk string, image_labels map[string]string, image_licenses []string, image_encryption_key *compute.CustomerEncryptionKey, imageStorageLocation []string) (<-chan *Image, <-chan error)
// DeleteImage deletes the image with the given name.
DeleteImage(name string) <-chan error
// DeleteInstance deletes the given instance, keeping the boot disk.
2013-12-13 01:34:47 -05:00
DeleteInstance(zone, name string) (<-chan error, error)
// DeleteDisk deletes the disk with the given name.
DeleteDisk(zone, name string) (<-chan error, error)
// GetImage gets an image; tries the default and public projects. If
// fromFamily is true, name designates an image family instead of a
// particular image.
GetImage(name string, fromFamily bool) (*Image, error)
// GetImageFromProject gets an image from a specific projects.
// Returns the image from the first project in slice it can find one
// If fromFamily is true, name designates an image family instead of a particular image.
GetImageFromProjects(project []string, name string, fromFamily bool) (*Image, error)
// GetImageFromProject gets an image from a specific project. If fromFamily
// is true, name designates an image family instead of a particular image.
GetImageFromProject(project, name string, fromFamily bool) (*Image, error)
Some googlecompute fixes and cleanup. Addresses https://github.com/mitchellh/packer/issues/3829. Changes: - startup scripts don't run for Windows since it is isn't implemented yet. - startup scripts use instance metadata instead of serial port output to flag when they are done. - added licenses to Image data type (to check if an Image is a Windows Image). - added GetImage and GetImageFromProject to googlecompute Drivers. - changed some of the builder/googlecompute tests to use github.com/stretchr/testify/assert. Tests: - (in the Packer directory) `go test .`, `go test ./builder/googlecompute`, and `go test ./post-processor/googlecompute-export` - manual run of `packer build packer_template.json` with the following files --packer_template.json-- { "builders": [ { "type": "googlecompute", "account_file": "creds.json", "project_id": "google.com:packer-test", "source_image": "debian-8-jessie-v20160629", "zone": "us-central1-a", "startup_script_file": "startup_script.sh", "metadata": { "startup-script": "#!/bin/sh\necho \"This should be overwritten.\"", "startup-script-log-dest": "gs://packer-test.google.com.a.appspot.com/startup-script.log" }, "image_name": "test-packer-modifications", "ssh_username": "foo" } ], "post-processors": [ { "type": "googlecompute-export", "paths": [ "gs://packer-test.google.com.a.appspot.com/foo.tar.gz", "gs://packer-test.google.com.a.appspot.com/bar.tar.gz" ], "keep_input_artifact": true } ] } --startup_script.sh-- \#!/bin/sh echo "Hi, my name is Scott. I'm waiting 60 seconds!" >> /scott sleep 60 echo "I'm done waiting!" >> /scott
2016-09-07 22:00:30 -04:00
// GetInstanceMetadata gets a metadata variable for the instance, name.
GetInstanceMetadata(zone, name, key string) (string, error)
// GetInternalIP gets the GCE-internal IP address for the instance.
GetInternalIP(zone, name string) (string, error)
// GetNatIP gets the NAT IP address for the instance.
GetNatIP(zone, name string) (string, error)
// GetSerialPortOutput gets the Serial Port contents for the instance.
GetSerialPortOutput(zone, name string) (string, error)
Some googlecompute fixes and cleanup. Addresses https://github.com/mitchellh/packer/issues/3829. Changes: - startup scripts don't run for Windows since it is isn't implemented yet. - startup scripts use instance metadata instead of serial port output to flag when they are done. - added licenses to Image data type (to check if an Image is a Windows Image). - added GetImage and GetImageFromProject to googlecompute Drivers. - changed some of the builder/googlecompute tests to use github.com/stretchr/testify/assert. Tests: - (in the Packer directory) `go test .`, `go test ./builder/googlecompute`, and `go test ./post-processor/googlecompute-export` - manual run of `packer build packer_template.json` with the following files --packer_template.json-- { "builders": [ { "type": "googlecompute", "account_file": "creds.json", "project_id": "google.com:packer-test", "source_image": "debian-8-jessie-v20160629", "zone": "us-central1-a", "startup_script_file": "startup_script.sh", "metadata": { "startup-script": "#!/bin/sh\necho \"This should be overwritten.\"", "startup-script-log-dest": "gs://packer-test.google.com.a.appspot.com/startup-script.log" }, "image_name": "test-packer-modifications", "ssh_username": "foo" } ], "post-processors": [ { "type": "googlecompute-export", "paths": [ "gs://packer-test.google.com.a.appspot.com/foo.tar.gz", "gs://packer-test.google.com.a.appspot.com/bar.tar.gz" ], "keep_input_artifact": true } ] } --startup_script.sh-- \#!/bin/sh echo "Hi, my name is Scott. I'm waiting 60 seconds!" >> /scott sleep 60 echo "I'm done waiting!" >> /scott
2016-09-07 22:00:30 -04:00
// ImageExists returns true if the specified image exists. If an error
// occurs calling the API, this method returns false.
ImageExists(name string) bool
// RunInstance takes the given config and launches an instance.
RunInstance(*InstanceConfig) (<-chan error, error)
// WaitForInstance waits for an instance to reach the given state.
WaitForInstance(state, zone, name string) <-chan error
// CreateOrResetWindowsPassword creates or resets the password for a user on an Windows instance.
CreateOrResetWindowsPassword(zone, name string, config *WindowsPasswordConfig) (<-chan error, error)
// ImportOSLoginSSHKey imports SSH public key for OSLogin.
ImportOSLoginSSHKey(user, sshPublicKey string) (*oslogin.LoginProfile, error)
// DeleteOSLoginSSHKey deletes the SSH public key for OSLogin with the given key.
DeleteOSLoginSSHKey(user, fingerprint string) error
Amend commit author for license pass $ make test find: -executable: unknown primary or operator find: -executable: unknown primary or operator ==> Checking that only certain files are executable... Check passed. ok github.com/hashicorp/packer 0.098s ok github.com/hashicorp/packer/builder/alicloud/ecs 70.102s ? github.com/hashicorp/packer/builder/alicloud/version [no test files] ok github.com/hashicorp/packer/builder/amazon/chroot 0.076s ok github.com/hashicorp/packer/builder/amazon/common 0.052s ? github.com/hashicorp/packer/builder/amazon/common/awserrors [no test files] ? github.com/hashicorp/packer/builder/amazon/common/ssm [no test files] ok github.com/hashicorp/packer/builder/amazon/ebs 0.053s ? github.com/hashicorp/packer/builder/amazon/ebs/acceptance [no test files] ok github.com/hashicorp/packer/builder/amazon/ebssurrogate 0.057s ok github.com/hashicorp/packer/builder/amazon/ebsvolume 0.052s ok github.com/hashicorp/packer/builder/amazon/instance 0.092s ? github.com/hashicorp/packer/builder/amazon/version [no test files] ok github.com/hashicorp/packer/builder/azure/arm 8.929s ok github.com/hashicorp/packer/builder/azure/chroot 0.071s ok github.com/hashicorp/packer/builder/azure/common 0.032s ok github.com/hashicorp/packer/builder/azure/common/client 2.768s ? github.com/hashicorp/packer/builder/azure/common/constants [no test files] ? github.com/hashicorp/packer/builder/azure/common/lin [no test files] ? github.com/hashicorp/packer/builder/azure/common/logutil [no test files] ok github.com/hashicorp/packer/builder/azure/common/template 0.038s ok github.com/hashicorp/packer/builder/azure/dtl 1.508s ok github.com/hashicorp/packer/builder/azure/pkcs12 0.250s ok github.com/hashicorp/packer/builder/azure/pkcs12/rc2 0.018s ? github.com/hashicorp/packer/builder/azure/version [no test files] ok github.com/hashicorp/packer/builder/cloudstack 0.074s ? github.com/hashicorp/packer/builder/cloudstack/version [no test files] ok github.com/hashicorp/packer/builder/digitalocean 0.078s ? github.com/hashicorp/packer/builder/digitalocean/version [no test files] ok github.com/hashicorp/packer/builder/docker 0.054s ? github.com/hashicorp/packer/builder/docker/version [no test files] ok github.com/hashicorp/packer/builder/file 0.037s ? github.com/hashicorp/packer/builder/file/version [no test files] ok github.com/hashicorp/packer/builder/googlecompute 7.982s ? github.com/hashicorp/packer/builder/googlecompute/version [no test files] ok github.com/hashicorp/packer/builder/hcloud 0.037s ? github.com/hashicorp/packer/builder/hcloud/version [no test files] ok github.com/hashicorp/packer/builder/hyperone 0.031s ? github.com/hashicorp/packer/builder/hyperone/version [no test files] ok github.com/hashicorp/packer/builder/hyperv/common 0.042s ok github.com/hashicorp/packer/builder/hyperv/common/powershell 0.017s ok github.com/hashicorp/packer/builder/hyperv/common/powershell/hyperv 0.027s ok github.com/hashicorp/packer/builder/hyperv/iso 0.193s ? github.com/hashicorp/packer/builder/hyperv/version [no test files] ok github.com/hashicorp/packer/builder/hyperv/vmcx 0.160s ok github.com/hashicorp/packer/builder/jdcloud 0.038s ? github.com/hashicorp/packer/builder/jdcloud/version [no test files] ok github.com/hashicorp/packer/builder/linode 0.074s ? github.com/hashicorp/packer/builder/linode/version [no test files] ok github.com/hashicorp/packer/builder/lxc 0.038s ? github.com/hashicorp/packer/builder/lxc/version [no test files] ok github.com/hashicorp/packer/builder/lxd 0.033s ? github.com/hashicorp/packer/builder/lxd/version [no test files] ok github.com/hashicorp/packer/builder/ncloud 0.038s ? github.com/hashicorp/packer/builder/ncloud/version [no test files] ok github.com/hashicorp/packer/builder/null 0.036s ? github.com/hashicorp/packer/builder/null/version [no test files] ok github.com/hashicorp/packer/builder/oneandone 0.038s ? github.com/hashicorp/packer/builder/oneandone/version [no test files] ok github.com/hashicorp/packer/builder/openstack 0.048s ? github.com/hashicorp/packer/builder/openstack/version [no test files] ok github.com/hashicorp/packer/builder/oracle/classic 0.055s ? github.com/hashicorp/packer/builder/oracle/common [no test files] ok github.com/hashicorp/packer/builder/oracle/oci 6.349s ? github.com/hashicorp/packer/builder/oracle/version [no test files] ok github.com/hashicorp/packer/builder/osc/bsu 0.045s ok github.com/hashicorp/packer/builder/osc/bsusurrogate 0.043s ok github.com/hashicorp/packer/builder/osc/bsuvolume 0.048s ok github.com/hashicorp/packer/builder/osc/chroot 0.035s ok github.com/hashicorp/packer/builder/osc/common 0.030s ok github.com/hashicorp/packer/builder/osc/common/retry 0.018s ? github.com/hashicorp/packer/builder/osc/version [no test files] ok github.com/hashicorp/packer/builder/parallels/common 1.546s ok github.com/hashicorp/packer/builder/parallels/iso 0.047s ok github.com/hashicorp/packer/builder/parallels/pvm 0.044s ? github.com/hashicorp/packer/builder/parallels/version [no test files] ok github.com/hashicorp/packer/builder/profitbricks 0.046s ? github.com/hashicorp/packer/builder/profitbricks/version [no test files] ? github.com/hashicorp/packer/builder/proxmox [no test files] ? github.com/hashicorp/packer/builder/proxmox/clone [no test files] ok github.com/hashicorp/packer/builder/proxmox/common 0.070s ok github.com/hashicorp/packer/builder/proxmox/iso 0.072s ? github.com/hashicorp/packer/builder/proxmox/version [no test files] ok github.com/hashicorp/packer/builder/qemu 0.088s ? github.com/hashicorp/packer/builder/qemu/version [no test files] ok github.com/hashicorp/packer/builder/scaleway 0.062s ? github.com/hashicorp/packer/builder/scaleway/version [no test files] ok github.com/hashicorp/packer/builder/tencentcloud/cvm 0.037s ? github.com/hashicorp/packer/builder/tencentcloud/version [no test files] ok github.com/hashicorp/packer/builder/triton 0.057s ? github.com/hashicorp/packer/builder/triton/version [no test files] ok github.com/hashicorp/packer/builder/ucloud/common 0.039s ok github.com/hashicorp/packer/builder/ucloud/uhost 0.045s ? github.com/hashicorp/packer/builder/ucloud/version [no test files] ok github.com/hashicorp/packer/builder/vagrant 0.046s ? github.com/hashicorp/packer/builder/vagrant/version [no test files] ok github.com/hashicorp/packer/builder/virtualbox/common 2.546s ok github.com/hashicorp/packer/builder/virtualbox/iso 0.053s ? github.com/hashicorp/packer/builder/virtualbox/iso/acceptance [no test files] ok github.com/hashicorp/packer/builder/virtualbox/ovf 0.043s ? github.com/hashicorp/packer/builder/virtualbox/version [no test files] ? github.com/hashicorp/packer/builder/virtualbox/vm [no test files] ok github.com/hashicorp/packer/builder/vmware/common 5.228s ok github.com/hashicorp/packer/builder/vmware/iso 0.104s ? github.com/hashicorp/packer/builder/vmware/version [no test files] ok github.com/hashicorp/packer/builder/vmware/vmx 0.055s ok github.com/hashicorp/packer/builder/vsphere/clone 0.072s ok github.com/hashicorp/packer/builder/vsphere/common 0.037s ? github.com/hashicorp/packer/builder/vsphere/common/testing [no test files] ok github.com/hashicorp/packer/builder/vsphere/driver 0.443s ? github.com/hashicorp/packer/builder/vsphere/examples/driver [no test files] ok github.com/hashicorp/packer/builder/vsphere/iso 0.063s ? github.com/hashicorp/packer/builder/vsphere/version [no test files] ok github.com/hashicorp/packer/builder/yandex 0.098s ? github.com/hashicorp/packer/builder/yandex/version [no test files] ? github.com/hashicorp/packer/cmd/generate-fixer-deprecations [no test files] ? github.com/hashicorp/packer/cmd/mapstructure-to-hcl2 [no test files] ? github.com/hashicorp/packer/cmd/snippet-extractor [no test files] ? github.com/hashicorp/packer/cmd/ssh-keygen [no test files] ? github.com/hashicorp/packer/cmd/struct-markdown [no test files] ok github.com/hashicorp/packer/command 3.717s ? github.com/hashicorp/packer/command/enumflag [no test files] ok github.com/hashicorp/packer/command/flag-kv 0.019s ok github.com/hashicorp/packer/command/flag-slice 0.018s ok github.com/hashicorp/packer/fix 0.026s ok github.com/hashicorp/packer/hcl2template 0.281s ? github.com/hashicorp/packer/hcl2template/addrs [no test files] ok github.com/hashicorp/packer/hcl2template/function 0.028s ? github.com/hashicorp/packer/hcl2template/internal [no test files] ? github.com/hashicorp/packer/hcl2template/repl [no test files] ok github.com/hashicorp/packer/hcl2template/shim 0.019s ok github.com/hashicorp/packer/helper/builder/testing 0.027s ok github.com/hashicorp/packer/helper/communicator 0.034s ok github.com/hashicorp/packer/helper/communicator/ssh 4.204s ok github.com/hashicorp/packer/helper/communicator/sshkey 2.744s ? github.com/hashicorp/packer/helper/tests [no test files] ? github.com/hashicorp/packer/helper/tests/acc [no test files] ? github.com/hashicorp/packer/helper/wrappedreadline [no test files] ? github.com/hashicorp/packer/helper/wrappedstreams [no test files] ok github.com/hashicorp/packer/packer 0.221s ok github.com/hashicorp/packer/packer/plugin 0.417s ok github.com/hashicorp/packer/packer/rpc 0.059s ok github.com/hashicorp/packer/packer-plugin-sdk/adapter 0.063s ok github.com/hashicorp/packer/packer-plugin-sdk/bootcommand 2.778s ok github.com/hashicorp/packer/packer-plugin-sdk/chroot 0.038s ? github.com/hashicorp/packer/packer-plugin-sdk/common [no test files] ? github.com/hashicorp/packer/packer-plugin-sdk/filelock [no test files] ok github.com/hashicorp/packer/packer-plugin-sdk/guestexec 0.029s ok github.com/hashicorp/packer/packer-plugin-sdk/iochan 0.019s ok github.com/hashicorp/packer/packer-plugin-sdk/json 0.017s [no tests to run] ok github.com/hashicorp/packer/packer-plugin-sdk/multistep 0.126s ok github.com/hashicorp/packer/packer-plugin-sdk/multistep/commonsteps 0.136s ok github.com/hashicorp/packer/packer-plugin-sdk/net 1.041s ok github.com/hashicorp/packer/packer-plugin-sdk/packerbuilderdata 0.018s ? github.com/hashicorp/packer/packer-plugin-sdk/random [no test files] ok github.com/hashicorp/packer/packer-plugin-sdk/retry 0.021s ok github.com/hashicorp/packer/packer-plugin-sdk/sdk-internals/communicator/none 0.026s ok github.com/hashicorp/packer/packer-plugin-sdk/sdk-internals/communicator/ssh 0.095s ok github.com/hashicorp/packer/packer-plugin-sdk/sdk-internals/communicator/winrm 0.062s ok github.com/hashicorp/packer/packer-plugin-sdk/shell 0.023s ok github.com/hashicorp/packer/packer-plugin-sdk/shell-local 0.045s ok github.com/hashicorp/packer/packer-plugin-sdk/shell-local/localexec 0.031s ok github.com/hashicorp/packer/packer-plugin-sdk/shutdowncommand 0.032s ok github.com/hashicorp/packer/packer-plugin-sdk/template 0.041s ok github.com/hashicorp/packer/packer-plugin-sdk/template/config 0.033s ok github.com/hashicorp/packer/packer-plugin-sdk/template/interpolate 0.032s ok github.com/hashicorp/packer/packer-plugin-sdk/template/interpolate/aws/secretsmanager 0.030s ? github.com/hashicorp/packer/packer-plugin-sdk/tmp [no test files] ok github.com/hashicorp/packer/packer-plugin-sdk/useragent 0.018s ok github.com/hashicorp/packer/packer-plugin-sdk/uuid 0.019s ? github.com/hashicorp/packer/packer-plugin-sdk/version [no test files] ok github.com/hashicorp/packer/plugin/example 0.040s [no tests to run] ? github.com/hashicorp/packer/post-processor/alicloud-import [no test files] ? github.com/hashicorp/packer/post-processor/alicloud-import/version [no test files] ? github.com/hashicorp/packer/post-processor/amazon-import [no test files] ? github.com/hashicorp/packer/post-processor/amazon-import/version [no test files] ? github.com/hashicorp/packer/post-processor/artifice [no test files] ? github.com/hashicorp/packer/post-processor/artifice/version [no test files] ok github.com/hashicorp/packer/post-processor/checksum 0.032s ? github.com/hashicorp/packer/post-processor/checksum/version [no test files] ok github.com/hashicorp/packer/post-processor/compress 0.046s ? github.com/hashicorp/packer/post-processor/compress/version [no test files] ok github.com/hashicorp/packer/post-processor/digitalocean-import 0.038s ? github.com/hashicorp/packer/post-processor/digitalocean-import/version [no test files] ok github.com/hashicorp/packer/post-processor/docker-import 0.036s ? github.com/hashicorp/packer/post-processor/docker-import/version [no test files] ok github.com/hashicorp/packer/post-processor/docker-push 0.037s ? github.com/hashicorp/packer/post-processor/docker-push/version [no test files] ok github.com/hashicorp/packer/post-processor/docker-save 0.038s ? github.com/hashicorp/packer/post-processor/docker-save/version [no test files] ok github.com/hashicorp/packer/post-processor/docker-tag 0.042s ? github.com/hashicorp/packer/post-processor/docker-tag/version [no test files] ? github.com/hashicorp/packer/post-processor/exoscale-import [no test files] ? github.com/hashicorp/packer/post-processor/exoscale-import/version [no test files] ok github.com/hashicorp/packer/post-processor/googlecompute-export 0.044s [no tests to run] ? github.com/hashicorp/packer/post-processor/googlecompute-export/version [no test files] ok github.com/hashicorp/packer/post-processor/googlecompute-import 0.035s ? github.com/hashicorp/packer/post-processor/googlecompute-import/version [no test files] ? github.com/hashicorp/packer/post-processor/manifest [no test files] ? github.com/hashicorp/packer/post-processor/manifest/version [no test files] ok github.com/hashicorp/packer/post-processor/shell-local 0.047s ? github.com/hashicorp/packer/post-processor/shell-local/version [no test files] ? github.com/hashicorp/packer/post-processor/ucloud-import [no test files] ? github.com/hashicorp/packer/post-processor/ucloud-import/version [no test files] ok github.com/hashicorp/packer/post-processor/vagrant 0.045s ? github.com/hashicorp/packer/post-processor/vagrant/version [no test files] ok github.com/hashicorp/packer/post-processor/vagrant-cloud 0.089s ? github.com/hashicorp/packer/post-processor/vagrant-cloud/version [no test files] ok github.com/hashicorp/packer/post-processor/vsphere 0.038s ? github.com/hashicorp/packer/post-processor/vsphere/version [no test files] ok github.com/hashicorp/packer/post-processor/vsphere-template 0.047s ? github.com/hashicorp/packer/post-processor/vsphere-template/version [no test files] ok github.com/hashicorp/packer/post-processor/yandex-export 0.055s ? github.com/hashicorp/packer/post-processor/yandex-export/version [no test files] ok github.com/hashicorp/packer/post-processor/yandex-import 0.052s ? github.com/hashicorp/packer/post-processor/yandex-import/version [no test files] ok github.com/hashicorp/packer/provisioner/ansible 0.469s ? github.com/hashicorp/packer/provisioner/ansible/version [no test files] ok github.com/hashicorp/packer/provisioner/ansible-local 0.055s ? github.com/hashicorp/packer/provisioner/ansible-local/version [no test files] ? github.com/hashicorp/packer/provisioner/azure-dtlartifact [no test files] ? github.com/hashicorp/packer/provisioner/azure-dtlartifact/version [no test files] ? github.com/hashicorp/packer/provisioner/breakpoint [no test files] ? github.com/hashicorp/packer/provisioner/breakpoint/version [no test files] ok github.com/hashicorp/packer/provisioner/chef-client 0.056s ? github.com/hashicorp/packer/provisioner/chef-client/version [no test files] ok github.com/hashicorp/packer/provisioner/chef-solo 0.045s ? github.com/hashicorp/packer/provisioner/chef-solo/version [no test files] ok github.com/hashicorp/packer/provisioner/converge 0.033s ? github.com/hashicorp/packer/provisioner/converge/version [no test files] ok github.com/hashicorp/packer/provisioner/file 0.051s ? github.com/hashicorp/packer/provisioner/file/version [no test files] ok github.com/hashicorp/packer/provisioner/inspec 0.050s ? github.com/hashicorp/packer/provisioner/inspec/version [no test files] ok github.com/hashicorp/packer/provisioner/powershell 2.095s ? github.com/hashicorp/packer/provisioner/powershell/version [no test files] ok github.com/hashicorp/packer/provisioner/puppet-masterless 0.049s ? github.com/hashicorp/packer/provisioner/puppet-masterless/version [no test files] ok github.com/hashicorp/packer/provisioner/puppet-server 0.043s ? github.com/hashicorp/packer/provisioner/puppet-server/version [no test files] ok github.com/hashicorp/packer/provisioner/salt-masterless 0.054s ? github.com/hashicorp/packer/provisioner/salt-masterless/version [no test files] ok github.com/hashicorp/packer/provisioner/shell 0.085s ? github.com/hashicorp/packer/provisioner/shell/version [no test files] ok github.com/hashicorp/packer/provisioner/shell-local 0.071s ? github.com/hashicorp/packer/provisioner/shell-local/version [no test files] ok github.com/hashicorp/packer/provisioner/sleep 0.027s ? github.com/hashicorp/packer/provisioner/sleep/version [no test files] ok github.com/hashicorp/packer/provisioner/windows-restart 0.051s ? github.com/hashicorp/packer/provisioner/windows-restart/version [no test files] ok github.com/hashicorp/packer/provisioner/windows-shell 0.039s ? github.com/hashicorp/packer/provisioner/windows-shell/version [no test files] ? github.com/hashicorp/packer/scripts [no test files] ? github.com/hashicorp/packer/version [no test files]
2020-12-01 09:50:36 -05:00
// Add to the instance metadata for the existing instance
AddToInstanceMetadata(zone string, name string, metadata map[string]string) (<-chan error, error)
}
type InstanceConfig struct {
AcceleratorType string
AcceleratorCount int64
Address string
Description string
DisableDefaultServiceAccount bool
DiskSizeGb int64
DiskType string
EnableSecureBoot bool
EnableVtpm bool
EnableIntegrityMonitoring bool
Image *Image
Labels map[string]string
MachineType string
Metadata map[string]string
2018-08-21 04:09:30 -04:00
MinCpuPlatform string
Name string
Network string
NetworkProjectId string
OmitExternalIP bool
OnHostMaintenance string
Preemptible bool
Region string
ServiceAccountEmail string
Scopes []string
Subnetwork string
Tags []string
Zone string
}
2018-03-13 23:23:56 -04:00
// WindowsPasswordConfig is the data structure that GCE needs to encrypt the created
// windows password.
type WindowsPasswordConfig struct {
key *rsa.PrivateKey
password string
UserName string `json:"userName"`
Modulus string `json:"modulus"`
Exponent string `json:"exponent"`
Email string `json:"email"`
ExpireOn time.Time `json:"expireOn"`
}
type windowsPasswordResponse struct {
UserName string `json:"userName"`
PasswordFound bool `json:"passwordFound"`
EncryptedPassword string `json:"encryptedPassword"`
Modulus string `json:"modulus"`
Exponent string `json:"exponent"`
ErrorMessage string `json:"errorMessage"`
}