Abstract:
A method and apparatus for cloning a configuration of a computer in a datacenter is described in the present application. In one embodiment, the method comprises accessing a configuration snapshot for a computer in a data center, wherein the configuration snapshot defines at least one configuration attribute for at least one computer resource and indicates an operating system and at least one software application and provisioning a hardware computer in the data center based on the configuration snapshot.

Description:
BACKGROUND OF THE INVENTION 
     1. Field of the Invention 
     Embodiments of the present invention generally relate to computer networking and, more particularly, to a method and apparatus for discovering and cloning a configuration of a computer in a data center in an automated manner. 
     2. Description of the Related Art 
     A system administrator may desire to provision numerous computers (e.g., servers) in a data center (e.g., a production environment, a server farm and/or the like) with identical or near identical configurations of various computer resources (e.g., software applications, hardware devices, operating system, network components, clustering software and the like). For example, the data center may comprise numerous clones of a particular computer with a gold standard configuration of the various computer resources. Such a gold standard configuration may be based upon the current best practices for data centers. 
     As an example, such a datacenter may be used by an organization as a disaster recovery site. The numerous clones are provisioned in accordance with the gold standard in order to recover from a loss in productivity due to a disaster (e.g., a flood, a power outage, an inoperative computer and/or the like). The term Disaster Recovery (DR) refers to various actions performed to provide computing resources to a client computer in the event of failure in the data center. The failure can occur due to multiple factors, such as a component failure (such as hardware or software failure), natural disaster, or any other technical disasters (such as virus attacks). 
     Conventional techniques for provisioning computers (servers) are manual. Hence, such conventional techniques are expensive and do not scale well. Because the servers are manually configured, there is a strong likelihood that errors occurred during the provisioning. Such errors may cause unpredictable problems associated with the software applications running on the servers. Further, such conventional techniques are restricted to provisioning the computers with a limited number of well defined services (e.g., File Transfer Protocol (FTP) file services, Berkeley Internet Name Domain (BIND) Domain Name Service (DNS) services, and APACHE web services) and/or to a specific software application, such as an operating system (e.g., LINUX). 
     Therefore, there is a need in the art for a method and apparatus for cloning a configuration of a computer in the data center by using a configuration snapshot to provision one or more hardware computers in an automated manner. 
     SUMMARY OF THE INVENTION 
     Embodiments of the present invention generally comprise a method and apparatus for cloning a configuration of a computer in a data center. In one embodiment, the method for using a configuration snapshot to clone a computer in a data center comprises accessing a configuration snapshot for a computer in a data center, wherein the configuration snapshot defines at least one configuration attribute for at least one computer resource and indicates an operating system and at least one software application and provisioning a hardware computer in the data center based on the configuration snapshot. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       So that the manner in which the above recited features of the present invention can be understood in detail, a more particular description of the invention, briefly summarized above, may be had by reference to embodiments, some of which are illustrated in the appended drawings. It is to be noted, however, that the appended drawings illustrate only typical embodiments of this invention and are therefore not to be considered limiting of its scope, for the invention may admit to other equally effective embodiments. 
         FIG. 1  is a block diagram of a system for using a configuration snapshot to clone a computer in a data center according to an embodiment of the present invention; 
         FIG. 2  is a flow diagram of a method for using a configuration snapshot to clone a computer in a data center according to an embodiment of the present invention; and 
         FIG. 3  is a flow diagram of a method for storing a configuration snapshot according to an embodiment of the present invention. 
     
    
    
     DETAILED DESCRIPTION 
       FIG. 1  is a block diagram of a system  100  for using a configuration snapshot to clone a computer in a data center according to an embodiment of the present invention. The system  100  includes a manager  104  and a data center  102 , each coupled to each other through a network  106 . 
     The manager  104  may be a computing device that comprises a Central Processing Unit CPU  114 , support circuits  116 , and a memory  118 . The CPU  114  comprises one or more commercially available microprocessors or microcontrollers. Alternatively, the CPU  114  may include one or more Application Specific Integrated Circuits, also known as ASIC. The various support circuits  116  facilitate the operation of the CPU  114  and includes one or more clock circuits, buses, power supplies, network cards and/or the like. The memory  118  may be a Read Only Memory (ROM), a Random Access Memory (RAM), an Electrically Erasable Programmable Read Only Memory (EEPROM), a Flash memory, magnetic storage, a removable storage memory and/or the like. The memory  118  further includes an interface module  120 , a discovery module  122 , a configuration snapshot  124 , a provisioning module  126  and an agent  128 . 
     Generally, the data center  102  comprises various computing devices such as, for example, servers, desktop computers, laptop computers, mobile computing devices (e.g., mobile phones and Personal Digital Assistants (PDAs)), and/or the like. The data center  102  further includes a computer  108  and one or more hardware computers  112  (illustrated as a hardware computer  112   1 , a hardware computer  112   2  . . . a hardware computer  112   N ), each coupled to each other through a network. Those skilled in the art will appreciate that the computer  108  may be a server. The computer  108  comprises one or more computer resources  110  (e.g., software packages, operating systems, hardware devices and/or the like). In one embodiment of the present invention, the computer  108  may include a “gold” standard configuration of the computer resources  110 . 
     The network  106  comprises a communication system that connects a computer system by wire, cable, fiber optic and/or wireless link facilitated by various types of well-known network elements, such as hubs, switches, routers, and the like. The network  106  may further employ various well-known protocols to communicate information amongst the network resources. For example, the network  106  may be a part of the Internet or Intranet using various communications infrastructure, such as Ethernet, WiFi, WiMax, General Packet Radio Service (GPRS) and the like. The network  106  may be a part of a Local Area Network (LAN), a Wide Area Network (WAN) or a Storage Area Network (SAN). 
     According to various embodiments of the present invention, the discovery module  122  and the provisioning module  126  cooperate to automatically discover and clone a configuration (e.g., the computer resources  110  within the computer  108 ) by provisioning one or more hardware servers (e.g., the one or more hardware computers  112 ) using a snapshot of the configuration (e.g., the configuration snapshot  124 ). In one embodiment, the discovery module  122  examines information regarding the computer resources  110  at the computer  108  in the data center  102  to establish (e.g., take) the configuration snapshot  124 . Then the provisioning module  126  accesses the configuration snapshot  124  in order to provision the one or more hardware computers  112  as one or more clones of the computer  108 . In another embodiment, the interface module  120  generates a user interface for selecting the computer  108  and/or modifying the configuration snapshot  124 . 
     Generally, a configuration snapshot comprises information regarding a current configuration of a computer to be cloned (i.e., a “gold” standard or optimal configuration of various computer software and hardware resources). In one embodiment, a snapshot of the current configuration of the computer resources  110  at the computer  108  may be taken and stored as the configuration snapshot  124 . According to one or embodiments, the configuration snapshot  124  comprises information regarding the computer resources  110  at the computer  108 . In one embodiment, the configuration snapshot  124  defines one or more configuration attributes for the computer resources  110 . In another embodiment, the configuration snapshot  124  indicates an operating system and/or one or more software applications in use and/or installed on the computer  108 . In one embodiment, the one or more configuration attributes for the computer resources  110  includes one or more configuration attributes for the operating system and/or the one or more software applications. 
     Generally, a hardware computer may be also known as a hardware server or a bare-metal server. The bare metal server is a computer that does not contain an operating system or any software applications. Sometimes, the hardware server or the bare-metal server is a computer in which a virtual machine is installed directly on computer hardware rather than within the host operating system (OS). Hence, the term “bare metal” refers to a hard disk, the usual medium on which the host operating system (OS) is installed. For example, when you purchase a new hard drive it is completely empty, or “nothing but bare metal”. 
     The interface module  120  creates a User Interface (UI) for enabling a system administrator to manage the data center  102 , access the configuration snapshot  124  and/or operate the discovery module  122  or the provisioning module  126 . According to various embodiments, the system administrator may use the UI to create (e.g., take) or modify the configuration snapshot  124 . The system administrator may use the UI to customize (e.g., change, add or subtract) one or more configuration attributes within the configuration snapshot  124 . In another embodiment, the system administrator may also change, add or subtract information regarding an operating system and/or one or more software applications to be installed on the one or more hardware computers  112 . For example, the system administrator may modify the configuration snapshot  124  to indicate a different operating system and/or one or more additional software applications. 
     In another embodiment, the system administrator may use the UI to specify a server, (e.g., the computer  108  in the data center  102 ) to clone. Similarly, one or more hardware servers, for example the one or more hardware computers  112 , to be provisioned may be identified by the system administrator through the UI. In one embodiment, the UI may be a Graphical User Interface (GUI) that provides a graphical view of the data center  102  and/or the computer resources  110 . The system administrator may select the server to clone from such a graphical view. In another embodiment, the interface module  120  creates a UI that is a command line interface through which the system administrator identifies the server to be cloned by a Media Access Control (MAC) address, a Domain Name Server (DNS) name or an Internet Protocol (IP) address. 
     The discovery module  122  (e.g., VERITAS Configuration Manager (VCM)) is configured to provide a configuration management solution. The discovery module  122  examines information regarding the computer resources  110  in use at the computer  108  in the data center  102 . The discovery module  122  generates (e.g., takes) the configuration snapshot  124  based on the information regarding the computer resources  110 . For example, the discovery module  122  examines the information regarding a file system (e.g., a Master File Table, metadata) and/or a registry (e.g., a system registry). Based on such information, the discovery module  122  determines an operating system and one or more software applications that are installed on the computer  108  as well as one or more configuration attributes of the computer resources  110 . The discovery module  122  stores such determinations as a portion of the configuration snapshot  124 . Hence, the configuration snapshot  124  indicates the operating system and the one or more software applications in use at the computer  108  according to one embodiment. 
     In one embodiment, the discovery module  122  may be configured to crawl the data center  102  (e.g., the computer  108 ) and examine the file system information the system registry, Internet Information Services (IIS) metabase (i.e., a repository for IIS configuration values) and the like to obtain information about various software resources (e.g., software applications) installed on the computer  108 . The discovery module  122  may extract one or more configuration attributes for each of these software applications. 
     As described above, the discovery module  122  examines one or more configurations of the computer resources  110  within the data center  102  in an automated manner. The discovery module  122  may be configured to monitor configuration changes within the date center  102  in real time to ensure configuration integrity. The discovery module  122  automatically modifies the configuration snapshot  124  based on any monitored configuration change. Further, the discovery module  122  minimizes application downtime for resolving any problems associated with the configuration changes. 
     According to one embodiment, the provisioning module  126  installs the operating system and the one or more software applications onto the one or more hardware computers  112  as indicated by the configuration snapshot  124 . In one embodiment, the provisioning module  126  accesses a software library to obtain the installation packages associated with the installed operating system and one or more software applications. Furthermore, the provisioning module  126  configures the one or more hardware computers  112  with one or more configuration attributes. The one or more configuration attributes may be selected from the configuration snapshot  124 . Alternatively, the one or more configuration attributes may be selected from the configuration snapshot  124  and then, modified. 
     In one embodiment, the provisioning module  126  creates a virtual machine image onto the one or more hardware computers  112  according to the configuration snapshot  124 . The virtual machine image is used for generating the operating system for the one or more hardware computers  112 . In an embodiment, the provisioning module  126  clones the computer  108  by deploying one or more virtual machine images to the one or more hardware computers  112 . Once the one or more virtual machine images in the one or more hardware computers  112  are mounted, one or more virtual machines are generated to operate as clones of the computer  108 . 
     In an embodiment, the provisioning module  126  is a VERITAS Provisioning Manager (VPM). The provisioning module  126  is configured to enable an end-to-end automated server build process through an integrated workflow for heterogeneous enterprise environments. The provisioning module  126  automates server provisioning and management from a physical bare metal discovery and operating system (OS) installation to applications and patch deployment. The provisioning module  126  further offers broad-scale with rapid deployment capability for high-performance data centers, for example the data center  102 . 
     Depending on the application, various embodiments of the present invention provide an option for copying of the application data during a cloning process. For example, in order to create a clone for Disaster Recovery (DR) purposes, a volume replication process may be required to synchronize application data. Whereas data copying may not be required for scaling out of the stateless servers, or for cluster failover type of usage. 
     The agent  128  is an optional software package included within the computer  108  and/or the one or more hardware computers  112 . In one embodiment, the agent  128  monitors the computer  108  in the data center  102  and identifies a change in a configuration of the computer resources  110 . When the agent  128  identifies a change in the configuration of one or more computer resources of the computer resources  110 , the agent  128  modifies or updates the configuration snapshot  124  based on this change according to one or more embodiments. The system administrator may decide not to update the configuration snapshot  124  despite the change in the configuration. In another embodiment, the agent  128  may also be configured to support the provisioning of the one or more hardware computers  112 . For example, the agent  128  may cooperate with the provisioning module  126  to install one or more software applications and/or an operating system and/or establish one or more configuration attributes for various computer resources on the one or more hardware computers  112 . 
       FIG. 2  is a flow diagram of a method for using a configuration snapshot to clone a computer in a data center according to an embodiment of the present invention. The method  200  starts at step  202  and proceeds to step  204 . 
     At step  204 , a server, (e.g., the computer  108 ) is selected. At step  206 , information regarding one or more computer resources, is accessed. At step  208 , a configuration snapshot, (e.g., the configuration snapshot  124  of  FIG. 1 ) is generated. At step  210 , a hardware computer is selected. The method  200  proceeds to step  214  at which the hardware computer is provisioned. Optionally, the method  200  proceeds from the step  210  to step  212  at which the configuration snapshot  124  is customized. Nonetheless, the method  200  proceeds to step  216 . At step  216 , a determination is made as to whether a hardware computer is next to be provisioned. If there is a hardware computer that is next to be provisioned (option “YES”), the method  200  returns to the step  210 . If there is no hardware computer that is next to be provisioned (option “NO”), the method  200  proceeds to step  218 . At step  218 , the method  200  ends. 
       FIG. 3  is a flow diagram of a method for storing a configuration snapshot according to an embodiment of the present invention. The method  300  starts at step  302  and proceeds to step  304 . 
     At step  304 , file system information, a computer registry and/or one or more software applications are examined. At step  306 , one or more configuration attributes associated with one or more computer resources are processed. In an embodiment of the present invention, the steps  304  and  306  may be an embodiment of the step  206  of the method  200 . At step  308 , a configuration snapshot is generated and stored. At step  310 , a determination is made as to whether there is a change in a configuration. If there is no change in the configuration (option “NO”), the method  300  proceeds to step  314  where the method  300  ends. If there is a change in the configuration (option “YES”), the method  300  proceeds to step  312 . At the step  312 , the configuration snapshot is modified based on the configuration change. At step  314 , the method  300  ends. Steps  308  to  312  may be an embodiment of the step  208  of the method  200  as described above for  FIG. 2 . 
     While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.