1. A method of provisioning software to a target machine, said method comprising: retrieving, by a provisioning server hosted by a boot server machine, at least one software distribution, wherein the provisioning server has access to templates of configurations; identifying, by the provisioning server, one or more resources associated with the target machine; determining, by the provisioning server, a function to be performed by the target machine based on the identified one or more resources associated with the target machine; generating, by the provisioning server, a profile for the at least one software distribution, wherein the profile associates the at least one software distribution with the function to be performed by target machines utilizing the at least one software distribution and wherein the profile links a configuration file to the at least one software distribution; receiving, by the provisioning server, information indicating a system remote from the target machine that will assist in installing the at least one software distribution on the target machine; receiving, by the provisioning server, update information for the at least one software distribution; and automatically installing, by the provisioning server, the at least one software distribution and update information on the target machine based on the profile and with the assistance of the remote system.