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

From Get docs
Ansible/docs/2.8/modules/gce mig module


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

-

  • 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

boolean

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

boolean

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

boolean

named_ports have been set

True if the named_ports have been set


Sample:

True

size

integer

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

boolean

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

boolean

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

Authors

Hint

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


© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.8/modules/gce_mig_module.html