VM Autoscaling Group

vm_autoscaling_group

This is a module that supports creating, updating or destroying VM Autoscaling Groups

Example Syntax


name: Create VM Autoscaling Group
ionoscloudsdk.ionoscloud.vm_autoscaling_group:
  datacenter: 'AnsibleVMAutoscaling'
  name: 'AnsibleVMAutoscalingGroup'
  max_replica_count: '5'
  min_replica_count: '1'
  metric: 'INSTANCE_CPU_UTILIZATION_AVERAGE'
  range: 'PT24H'
  unit: 'PER_HOUR'
  scale_in_threshold: '33'
  scale_out_threshold: '77'
  scale_in_action: '{'amount': 1, 'amount_type': 'ABSOLUTE', 'cooldown_period': 'PT5M', 'termination_policy': 'RANDOM', 'delete_volumes': True}'
  scale_out_action: '{'amount': 1, 'amount_type': 'ABSOLUTE', 'cooldown_period': 'PT5M'}'
  availability_zone: 'AUTO'
  cores: '2'
  cpu_family: 'INTEL_XEON'
  ram: '1024'
  nics: '[{'lan': 1, 'name': 'SDK_TEST_NIC1', 'dhcp': True}, {'lan': 1, 'name': 'SDK_TEST_NIC2', 'dhcp': False}]'
  volumes: '[{'image': 'b6d8c6f2-febc-11ed-86e8-2e7f0689c849', 'image_password': 'test12345', 'name': 'SDK_TEST_VOLUME', 'size': 50, 'type': 'HDD', 'bus': 'IDE', 'boot_order': 'AUTO'}]'
register: vm_autoscaling_group_response


name: Update VM Ausocaling Group
ionoscloudsdk.ionoscloud.vm_autoscaling_group:
  vm_autoscaling_group: ''
  datacenter: 'AnsibleVMAutoscalingUpdate'
  name: 'AnsibleVMAutoscalingGroupUPDATED'
  max_replica_count: '1'
  min_replica_count: '0'
  metric: 'INSTANCE_NETWORK_IN_BYTES'
  range: 'PT12H'
  unit: 'PER_MINUTE'
  scale_in_threshold: '30'
  scale_out_threshold: '86'
  scale_in_action: '{'amount': 50, 'amount_type': 'PERCENTAGE', 'cooldown_period': 'PT10M', 'termination_policy': 'RANDOM', 'delete_volumes': False}'
  scale_out_action: '{'amount': 2, 'amount_type': 'ABSOLUTE', 'cooldown_period': 'PT15M'}'
  availability_zone: 'AUTO'
  cores: '1'
  cpu_family: 'INTEL_SKYLAKE'
  ram: '2048'
  nics: '[{'lan': 1, 'name': 'SDK_TEST_NIC1', 'dhcp': True, 'firewall_active': True, 'firewall_rules': [{'name': 'test2', 'protocol': 'TCP', 'port_range_end': 12}]}]'
  volumes: '[{'image': 'e84aed99-feba-11ed-86e8-2e7f0689c849', 'image_password': 'test12345', 'name': 'SDK_TEST_VOLUME_UPDATE', 'size': 75, 'type': 'SSD', 'bus': 'IDE', 'boot_order': 'AUTO'}]'
  do_not_replace: false
  state: update
register: vm_autoscaling_group_response


name: Remove VM Ausocaling Group
ionoscloudsdk.ionoscloud.vm_autoscaling_group:
  vm_autoscaling_group: 'AnsibleVMAutoscalingGroup'
  state: absent
register: vm_autoscaling_group_response

Returned object

{
    "changed": true,
    "failed": false,
    "action": "create",
    "vm_autoscaling_group": {
        "id": "cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66",
        "type": "autoscaling-group",
        "href": "https://api.ionos.com/autoscaling/groups/cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66",
        "metadata": {
            "created_by": "<USER_EMAIL>",
            "created_by_user_id": "<USER_ID>",
            "created_date": "2023-10-30T13:53:50.863223+00:00",
            "etag": "UqNMEcSKAhvN4GK+OeBxlYlLs0TS6SBCGvk5HgWgdJk=",
            "last_modified_by": "<USER_EMAIL>",
            "last_modified_by_user_id": "<USER_ID>",
            "last_modified_date": "2023-10-30T13:53:54.378143+00:00",
            "state": "AVAILABLE"
        },
        "properties": {
            "datacenter": {
                "id": "8b8b9122-b8ef-4966-a36a-2e9cf8609121",
                "type": "datacenter",
                "href": "https://api.public.production.k8s.fra2.profitbricks.net/cloudapi/v6/datacenters/8b8b9122-b8ef-4966-a36a-2e9cf8609121"
            },
            "location": "us/las",
            "max_replica_count": 5,
            "min_replica_count": 1,
            "name": "AnsibleVMAutoscalingGroup",
            "policy": {
                "metric": "INSTANCE_CPU_UTILIZATION_AVERAGE",
                "range": "PT24H",
                "scale_in_action": {
                    "amount": 1.0,
                    "amount_type": "ABSOLUTE",
                    "cooldown_period": "PT5M",
                    "termination_policy": "RANDOM",
                    "delete_volumes": true
                },
                "scale_in_threshold": 33.0,
                "scale_out_action": {
                    "amount": 1.0,
                    "amount_type": "ABSOLUTE",
                    "cooldown_period": "PT5M"
                },
                "scale_out_threshold": 77.0,
                "unit": "PER_HOUR"
            },
            "replica_configuration": {
                "availability_zone": "AUTO",
                "cores": 2,
                "cpu_family": "INTEL_XEON",
                "nics": [
                    {
                        "lan": 1,
                        "name": "SDK_TEST_NIC1",
                        "dhcp": true,
                        "firewall_active": null,
                        "firewall_type": null,
                        "flow_logs": [],
                        "firewall_rules": [],
                        "target_group": null
                    },
                    {
                        "lan": 1,
                        "name": "SDK_TEST_NIC2",
                        "dhcp": false,
                        "firewall_active": null,
                        "firewall_type": null,
                        "flow_logs": [],
                        "firewall_rules": [],
                        "target_group": null
                    }
                ],
                "ram": 1024,
                "volumes": [
                    {
                        "image": "b6d8c6f2-febc-11ed-86e8-2e7f0689c849",
                        "image_alias": null,
                        "name": "SDK_TEST_VOLUME",
                        "size": 50,
                        "ssh_keys": [],
                        "type": "HDD",
                        "user_data": null,
                        "bus": "IDE",
                        "backupunit_id": null,
                        "boot_order": "AUTO",
                        "image_password": null
                    }
                ]
            }
        },
        "entities": {
            "actions": {
                "id": "cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66/actions",
                "type": "collection",
                "href": "https://api.ionos.com/autoscaling/groups/cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66/actions"
            },
            "servers": {
                "id": "cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66/servers",
                "type": "collection",
                "href": "https://api.ionos.com/autoscaling/groups/cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66/servers"
            }
        },
        "started_actions": [
            {
                "id": "4293fe77-1fc5-42e9-aff4-2ed8341c1b0e",
                "type": "autoscaling-action",
                "href": "https://api.ionos.com/autoscaling/groups/cd7407bc-54ff-4dcb-bf0e-6c2f7fa45c66/actions/4293fe77-1fc5-42e9-aff4-2ed8341c1b0e"
            }
        ]
    }
}

