A data center is a facility that physically houses various equipment, such as computers, servers (e.g., web servers, application servers, database servers), switches, routers, data storage devices, load balancers, wire cages or closets, vaults, racks, and related equipment for the purpose of storing, managing, processing, and exchanging data and information between hosts. A host typically corresponds to a computer system, a processor with associated physical memory, or a processor with shared memory and/or resources. Data centers also provide application services and management for various data processing functions, such as web hosting internet, intranet, telecommunication, and information technology.
Data centers are a unique environment because all the machines and services provided to clients are within a controlled and well-monitored environment. Specifically, data centers are managed by one or more administrators. In order to provide the application services and data processing functions, software is installed by an administrator on each host of the data center. Typically, installing the software on each host is performed remotely. Provisioning is the act of installing the software. One type of software that is typically provisioned is the operating system (OS) on bare hardware.
Provisioning an OS in a data center is challenging because data centers are typically large and heterogeneous with respect to different operating systems (e.g., Solaris™ developed by Sun Microsystems, Inc. (a trademark of Sun Microsystems, Inc. located in Santa Clara, Calif.), Redhat Linux® developed by Red Hat, Inc. (a registered trademark of Red Hat, Inc. located in Raleigh, N.C.), SUSE® Linux developed by Novell, Inc. (a registered trademark of Novell, Inc. located in Waltham, Mass.), Windows® developed by Microsoft Corporation (a registered trademark of the Microsoft Corporation located in Redmond, Wash.), etc.) and types of hosts (i.e., different hosts use different hardware).
Further, each OS has a separate provisioning program that orchestrates the provisioning of the OS on the host. Each provisioning program typically has different input parameters, configuration file formats, and configuration steps. Accordingly, provisioning the different types of operating systems requires the administrator to be knowledgeable about the different input parameters, configuration file formats, and configuration steps.