1. A method, comprising: receiving, by a hardware processor, a request to provision a set of virtual machines; accessing, by the hardware processor, a resource usage history comprising a record of historical consumption of a plurality of resources; determining, by the hardware processor, a set of selection criteria for the set of virtual machines in view of an analysis of the resource usage history; evaluating, by the hardware processor, a plurality of target resources associated with a set of target resource providers in view of the set of selection criteria; selecting, by the hardware processor, a first set of target resources associated with at least one resource provider; and selecting, by the hardware processor, a second set of target resources associated with at least one resource provider, wherein the second set of target resources is selected in view of the selected first set of target resources, wherein the set of virtual machines are to be provisioned to use the first set of target resources and the second set of target resources.