google::compute-instance

Creates an instance.

Example

zone: "us-west1-a"

google::compute-instance gyro-dev-1
    name: "gyro-development"
    description: "Testing for Gyro"
    zone: $zone
    machine-type: "zones/$(zone)/machineTypes/n1-standard-1"

    network-interface
        network: $(external-query google::compute-network {name: "default"})
    end

    initialize-disk
        boot: true

        initialize-params
            disk-name: "gyro-boot-disk"
            source-image: "projects/debian-cloud/global/images/family/debian-9"
        end
    end

    initialize-disk
        initialize-params
            disk-name: "gyro-secondary-disk"
            source-image: "projects/debian-cloud/global/images/family/debian-9"
            resource-policy: $(google::compute-resource-policy instance-attached-disk-example)
        end
    end

    labels: {
        "gyro": "install"
    }

    metadata: {
        test-key: "test-value"
    }

    tags: ["test-tag"]
end

Attributes

Attribute Description
name The name of the resource when initially creating the resource. Must be a string 1-63 characters long and the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. Valid values satisfy the regex: [^[a-z]([-a-z0-9]{1,61}[a-z0-9])?]. (Required)
zone Name of zone the where the instance resides, i.e., us-central1-a. for the current list of zones. See `available region and zones<https://cloud.google.com/compute/docs/regions-zones/#available/>`_. (Required)
machine-type Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. See creating custom machine types.
network-interface list subresource

List of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported. (Required)

network resource

Network for this instance. If neither the network or subnetwork is specified, the default network global/networks/default is used and if the network is not specified but the subnetwork is specified, the network is inferred. (Required)

subnetwork resource

Subnetwork for this instance. If the network resource is in legacy mode, do not specify this field. If the network is in auto subnet mode, specifying the subnetwork is optional. If the network is in custom subnet mode, specifying the subnetwork is required.

network-ip
An IPv4 internal IP address to assign for this network interface. If unspecified an unused internal IP is assigned.
access-config list subresource

A list of access configurations for this interface. Currently, only NE_TO_ONE_NAT is supported. If unspecified this instance will have no external internet access.

name
Name of this access configuration. Default and recommended name is External NAT, but can be any arbitrary string.
nat-ip
An unused static external IP address available to the project. Leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.
network-tier
Signifies the networking tier used for configuring this access configuration. If specified without a valid external IP address, an ephemeral IP will be created with this networkTier. If a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP. Valid values are PREMIUM or STANDARD.
public-ptr-domain-name
The DNS domain name for the public PTR record. Can only be set if the setPublicPtr field is set to true.
set-public-ptr
if true a public DNS ‘PTR’ record should be created to map the external IP address of the instance to a DNS domain name.
type
The type of configuration. Defaults to ONE_TO_ONE_NAT. Currently the only supported value is ONE_TO_ONE_NAT.
alias-ip-range list subresource

A list of alias IP ranges for this network interface. Can only specify this for network interfaces in VPC networks.

ip-cidr-range
The IP alias ranges to allocate for this interface. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR-formatted string (e.g. 10.1.2.0/24).
subnetwork-range-name
Name given to a subnetwork secondary IP range for use in allocating the IP alias range. Unspecified the primary range of the subnetwork is used.
fingerprint
Fingerprint hash of contents stored in this network interface. Will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface, otherwise the request will fail with HTTP error 412.
can-ip-forward When set to true, this instance is allowed to send and receive packets with non-matching destination or source IPs. Defaults to false.
labels map Map of key-value pairs to apply to the instance.
initialize-disk list subresource

Parameters for a new disk that will be created alongside the new instance. Use to create boot disks or local SSDs attached to the new instance.

auto-delete
When set to true the disk will be auto-deleted when the instance is deleted, but not when the disk is detached from the instance.
boot
When set to true, the virtual machine will use the first partition of the boot disk for its root filesystem.
device-name
Only for persistent disks, the unique device name reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. The name can then be used to reference the device for mounting, resizing, etc.. from within the instance. Unspecified the server chooses a default name in the form of persistent-disk-x, where x is a number assigned by Google Compute Engine.
disk-encryption-key subresource

