1. A computer-implemented method, comprising: determining, using a computing device, utilization of resources for each cluster of a plurality of virtual machine clusters responsive to a request to provision a virtual machine of the plurality of virtual machine clusters; assigning weights to the resources for each cluster of the plurality of virtual machine clusters responsive to the determining, wherein assigning weights comprises: determining a first deviation of a utilization of a first resource of the respective cluster of the plurality of virtual machine clusters below a first utilization threshold; determining a second deviation of a utilization of a second resource of the respective cluster of the plurality of virtual machine clusters below a second utilization threshold, wherein the second deviation is greater than the first deviation; assigning a first weight to the first resource of the respective cluster of the plurality of virtual machine clusters based on a magnitude of the first deviation; assigning a second weight, smaller than the first weight, to the second resource of the respective cluster of the plurality of virtual machine clusters based on a magnitude of the second deviation and a comparison of the first deviation to the second deviation; determining that the utilization of the second resource exceeds the second utilization threshold; determining that the utilization of the first resource exceeds the first utilization threshold; determining that an amount the utilization of the second resource exceeds the second utilization threshold for the second resource is greater than an amount the utilization of the first resource exceeds the first utilization threshold; and reassigning the first weight to the second resource and the second weight to the first resource responsive to the determination that the utilization of the second resource exceeds the second utilization threshold for the second resource more than the utilization of the first resource exceeds the first utilization threshold; identifying clusters that are available for provisioning a virtual machine, the identifying comprising calculating an availability value for each cluster of the plurality of virtual machine clusters by analyzing the utilization of the resources and the weights of the resources for each cluster of the plurality of virtual machine clusters, wherein a cluster of the plurality of virtual machine clusters is identified as being available if its availability value satisfies an availability threshold; and provisioning a virtual machine from a cluster of the plurality of virtual machine clusters identified as available for provisioning a virtual machine based on its availability value.