On this page
gce_mig – Create, Update or Destroy a Managed Instance Group (MIG)
New in version 2.2.
Synopsis
- Create, Update or Destroy a Managed Instance Group (MIG). See https://cloud.google.com/compute/docs/instance-groups for an overview. Full install/configuration instructions for the gce* modules can be found in the comments of ansible/test/gce_tests.py.
 
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
        
        -
         | 
      
       
  | 
      
        
        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
- This module is not guaranteed to have a backwards compatible interface. [preview]
 - This module is maintained by the Ansible Community. [community]
 
Authors
- Tom Melendez (@supertom) <tom@supertom.com>
 
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