Documentation

gce_instance_template - create or destroy instance templates of Compute Engine of GCP.

New in version 2.3.

Synopsis

  • Creates or destroy Google instance templates of Compute Engine of Google Cloud Platform.

Requirements

The below requirements are needed on the host that executes this module.

  • python >= 2.6
  • apache-libcloud >= 0.13.3, >= 0.17.0 if using JSON credentials, >= 0.20.0 if using preemptible option

Parameters

Parameter Choices/Defaults Comments
automatic_restart
Defines whether the instance should be automatically restarted when it is terminated by Compute Engine.
can_ip_forward
bool
    Choices:
  • no ←
  • yes
Set to yes to allow instance to send/receive non-matching src/dst packets.
credentials_file
path to the JSON file associated with the service account email
description
description of instance template
disk_auto_delete Default:
yes
Indicate that the boot disk should be deleted when the Node is deleted.
disk_type Default:
pd-standard
Specify a pd-standard disk or pd-ssd for an SSD disk.
disks
a list of persistent disks to attach to the instance; a string value gives the name of the disk; alternatively, a dictionary value can define 'name' and 'mode' ('READ_ONLY' or 'READ_WRITE'). The first entry will be the boot disk (which must be READ_WRITE).
disks_gce_struct
(added in 2.4)
Support passing in the GCE-specific formatted formatted disks[] structure. Case sensitive. see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates#resource for detailed information
external_ip Default:
ephemeral
The external IP address to use. If ephemeral, a new non-static address will be used. If None, then no external address will be used. To use an existing static IP address specify address name.
image
The image to use to create the instance. Cannot specify both both image and source.
image_family
The image family to use to create the instance. If image has been used image_family is ignored. Cannot specify both image and source.
metadata
a hash/dictionary of custom data for the instance; '{"key":"value", ...}'
name
The name of the GCE instance template.
network Default:
default
The network to associate with the instance.
nic_gce_struct
Support passing in the GCE-specific formatted networkInterfaces[] structure.
pem_file
path to the pem file associated with the service account email This option is deprecated. Use 'credentials_file'.
preemptible
Defines whether the instance is preemptible.
project_id
your GCE project ID
service_account_email
service account email
service_account_permissions
    Choices:
  • bigquery
  • cloud-platform
  • compute-ro
  • compute-rw
  • useraccounts-ro
  • useraccounts-rw
  • datastore
  • logging-write
  • monitoring
  • sql-admin
  • storage-full
  • storage-ro
  • storage-rw
  • taskqueue
  • userinfo-email
service account permissions (see https://cloud.google.com/sdk/gcloud/reference/compute/instances/create, --scopes section for detailed information)
size Default:
f1-micro
The desired machine type for the instance template.
source
A source disk to attach to the instance. Cannot specify both image and source.
state
    Choices:
  • present ←
  • absent
The desired state for the instance template.
subnetwork
The Subnetwork resource name for this instance.
subnetwork_region
(added in 2.4)
Region that subnetwork resides in. (Required for subnetwork to successfully complete)
tags
a comma-separated list of tags to associate with the instance

Notes

Note

  • JSON credentials strongly preferred.

Examples

# Usage
- name: create instance template named foo
  gce_instance_template:
    name: foo
    size: n1-standard-1
    image_family: ubuntu-1604-lts
    state: present
    project_id: "your-project-name"
    credentials_file: "/path/to/your-key.json"
    service_account_email: "your-sa@your-project-name.iam.gserviceaccount.com"

# Example Playbook
- name: Compute Engine Instance Template Examples
  hosts: localhost
  vars:
    service_account_email: "your-sa@your-project-name.iam.gserviceaccount.com"
    credentials_file: "/path/to/your-key.json"
    project_id: "your-project-name"
  tasks:
    - name: create instance template
      gce_instance_template:
        name: my-test-instance-template
        size: n1-standard-1
        image_family: ubuntu-1604-lts
        state: present
        project_id: "{{ project_id }}"
        credentials_file: "{{ credentials_file }}"
        service_account_email: "{{ service_account_email }}"
    - name: delete instance template
      gce_instance_template:
        name: my-test-instance-template
        size: n1-standard-1
        image_family: ubuntu-1604-lts
        state: absent
        project_id: "{{ project_id }}"
        credentials_file: "{{ credentials_file }}"
        service_account_email: "{{ service_account_email }}"

# Example playbook using disks_gce_struct
- name: Compute Engine Instance Template Examples
  hosts: localhost
  vars:
    service_account_email: "your-sa@your-project-name.iam.gserviceaccount.com"
    credentials_file: "/path/to/your-key.json"
    project_id: "your-project-name"
  tasks:
    - name: create instance template
      gce_instance_template:
        name: foo
        size: n1-standard-1
        state: present
        project_id: "{{ project_id }}"
        credentials_file: "{{ credentials_file }}"
        service_account_email: "{{ service_account_email }}"
        disks_gce_struct:
          - device_name: /dev/sda
            boot: true
            autoDelete: true
            initializeParams:
              diskSizeGb: 30
              diskType: pd-ssd
              sourceImage: projects/debian-cloud/global/images/family/debian-8

Status

This module is flagged as preview which means that it is not guaranteed to have a backwards compatible interface.

Author

Hint

If you notice any issues in this documentation you can edit this document to improve it.