community.general.gce_mig – Create, Update or Destroy a Managed Instance Group (MIG).¶
Note
This plugin is part of the community.general collection (version 1.3.6).
To install it use: ansible-galaxy collection install community.general
.
To use it in a playbook, specify: community.general.gce_mig
.
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
dictionary
|
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
|
Path to the JSON file associated with the service account email
|
|
name
string
/ required
|
Name of the Managed Instance Group.
|
|
named_ports
list
/ elements=string
|
Define named ports that backend services can forward data to. Format is a a list of name:port dictionaries.
|
|
pem_file
path
|
path to the pem file associated with the service account email This option is deprecated. Use 'credentials_file'.
|
|
project_id
string
|
GCE project ID
|
|
recreate_instances
boolean
|
|
Recreate MIG instances.
|
service_account_email
string
|
service account email
|
|
service_account_permissions
list
/ elements=string
|
service account permissions
|
|
size
integer
|
Size of Managed Instance Group. If MIG already exists, it will be resized to the number provided here. Required for creating MIGs.
|
|
state
string
|
|
desired state of the resource
|
template
string
|
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
string
/ 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
community.general.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
ansible.builtin.pause:
seconds: 30
- name: Recreate MIG Instances with Instance Template change.
community.general.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
ansible.builtin.pause:
seconds: 30
- name: Resize MIG
community.general.gce_mig:
name: ansible-mig-example
zone: us-central1-c
state: present
size: 3
- name: Update MIG with Autoscaler
community.general.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
ansible.builtin.pause:
seconds: 30
- name: Delete MIG
community.general.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:
Authors¶
Tom Melendez (@supertom) <tom@supertom.com>