standard
turbot/azure_thrifty

Detect & correct Virtual Machine Scale Sets if unused

Overview

Virtual Machine Scale Sets with no instances attached still cost money and should be deleted.

This pipeline detects unused Virtual Machine Scale Sets and then either sends a notification or attempts to perform a predefined corrective action.

Getting Started

By default, this trigger is disabled, however it can be configured by setting the below variables

  • virtual_machine_scale_sets_if_unused_trigger_enabled should be set to true as the default is false.
  • virtual_machine_scale_sets_if_unused_trigger_schedule should be set to your desired running schedule
  • virtual_machine_scale_sets_if_unused_default_action should be set to your desired action (i.e. "notify" for notifications or "delete_virtual_machine_scale_set" to delete the virtual machine scale set).

Then starting the server:

flowpipe server

or if you've set the variables in a .fpvars file:

flowpipe server --var-file=/path/to/your.fpvars

Query

with scale_set_vm_count as (
select
count(*),
scale_set_name,
resource_group,
region,
subscription_id
from
azure_compute_virtual_machine_scale_set_vm
group by
scale_set_name,
resource_group,
region,
subscription_id
)
select
concat(
vmss.id,
' [',
vmss.resource_group,
'/',
vmss.subscription_id,
']'
) as title,
vmss.id as id,
vmss.name,
vmss.resource_group,
vmss.subscription_id,
vmss.sp_connection_name as conn
from
azure_compute_virtual_machine_scale_set as vmss
left join scale_set_vm_count as vm on vm.scale_set_name = vmss.name
and vm.resource_group = vmss.resource_group
and vm.region = vmss.region
left join azure_subscription as sub on sub.subscription_id = vmss.subscription_id
where
vm.scale_set_name is null;

Schedule

15m

Tags

category = Cost
class = unused
plugin = azure
service = Azure/Compute