---
title: "Update Elastigroup"
method: PUT
path: "/azure/compute/group/{groupId}"
tags: ["Elastigroup Azure Spot VMs"]
---

# Update Elastigroup

`PUT /azure/compute/group/{groupId}`

Update an Azure Elastigroup cluster.

## Path parameters

- `groupId` string, required

## Parameters

- `#/paths/~1azure~1costs/get/parameters/0` — unresolved $ref

## Request body

- object
  - `group` object, required
    - `name` string — Azure Elastigroup Name
    - `description` string — Describe your Azure Elastigroup
    - `capacity` Capacity — unresolved $ref
    - `strategy` object — Strategy for Elastigroup.
      - `shouldUtilizeCommitments` boolean — Determines whether to utilize any existing Azure Savings Plans or Reserved Instances associated with the subscription for On-Demand VMs.
      - `spotPercentage` integer — Percentage of Spot-VMs to maintain.\ Required if odCount isn't specified.
      - `onDemandCount` integer — Percentage of Spot-VMs to maintain.\ Required if spotPercentage isn't specified.
      - `drainingTimeout` integer — Time (in seconds) to allow the VM be drained from incoming TCP connections and detached from MLB before terminating it during a scale down operation.
      - `fallbackToOd` boolean — In case of no spots available, Elastigroup will launch an On-demand instance instead
      - `revertToSpot` object — Hold settings for strategy correction - replacing On-Demand for Spot VMs
        - `performAt` 'timeWindow' | 'never' | 'always' — Settings for maintenance strategy.
      - `optimizationWindows` string[] — valid format: "ddd:hh:mm-ddd:hh:mm (day:hour(0-23):minute(0-59))", not empty if revertToSpot.performAt = timeWindow
      - `signals` object[] — The signals defined for this group.
        - `type` 'vmReady' | 'vmReadyToShutdown' — The type of the signal defined for the group.
        - `timeout` integer — The timeout in seconds to hold the vm until a signal is sent.\ If no signal is sent the vm will be replaced (vmReady) or we will terminate the vm (vmReadyToShutdown) after the timeout.
      - `availabilityVsCost` integer — Set the desired preference for the Spot market VM selection. (100- Availability, 0- cost)
      - `capacityReservation` object — On-demand Capacity Reservation group enables you to reserve Compute capacity in an Azure region or an Availability Zone for any duration of time. [CRG can only be created on the Azure end.](https://learn.microsoft.com/en-us/azure/virtual-machines/capacity-reservation-create)
        - `shouldUtilize` boolean, required — Determines whether capacity reservations should be utilized.
        - `utilizationStrategy` 'utilizeOverSpot' | 'utilizeOverOD', required — The priority requested for using CRG. This value will determine if CRG is used ahead of spot VMs or On-demand VMs. * utilizeOverOD- If picked, we will use CRG only in case On-demand should be launched. * utilizeOverSpot- CRG will be preferred over Spot. Only after CRG is fully used, spot VMs can be used.
        - `capacityReservationGroups` object[] — List of the desired CRGs to use under the associated Azure subscription. When null we will utilize any available reservation that matches the Virtual Node Group.
          - `name` string, required — The name of the CRG.
          - `resourceGroupName` string, required — Azure resource group name
          - `shouldPrioritize` boolean — The desired CRG to utilize ahead of other CRGs in the subscription.
    - `scaling` object — Scaling Policies for Elastigroup.
    - `compute` object — Compute settings for Elastigroup.
      - `vmSizes` object — amount of time to be unhealthy before a replacement is triggered
        - `odSizes` string[] — Available On-Demand sizes.
        - `spotSizes` string[] — Available spot VM sizes.
        - `preferredSpotSizes` string[] — Prioritize Spot VM sizes when launching Spot VMs for the group. <a style=color:red>Must be a sublist of compute.vmSizes.spotSizes. </a>
        - `spotSizeAttributes` SpotSizeAttributes — unresolved $ref
        - `excludedVmSizes` string[] — Exclude these spot VM sizes when using attribute-based VM sizes.
      - `launchSpecification` object
        - `vmNamePrefix` string — Set a VM name prefix to be used for all launched VMs and the VM resources. * The prefix value should comply with the following limitations: * A maximal length of 25 characters. * The prefix can’t contain spaces, control characters, or these characters: ~ ! @ # $ % ^ & * ( ) = + _ [ ] { } | ; : . ' " , < > / ? * The VM prefix can't end with a hyphen.
        - `licenseType` string — Enables Azure Hybrid Benefit. Accepted values: Windows_Client, Windows_Server, RHEL_BYOS, SLES_BYOS.
        - `customData` string, byte — This value will hold the YML in base64 and will be added to the virtual machine.
        - `userData` string — Define a set of scripts or other metadata that's inserted to an Azure virtual machine at provision time. (Base64 encoded)
        - `image` object — Image of VM. An image is a template for creating new VMs. Choose from Azure image catalogue (marketplace) or use a custom image or chosen from shared gallery image.
          - `marketplace` object — Select an image from Azure's Marketplace image catalogue. Cannot be used with `custom` or `gallery`. <a style=color:red;>Required if custom or gallery image are not specified.</a>
            - `publisher` string — Image publisher. <a style=color:red;>Required if marketplace image is specified.</a>
            - `offer` string — Name of image to use. <a style=color:red;>Required if marketplace image is specified.</a>
            - `sku` string — Image's Stock Keeping Unit, which is the specific version of the image. <a style=color:red;>Required if marketplace image is specified.</a>
            - `version` string — Image's version. if version not provided we use 'latest'
          - `custom` object — Custom image to launch Elastigroup with. Cannot be used with `marketplace` or `gallery`. <a style=color:red;>Required if marketplace or gallery image are not specified.</a>
            - `resourceGroupName` string — Name of Resource Group for custom image. <a style=color:red;>Required if custom image is specified.</a>
            - `name` string — Name of the custom image. <a style=color:red;>Required if custom image is specified.</a>
          - `gallery` object — Gallery image to launch Elastigroup with. Cannot be used with `marketplace` or `custom`. <a style=color:red;>Required if marketplace or custom image are not specified.</a>
            - `resourceGroupName` string — Name of Resource Group for custom image. <a style=color:red;>Required if gallery image is specified.</a>
            - `galleryName` string — Name of the gallery. <a style=color:red;>Required if gallery image is specified.</a>
            - `imageName` string — Name of the gallery image. <a style=color:red;>Required if gallery image is specified.</a>
            - `version` string — Image's version. Can be in the format x.x.x or 'latest'. <a style=color:red;>Required if gallery image is specified.</a>
            - `spotAccountId` string — The Spot account ID that connected to the Azure subscription to which the gallery belongs. Relevant only in case of cross-subscription shared galleries. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/shared-image-galleries) about cross-subscription shared galleries in Elastigroup.
        - `network` object — Define the Virtual Network and Subnet for your Elastigroup.
          - `resourceGroupName` string, required — Vnet Resource Group Name
          - `virtualNetworkName` string, required — Virtual Network
          - `networkInterfaces` object[], required — Virtual Network
            - `isPrimary` boolean, required — Defines whether the network interface is primary or not.
            - `subnetName` string, required — Subnet name
            - `assignPublicIp` boolean — Assign public IP
            - `publicIpSku` string — Required if assignPublicIp=true values=[STANDARD/BASIC]
            - `securityGroup` object — Security Group
              - …
            - `publicIps` object[] — Defined a pool of Public Ips (from Azure), that will be associated to the network interface. We will associate one public ip per instance until the pool is exhausted, in which case, we will create a new one.
              - …
            - `enableIPForwarding` boolean — Enable IP Forwarding
            - `additionalIpConfigurations` object[] — Additional configuration of network interface
              - …
            - `applicationSecurityGroups` object[] — List of Application Security Groups that will be associated to the primary ip configration of the network interface.
              - …
        - `login` object — Set admin access for accessing your VMs. Password/SSH is required for Linux. <a style=color:red;>Required null if specialized image is set.</a>
          - `userName` string — user name for admin access to VMs.\ Login can be set: * for windows: compute.launchSpecification.login.password * for linux: compute.launchSpecification.login.sshPublicKey Just user name, without pwd or SSH key
          - `sshPublicKey` string — SSH for admin access to Linux VMs.\ Optional for Linux.
          - `password` string — Password for admin access to Windows VMs.\ Required for Windows.
        - `loadBalancersConfig` object — Configure a Load Balancer.
          - `loadBalancers` object[] — Add a load balancer. For Azure Gateway, each Backend Pool is a separate load balancer.
            - `type` 'loadBalancer' | 'applicationGateway' — The type of load balancer.
            - `resourceGroupName` string — The Resource Group name of the Load Balancer.
            - `name` string — Name of the Application Gateway/Load Balancer
            - `sku` string — *if type is LoadBalancer then possible values are “Standard/Basic”; *if ApplicationGateway then possible values are “Standard_Large”,“Standard_Medium”,“Standard_Small”,“Standard_v2”,“WAF_Large”,“WAF_Medium”,“WAF_v2"
            - `backendPoolNames` string[] — Name of the Backend Pool to register the Elastigroup VMs to. Each Backend Pool is a separate load balancer.\ Required if Type is APPLICATION_GATEWAY.
        - `managedServiceIdentities` object[] — Add a user-assigned managed identity to the VMs in the cluster.
          - `name` string — name of the managed identity
          - `resourceGroupName` string — The Resource Group that the user-assigned managed identity resides in.
        - `shutdownScript` string, byte — shutdown script for the group. Value should be passed as a string encoded at Base64 only
        - `tags` object[] — Key-Value pairs for VMs in the Elastigroup.
          - `tagKey` string — Tag Key for Vms in Elastigroup.
          - `tagValue` string — Tag Value for VMs in Elastigroup.
        - `extensions` object[] — List of objects for azure extensions
          - `name` string, required — Required on compute.launchSpecification.extensions object
          - `type` string, required — Required on compute.launchSpecification.extensions object
          - `publisher` string, required — Required on compute.launchSpecification.extensions object
          - `apiVersion` string, required — The API version of the extension. Required if extension specified.
          - `minorVersionAutoUpgrade` boolean, required — Required on compute.launchSpecification.extensions object
          - `publicSettings` object — Object for public settings
          - `protectedSettings` object — Object for protected settings
          - `enableAutomaticUpgrade` boolean — Indicates whether the extension should be automatically upgraded by the platform if there is a newer version of the extension available.
          - `protectedSettingsFromKeyVault` object — The extensions protected settings that are passed by reference, and consumed from key vault.
            - `sourceVault` string, required — The relative URL of the Key Vault containing the secret.
            - `secretUrl` string, required — The URL referencing a secret in a Key Vault.
        - `dataDisks` object[] — list of data disks to be attached to the vms in the group.
          - `sizeGB` integer — The size of the data disk in GB, Required if dataDisks is specified.
          - `lun` integer — The lun of the data disk, Required if dataDisks is specified.
          - `type` 'Standard_LRS' | 'Premium_LRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Premium_ZRS' — The type of the data disk
        - `osDisk` object — Specify OS disk specification other than default.
          - `type` 'Standard_LRS' | 'Premium_LRS' | 'StandardSSD_LRS' | 'StandardSSD_ZRS' | 'Premium_ZRS' — The type of the OS disk.
          - `sizeGB` integer — The size of the data disk in GB, Required if dataDisks is specified.
        - `bootDiagnostics` object — Will enable boot diagnostics in Azure when a new VM is launched
          - `isEnabled` boolean, required — Allows you to enable and disable the configuration of boot diagnostics at launch
          - `type` 'managed' | 'unmanaged', required — Defines the type of storage on VM launch in Azure.
          - `storageUri` string — The storage URI that is used if type is unmanaged. The storage URI must follow the blob storage URI format ("https://<blobstoragename>.blob.core.windows.net/"). StorageUri is required if the type is unmanaged. StorageUri must be ‘null’ in case the boot diagnostics type is managed
        - `secrets` object[] — Set of certificates that should be installed the VM
          - `sourceVault` object, required — The key vault reference, contains the required certificates
            - `resourceGroupName` string, required — The resource group name of the key vault
            - `name` string, required — The name of the key vault
          - `vaultCertificates` object[], required — The required certificate references
            - `certificateUrl` string, required — The URL of the certificate under the key vault
            - `certificateStore` string, required — The certificate store directory the VM. The directory is created in the LocalMachine account. * This field is required only when using windows OS type * This field must be ‘null’ when the OS type is Linux
        - `security` object — Specifies the Security related profile settings for the virtual machine.
          - `securityType` 'Standard' | 'TrustedLaunch' | 'ConfidentialVM' — Security type refers to the different security features of a virtual machine. Security features like Trusted launch virtual machines help to improve the security of Azure generation 2 virtual machines.
          - `secureBootEnabled` boolean — Specifies whether secure boot should be enabled on the virtual machine.
          - `vTpmEnabled` boolean — Specifies whether vTPM should be enabled on the virtual machine.
          - `confidentialOsDiskEncryption` boolean — Confidential disk encryption binds the disk encryption keys to the VM's TPM, ensuring VM-only access. The security type must be "ConfidentialVM" to enable defining this preference as “true”.
          - `encryptionAtHost` boolean — Enables host encryption for the virtual machine. Encryption at host can only be enabled if this property is set to true for the resource.
        - `proximityPlacementGroups` object[] — The proximity placement group where the VM is launched.
          - `name` string, required — The name of the proximity placement group.
          - `resourceGroupName` string, required — The resource group name of the proximity placement group.
      - `zones` string[] — List of Azure Availability Zones in the defined region; If not defined, Virtual machines will be launched regionally.
      - `preferredZones` string[] — The AZs to prioritize when launching VMs. If no markets are available in the Preferred AZs, VMs are launched in the non-preferred AZs. <a style=color:red>Must be a sublist of compute.zones. </a>
    - `health` object — Set health check and auto-healing of unhealthy VMs.
      - `healthCheckTypes` string[] — Health check types to use in order to validate VM health.
      - `gracePeriod` integer — The amount of time (in seconds) after a new VM has launched before terminating the old VM.
      - `autoHealing` boolean — Enable auto-healing of unhealthy VMs.
      - `unhealthyDuration` integer — Amount of time (in seconds) for the VM to remain unhealthy before a replacement is triggered.
    - `scheduling` object — Define cron-based scheduled tasks.
      - `tasks` union[] — A list of scheduling tasks. Note: The type of each task defines the behavior of the cron execution.
        - union
          - object — This is a scheduled task that will allow to change the group's capacty. If the target is changed, then VMs will either be scaled up or down. Note: At least one of the following must be configured: [scaleTargetCapacity, scaleMaxCapacity, scaleMinCapacity]
            - `isEnabled` string, required — A list of scheduling tasks.
            - `cronExpression` string, required — A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.
            - `type` 'scale', required — Define cron-based scheduled tasks.
            - `scaleTargetCapacity` integer — This will set the defined target group capacity when the scheduling task is triggered.
            - `scaleMaxCapacity` integer — This will set the defined maximum group capacity when the scheduling task is triggered.
            - `scaleMinCapacity` integer — This will set the defined maximum group capacity when the scheduling task is triggered.
          - object — This is a scheduled task that will allow to add VMs to the group's target capacity by a specific count.
            - `isEnabled` string, required — A list of scheduling tasks.
            - `cronExpression` string, required — A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.
            - `type` 'scaleUp', required — Defines the type of the scheduled task.
            - `adjustment` integer, required — This will increase the target capacity by the defined amount when the scheduling task is triggered.
          - object — This is a scheduled task that will allow to remove VMs from the group's target capacity by a specific count.
            - `isEnabled` string, required — A list of scheduling tasks.
            - `cronExpression` string, required — A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.
            - `type` 'scaleDown', required — Defines the type of the scheduled task.
            - `adjustment` integer, required — This will decrease the target capacity by the defined amount when the scheduling task is triggered.
          - object — This is a scheduled task that will allow to add VMs to the group's target capacity by a percentage of the group's current target.
            - `isEnabled` string, required — A list of scheduling tasks.
            - `cronExpression` string, required — A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.
            - `type` 'scaleUpPercentage', required — Defines the type of the scheduled task.
            - `adjustmentPercentage` integer, required — This will increase the target capacity by the defined percentage value when the scheduling task is triggered. This will set the target capacity by the defined percentage of the current target when the scheduling task triggers.
          - object — This is a scheduled task that will allow to remove VMs from the group's target capacity by a percentage of the group's current target.
            - `isEnabled` string, required — A list of scheduling tasks.
            - `cronExpression` string, required — A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.
            - `type` 'percentageScaleDown', required — Defines the type of the scheduled task.
            - `adjustmentPercentage` integer, required — This will decrease the target capacity by the defined percentage value when the scheduling task is triggered.
          - object — This is a scheduled task that will allow the deployment of an Elastigroup.
            - `isEnabled` string, required — A list of scheduling tasks.
            - `cronExpression` string, required — A valid cron expression. The cron is running in UTC time zone and is in Unix cron format of Cron Expression Validator Script.
            - `type` 'deployment', required — Defines the type of the scheduled task.
            - `batchSizePercentage` integer, required — Indicates the timeout (in seconds) to wait until the VM becomes healthy, based on the healthCheckType.
            - `gracePeriod` integer, required — Indicates (in seconds) the timeout to wait until instance become healthy based on the healthCheckType.
    - `integrations` object — Configure integrations for the VMs in the Elastigroup.
      - `azureDns` object — Configure DNS zones for the VMs in the Elastigroup. [Read more](https://docs.flexera.com/spot/elastigroup/features-azure/dns)
        - `dnsZones` object[]
          - `type` 'public' — The type of DNS zone. Currently, only public is supported.
          - `resourceGroup` string — The resource group name of the DNS zone.
          - `name` string — The name of the DNS zone.
          - `recordSets` object[] — The record sets of virtual machine IPs to add to the DNS.
            - `name` string — The name of the record set.
          - `spotAccountId` string — For cross-subscription shared DNS zones, this is the Spot account ID of the Azure subscription in the DNS zone.
      - `insights` object — Configure insights for the VMs in the Elastigroup.
        - `isEnabled` boolean — Enable insights for the VMs in the Elastigroup.
        - `dataCollectionRuleId` string — The ID of the data collection rule to be associated with the VMs in the Elastigroup.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time

## Other responses

- `400` — Bad Request

---

[API](https://skmtc.net/spot/apis/spot-by-flexera-api.md) · [All operations](https://skmtc.net/spot/apis/spot-by-flexera-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/spot/spot-by-flexera-api/revisions/72813baf8d47/schema)
