gce_mig - Create, Update or Destroy a Managed Instance Group (MIG).

New in version 2.2.

Synopsis

Requirements

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

  • python >= 2.6
  • apache-libcloud >= 1.2.0

Parameters

Parameter Choices/Defaults Comments
autoscaling
A dictionary of configuration for the autoscaler. 'enabled (bool)', 'name (str)' and policy.max_instances (int) are required fields if autoscaling is used. See https://cloud.google.com/compute/docs/reference/beta/autoscalers for more information on Autoscaling.
credentials_file
Path to the JSON file associated with the service account email
name
required
Name of the Managed Instance Group.
named_ports
(added in 2.3)
Define named ports that backend services can forward data to. Format is a a list of name:port dictionaries.
project_id
GCE project ID
service_account_email
service account email
size
Size of Managed Instance Group. If MIG already exists, it will be resized to the number provided here. Required for creating MIGs.
state
    Choices:
  • absent
  • present ←
desired state of the resource
template
Instance Template to be used in creating the VMs. See https://cloud.google.com/compute/docs/instance-templates to learn more about Instance Templates. Required for creating MIGs.
zone
required
The GCE zone to use for this Managed Instance Group.

Notes

Note

  • Resizing and Recreating VM are also supported.
  • An existing instance template is required in order to create a Managed Instance Group.

Examples

# Following playbook creates, rebuilds instances, resizes and then deletes a MIG.
# Notes:
# - Two valid Instance Templates must exist in your GCE project in order to run
#   this playbook.  Change the fields to match the templates used in your
#   project.
# - The use of the 'pause' module is not required, it is just for convenience.
- name: Managed Instance Group Example
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Create MIG
      gce_mig:
        name: ansible-mig-example
        zone: us-central1-c
        state: present
        size: 1
        template: my-instance-template-1
        named_ports:
        - name: http
          port: 80
        - name: foobar
          port: 82

    - name: Pause for 30 seconds
      pause:
        seconds: 30

    - name: Recreate MIG Instances with Instance Template change.
      gce_mig:
        name: ansible-mig-example
        zone: us-central1-c
        state: present
        template: my-instance-template-2-small
        recreate_instances: yes

    - name: Pause for 30 seconds
      pause:
        seconds: 30

    - name: Resize MIG
      gce_mig:
        name: ansible-mig-example
        zone: us-central1-c
        state: present
        size: 3

    - name: Update MIG with Autoscaler
      gce_mig:
        name: ansible-mig-example
        zone: us-central1-c
        state: present
        size: 3
        template: my-instance-template-2-small
        recreate_instances: yes
        autoscaling:
          enabled: yes
          name: my-autoscaler
          policy:
            min_instances: 2
            max_instances: 5
            cool_down_period: 37
            cpu_utilization:
              target: .39
            load_balancing_utilization:
              target: 0.4

    - name: Pause for 30 seconds
      pause:
        seconds: 30

    - name: Delete MIG
      gce_mig:
        name: ansible-mig-example
        zone: us-central1-c
        state: absent
        autoscaling:
          enabled: no
          name: my-autoscaler

Return Values

Common return values are documented here, the following are the fields unique to this module:

Key Returned Description
created_autoscaler
bool
When the creation of an Autoscaler was attempted.
True if Autoscaler was attempted and created. False otherwise.

Sample:
True
created_instances
list
When instances are created.
Names of instances created.

Sample:
['ansible-mig-new-0k4y', 'ansible-mig-new-0zk5', 'ansible-mig-new-kp68']
deleted_autoscaler
bool
When the delete of an Autoscaler was attempted.
True if an Autoscaler delete attempted and succeeded. False returned if delete failed.

Sample:
True
deleted_instances
list
When instances are deleted.
Names of instances deleted.

Sample:
['ansible-mig-new-0k4y', 'ansible-mig-new-0zk5', 'ansible-mig-new-kp68']
name
string
changed
Name of the Managed Instance Group.

Sample:
my-managed-instance-group
named_ports
list
when named_ports are initially set or updated
list of named ports acted upon

Sample:
[{'name': 'http', 'port': 80}, {'name': 'foo', 'port': 82}]
recreated_instances
list
When instances are recreated.
Names of instances recreated.

Sample:
['ansible-mig-new-0k4y', 'ansible-mig-new-0zk5', 'ansible-mig-new-kp68']
resize_created_instances
list
When a resize results in the creation of instances.
Names of instances created during resizing.

Sample:
['ansible-mig-new-0k4y', 'ansible-mig-new-0zk5', 'ansible-mig-new-kp68']
resize_deleted_instances
list
When a resize results in the deletion of instances.
Names of instances deleted during resizing.

Sample:
['ansible-mig-new-0k4y', 'ansible-mig-new-0zk5', 'ansible-mig-new-kp68']
set_named_ports
bool
named_ports have been set
True if the named_ports have been set

Sample:
True
size
int
changed
Number of VMs in Managed Instance Group.

Sample:
4
template
string
changed
Instance Template to use for VMs. Must exist prior to using with MIG.

Sample:
my-instance-template
updated_autoscaler
bool
When the update of an Autoscaler was attempted.
True if an Autoscaler update was attempted and succeeded. False returned if update failed.

Sample:
True
updated_named_ports
bool
named_ports have been updated
True if the named_ports have been updated

Sample:
True
zone
string
always
Zone in which to launch MIG.

Sample:
us-central1-b


Status

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

Maintenance

This module is flagged as community which means that it is maintained by the Ansible Community. See Module Maintenance & Support for more info.

For a list of other modules that are also maintained by the Ansible Community, see here.

Author

Hint

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