When creating a new disk this field encrypts the new disk using the supplied encryption key. If attaching an existing disk already encrypted, this decrypts the disk using the supplied encryption key.||If you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time.||If you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later. Instance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group.

raw-key
The 256-bit encryption key, encoded in RFC 4648 base64, that protects this resource. See Encrypt disks with customer-supplied encryption keys. (Required)
guest-os-feature list subresource

List of features to enable on the guest operating system. Applicable only for bootable images. See `enabling guest operating system features<https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features/>`_.

type
Enables one or more features for VM instances that use the image for their boot disks. Valid values are FEATURE_TYPE_UNSPECIFIED, MULTI_IP_SUBNET, SECURE_BOOT, UEFI_COMPATIBLE, VIRTIO_SCSI_MULTIQUEUE or WINDOWS. See Enabling guest operating system features.
initialize-params subresource

Parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance. Cannot be set if source is set.

source-image
The source image to create this disk in the form of a URL path. See Images. (Required)
description
An optional description. Provide this property when creating the disk.
disk-name
The disk name. If the disk with the instance name exists already in the given zone/region a new name will be automatically generated. Must be a string 1-63 characters long and the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. Valid values satisfy the regex: [(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?)]. (Required)
disk-size-gb
Size of the disk in base-2 GB. Unspecified, the disk will be the same size as the image (usually 10GB). If specified, the size must be equal to or larger than 10GB.
disk-type
The disk type to use to create the instance. Unspecified, the default is pd-standard, specified using the full URL (e.g. https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard). Other values include pd-ssd and local-ssd. Provide either the full or partial URL. Note that for InstanceTemplate, this is the name of the disk type, not URL.
labels map
Labels to apply to this disk. Only applicable for persistent disks.
source-image-encryption-key subresource

Encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key. Instance templates do not store customer-supplied encryption keys, so you cannot create disks or instances in a managed instance group if the source images are encrypted with your own keys.

raw-key
The 256-bit encryption key, encoded in RFC 4648 base64, that protects this resource. See Encrypt disks with customer-supplied encryption keys. (Required)
source-snapshot-encryption-key subresource

Encryption key of the source snapshot.

raw-key
The 256-bit encryption key, encoded in RFC 4648 base64, that protects this resource. See Encrypt disks with customer-supplied encryption keys. (Required)
resource-policy list
Resource policies applied to this disk for automatic snapshot creations.
auto-generate-disk-name
If set to true, uses an autogenerated disk name instead of the one provided. Defaults to false.
disk-interface
Disk interface to use for attaching this disk. Default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Valid values are SCSI or NVME.
mode
The mode in which to attach this disk. Default is READ_WRITE. Valid values are READ_WRITE or READ_ONLY.
source resource

The Persistent Disk resource. Cannot be set if initializeParams is set.

type
Type of the disk, Default is PERSISTENT. Valid values are SCRATCH or PERSISTENT.
status The status of the instance. Setting a value of TERMINATED will stop the instance while setting the value to RUNNING will start an instance. See also instance status. Valid values are RUNNING or TERMINATED.
service-account list The list of service accounts that are authorized for the instance.
metadata map

The metadata of the instance, specified with key/value pairs.

Keys may only contain alphanumeric characters, dashes, and underscores, and must be 1-128 characters in length. Values must be 0-262144 characters in length.

tags list

The set of tags for the instance.

All tags for an instance must be unique. Maximum allowed items are 64. Must be only dashes, lowercase letters, or digits. The first character must be a lowercase letter, and the last character cannot be a dash. Each tag must be 1-63 characters. Valid values satisfy the regex: [^[a-z]([-a-z0-9]{0,61}[a-z0-9]$)?].

Outputs

Attribute Description
description An optional description for the resource.
disk list List of disks associated with this instance.
self-link URL of the instance.
label-fingerprint Hash of the label’s contents used for locking.
host-name The hostname of the instance.
creation-date The creation date of the instance.
id The id of the instance.
public-ip The public ip of the instance.
private-ip The private ip of the instance.