1. A system for automatically provisioning a plurality of computing devices comprising: a database system which stores a model for each of the plurality of computing devices, including identifications of the software components that are to be installed on said devices; a file system which stores software components that are installed on said computing devices during provisioning; a plurality of agents which are respectively resident on each of said plurality of devices, and which communicate with said database system to obtain an identification of software components to be installed, and communicate with said file system to retrieve and install software components identified by said database system; and a communications gateway through which communication messages are exchanged between said agents and said database system, wherein said agents communicate with said gateway by requesting an instruction, and said gateway responds to each request with a command to be performed by the agent, or an indication that there is no command.