1. A method to perform server provisioning on a plurality of computer systems to generate a plurality of target virtual servers, the method comprising: receiving one or more business requirements for building the target virtual servers; defining a cost function based on the one or more business requirements, the cost function specifying a cost value associated with each of a plurality of actions; obtaining a plurality of server configurations, each associated with a respective service image, from a pool comprising a plurality of server images through a discovery process; performing a clustering analysis on the plurality of server configurations to generate a plurality of clusters, where each cluster includes server configurations that are similar to each other; identifying an optimal server configuration for each cluster by: identifying a plurality of sub-clusters within the cluster, wherein each sub-cluster includes one or more server configurations that are identical; for each of the plurality of sub-clusters: selecting the server configuration of the sub-cluster as a candidate server configuration; identifying sequences of actions required to be performed on the server image associated with the candidate server configuration to result in target virtual servers having the same server configurations as the server configurations of the other sub-clusters; determining a total cost value of performing the sequences of actions required to be performed on the server image based on the cost value associated with each action; selecting the server configuration of the sub-cluster with the lowest total cost as the optimal server configuration for the cluster; installing the server image associated with the optimal server configuration of each cluster on the plurality of computer systems; and performing corresponding sequences of actions on the plurality of computer systems to generate the plurality of target virtual servers.