For more examples please check out the tests here.

NOTE: If you are using a versions 7.0.0 and up: modules can replace resources if certain set parameters differ from the results found in the API!

Parameters that can trigger a resource replacement:

  • datacenter

state: present

  
name: Create VM Autoscaling Group
ionoscloudsdk.ionoscloud.vm_autoscaling_group:
  datacenter: 'AnsibleVMAutoscaling'
  name: 'AnsibleVMAutoscalingGroup'
  max_replica_count: '5'
  min_replica_count: '1'
  metric: 'INSTANCE_CPU_UTILIZATION_AVERAGE'
  range: 'PT24H'
  unit: 'PER_HOUR'
  scale_in_threshold: '33'
  scale_out_threshold: '77'
  scale_in_action: '{'amount': 1, 'amount_type': 'ABSOLUTE', 'cooldown_period': 'PT5M', 'termination_policy': 'RANDOM', 'delete_volumes': True}'
  scale_out_action: '{'amount': 1, 'amount_type': 'ABSOLUTE', 'cooldown_period': 'PT5M'}'
  availability_zone: 'AUTO'
  cores: '2'
  cpu_family: 'INTEL_XEON'
  ram: '1024'
  nics: '[{'lan': 1, 'name': 'SDK_TEST_NIC1', 'dhcp': True}, {'lan': 1, 'name': 'SDK_TEST_NIC2', 'dhcp': False}]'
  volumes: '[{'image': 'b6d8c6f2-febc-11ed-86e8-2e7f0689c849', 'image_password': 'test12345', 'name': 'SDK_TEST_VOLUME', 'size': 50, 'type': 'HDD', 'bus': 'IDE', 'boot_order': 'AUTO'}]'
register: vm_autoscaling_group_response

Available parameters for state present:

state: absent

  
name: Remove VM Ausocaling Group
ionoscloudsdk.ionoscloud.vm_autoscaling_group:
  vm_autoscaling_group: 'AnsibleVMAutoscalingGroup'
  state: absent
register: vm_autoscaling_group_response

Available parameters for state absent:

state: update

  
name: Update VM Ausocaling Group
ionoscloudsdk.ionoscloud.vm_autoscaling_group:
  vm_autoscaling_group: ''
  datacenter: 'AnsibleVMAutoscalingUpdate'
  name: 'AnsibleVMAutoscalingGroupUPDATED'
  max_replica_count: '1'
  min_replica_count: '0'
  metric: 'INSTANCE_NETWORK_IN_BYTES'
  range: 'PT12H'
  unit: 'PER_MINUTE'
  scale_in_threshold: '30'
  scale_out_threshold: '86'
  scale_in_action: '{'amount': 50, 'amount_type': 'PERCENTAGE', 'cooldown_period': 'PT10M', 'termination_policy': 'RANDOM', 'delete_volumes': False}'
  scale_out_action: '{'amount': 2, 'amount_type': 'ABSOLUTE', 'cooldown_period': 'PT15M'}'
  availability_zone: 'AUTO'
  cores: '1'
  cpu_family: 'INTEL_SKYLAKE'
  ram: '2048'
  nics: '[{'lan': 1, 'name': 'SDK_TEST_NIC1', 'dhcp': True, 'firewall_active': True, 'firewall_rules': [{'name': 'test2', 'protocol': 'TCP', 'port_range_end': 12}]}]'
  volumes: '[{'image': 'e84aed99-feba-11ed-86e8-2e7f0689c849', 'image_password': 'test12345', 'name': 'SDK_TEST_VOLUME_UPDATE', 'size': 75, 'type': 'SSD', 'bus': 'IDE', 'boot_order': 'AUTO'}]'
  do_not_replace: false
  state: update
register: vm_autoscaling_group_response

Available parameters for state update:

Last updated