Agentless installation for building deployments

The agentless provisioner addresses the limitations of manual server provisioning by automating deployment and monitoring across heterogeneous environments, ensuring secure and rapid server setup with reduced downtime.

JP7748791B2Active Publication Date: 2025-10-03INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023568132
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-05-10
Filing Date
2022-03-29
Publication Date
2025-10-03
Estimated Expiration
2042-03-29

AI Technical Summary

Technical Problem

Current server provisioning solutions require manual configuration, lack monitoring feedback, are vendor-specific, and are limited to specific operating systems, making them time-consuming and prone to human error, especially in heterogeneous data centers with diverse operating systems and hardware.

Method used

An agentless provisioner that automates server deployment through an out-of-band management card, uses a boot loader to install the operating system, provides auto-configuration files, and monitors installation progress, translating vendor-specific commands to ensure scalability and security across mixed hardware environments.

Benefits of technology

The agentless provisioner reduces downtime by automating scalable workflows, ensuring secure and rapid deployment across diverse systems, minimizing human error and adapting to different operating systems and hardware configurations.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007748791000001
    Figure 0007748791000001
  • Figure 0007748791000002
    Figure 0007748791000002
  • Figure 0007748791000003
    Figure 0007748791000003
Patent Text Reader

Abstract

A method, computer program product, and system for server provisioning and deployment. The method includes receiving a deployment configuration for a server. The deployment configuration includes a requested software build, an installation of a requested application, and a configuration of the server. The method also includes reconfiguring hardware on the server via an out-of-band management card on the server based on the deployment configuration, and pushing a boot loader to the server for an operating system installation. The method further includes performing an operating system installation on the server and sending an auto-configuration file to the server. The auto-configuration file provides installation properties for the application. The method also includes monitoring a state of the server during the installation of the application using a serial terminal output on the server.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] The present disclosure relates to server provisioning and deployment, and more particularly to an agentless, portable provisioner that can automate the deployment of secure, scalable workflows. [Background technology]

[0002] Server provisioning provides a set of operations to prepare a server with the appropriate system, data, and software, and prepare it for network operation. During the server provisioning process, a server is selected and loaded with the appropriate software. This software includes the operating system, device drivers, middleware, and applications. Server provisioning can also change additional parameters, such as the Internet Protocol (IP) address and IP gateway, to enable the server to locate associated network and storage system resources.

[0003] Traditionally, server provisioning has been a manual process that involves setting up the server, configuring the hardware to the desired settings, and installing the required applications. However, manual provisioning can be time-consuming and prone to human error. Instead, automated provisioning can now be performed using a configuration file that details the specifications required for the server. This automated process can be performed on traditional physical servers as well as virtual infrastructure. Summary of the Invention

[0004] An embodiment of the present disclosure relates to a computer-implemented method for server provisioning and deployment, and more particularly, to an agentless, portable provisioner capable of automating deployment in a secure, scalable workflow. The computer-implemented method includes receiving a deployment configuration for a server. The deployment configuration includes a requested software build, a requested application installation, and a server configuration. The computer-implemented method also includes reconfiguring hardware on the server via an out-of-band management card on the server based on the deployment configuration and pushing a boot loader to the server for operating system installation. The computer-implemented method further includes performing an operating system installation on the server and sending an auto-configuration file to the server. The auto-configuration file provides installation properties for the application. The computer-implemented method also includes monitoring the status of the server during application installation using a serial terminal output on the server.

[0005] An additional embodiment of the present disclosure is a computer program product for server provisioning and deployment, more specifically including an agentless, portable provisioner capable of automating deployment in a secure, scalable workflow; one or more computer-readable storage media; and program instructions stored on the one or more computer-readable storage media, the program instructions executable by a processor to cause the processor to perform a method. The method includes receiving a deployment configuration for a server. The deployment configuration includes a requested software build, a requested application installation, and a server configuration. The method also includes reconfiguring hardware on the server via an out-of-band management card on the server based on the deployment configuration and pushing a boot loader to the server for operating system installation. The method further includes performing an operating system installation on the server and sending an auto-configuration file to the server. The auto-configuration file provides installation properties for the application. The method also includes monitoring a status of the server during application installation using a serial terminal output on the server.

[0006] A further embodiment of the present disclosure is a server provisioning and deployment system, more specifically, including an agentless, portable provisioner capable of automating deployment of secure, scalable workflows. The system includes a memory, a processor, and a local data storage device having computer-executable code stored thereon. The computer-executable code includes program instructions executable by the processor to cause the processor to perform the above-described method. The system further includes a translator configured to translate vendor-specific commands and translates commands in its stack during the above-described method. This allows the system to provide a simple, common set of commands that is vendor-independent and can operate in a mixed hardware environment. This summary is not intended to describe each aspect, all implementations, or all embodiments of the present disclosure, or combinations thereof.

[0007] These and other features, aspects, and advantages of embodiments of the present disclosure will become better understood with regard to the following description, appended claims, and accompanying drawings. [Brief explanation of the drawings]

[0008] [Figure 1] FIG. 1 is a block diagram illustrating an overall solution architecture used by one or more embodiments of the present disclosure. [Figure 2] FIG. 2 is a block diagram illustrating an agentless provisioner used in accordance with one or more embodiments of the present disclosure. [Figure 3] FIG. 2 is a flow diagram illustrating a process of server provisioning performed using an agentless provisioner on a server according to an embodiment of the present disclosure. [Figure 4] FIG. 1 is a high-level block diagram illustrating an exemplary computer system that may be used in implementing one or more of the methods, tools, and modules described herein, and any associated functionality, in which the present disclosure may be implemented. [Figure 5]1 illustrates a cloud computing environment according to an embodiment of the present disclosure. [Figure 6] FIG. 2 illustrates an abstraction model layer according to an embodiment of the present disclosure. DETAILED DESCRIPTION OF THE INVENTION

[0009] While the present disclosure is amenable to various modifications and alternative forms, specific aspects thereof have been shown by way of example in the drawings and will be described in detail. It should be understood, however, that the intention is not to limit the particular embodiments described. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the scope of the present disclosure. Like reference numerals are used to designate like parts in the accompanying drawings.

[0010] The present disclosure relates to server provisioning and deployment, and more particularly to an agentless and portable provisioner that can automate the deployment of secure and scalable workflows. While the present disclosure is not necessarily limited to such applications, various aspects of the present disclosure may be understood through the discussion of various examples using this context.

[0011] A data center is a facility that physically houses a variety of equipment, such as computers, servers (such as web servers, application servers, and database servers), switches, routers, data storage devices, load balancers, wire cages or closets, vaults, racks, and related equipment for storing, managing, processing, and exchanging data and information among hosts. A host typically corresponds to a computer system, a process with associated physical memory, or a processor with shared memory and / or resources. Data centers also provide application services and management for a variety of data processing functions, such as web hosting, internet, intranets, telecommunications, and information technology.

[0012] Data centers are typically located in managed and well-monitored environments. These data centers are managed by one or more administrators. To provide application services, software is installed by the administrator on each host in the data center. The installation of software on each host is typically performed remotely through provisioning. Server provisioning provides a set of operations to prepare servers with the appropriate systems, data, and software and prepare them for network operation. During the server provisioning process, a server is selected and loaded with the appropriate software. The software includes the operating system, device drivers, middleware, and applications. Additionally, server provisioning can change additional parameters, such as the IP address and IP gateway, to enable the server to locate associated network and storage system resources.

[0013] Because data centers are typically large and heterogeneous with respect to different operating systems (e.g., Solaris (a trademark of Sun Microsystems, Inc., Santa Clara, California), developed by Sun Microsystems; Red Hat Linux® (a registered trademark of Red Hat Corporation, Raleigh, North Carolina), developed by Red Hat; SUSE® Linux (a registered trademark of Novell Corporation, Waltham, Massachusetts), developed by Novell; Windows® (a registered trademark of Microsoft Corporation, Redmond, Washington), developed by Microsoft), and host types (i.e., different hosts use different hardware), provisioning must also be adaptive.

[0014] Depending on the operating system, different provisioning programs may be used that can orchestrate the provisioning of the operating system on the host, and each provisioning program may have different input parameters, configuration file formats, and configuration steps.

[0015] However, current provisioning solutions still have limitations in server provisioning and deployment, as they require manual configuration and startup of hardware, lack monitoring feedback, require Media Access Control (MAC) addressing, require manual system configuration, are vendor-specific, or are limited to specific operating systems. Furthermore, data centers prioritize high availability of services and provide rapid disaster recovery services. Rapid deployment of new nodes is crucial for data-intensive software deployments. However, not all software can be deployed and run in containers in a secure and scalable manner. This can be due to design, operational practices, technical debt, supportability, and more.

[0016] Embodiments of the present disclosure may overcome these and other problems by using an agentless provisioner for server provisioning and workload deployment. The agentless provisioner can execute customized methods that can execute scalable workflows, allowing users to define the desired deployment by profiling the type and details of processing nodes. Software installation and configuration is automated and scalable. Thus, embodiments can provide users with less downtime by not having to maintain other deployments.

[0017] More specifically, the agentless provisioner sends a request message to a management interface on the destination server to initiate software provisioning and deployment on the destination server. The request message can include the requested software build and the requested installation configuration. The agentless provisioner can then reconfigure the destination server's hardware through the management interface. The reconfiguration can include configuring redundant array of independent disks (RAID), providing firmware properties, configuring boot options, and triggering a boot to apply the changes made during the reconfiguration. Once configured, the agentless provisioner can push a boot loader to the destination server and begin installing the operating system.

[0018] The agentless provisioner can also provide an auto-configuration file to the destination server. The auto-configuration file can provide installation properties related to the application being installed. During installation, the agentless provisioner can monitor the installation through the serial terminal output. The information output by the serial terminal may be analyzed, allowing the agentless provisioner to determine if additional steps are required for the application to be successfully installed. Communications relayed from the server are intercepted by the agentless provisioner and translated based on the type of communication. In doing so, the agentless provisioner can translate the communications through a translation component, making the installation and monitoring process vendor-independent.

[0019] Additionally, the agentless provisioner can proactively push installations to destination servers. To determine the correct destination server being acted upon, the agentless provisioner can use a provisioning profile. The provisioning profile can map and assign a universally unique identifier (UUID) to the server based on MAC address, IP address, host, and management interface. The contents of a disk image or ISO containing the installation software, or other packaging mechanism, can serve as an internal repository that is loaded into the destination server's random access memory (RAM). Installing to RAM avoids disk and network slowdowns that can occur when installing over a disk or network. Loading content to RAM also allows the agentless provisioner to service multiple requests and track the progress of concurrent installations.

[0020] To facilitate installation from memory, a Trivial File Transfer Protocol (TFTP) server can enable the agentless provisioner to push the required packages to the destination server in increments based on the memory available on the destination server. For example, if the destination server has 8 gigabytes of available memory, the agentless provisioner can push package increments equal to or less than 8 gigabytes of memory, thereby allowing the installation to be performed from memory.

[0021] In some embodiments, the agentless provisioner reconfigures hardware on the destination server through an out-of-band management card connected to the destination server. The reconfiguration can include configuring RAID, providing firmware properties, configuring boot options, and triggering a boot to apply the changes made during the reconfiguration. For example, an application to be installed on the destination may require specific firmware and / or RAID configuration. The agentless provisioner can verify the necessary requirements required by the application and reconfigure the hardware on the destination server to ensure the application is installed correctly. Additionally, the agentless provisioner can verify that Preboot eXecution Environment (PXE) boot settings are functioning correctly on at least one available network interface card (NIC) installed on the destination server. PXE boot allows the destination to be booted over the network by the agentless provisioner. Once the hardware is reconfigured and the PXE boot settings are set, the agentless provisioner can power cycle the destination server to apply all the reconfiguration settings. The agentless provisioner can provide the destination server with the necessary information so that communications from the destination server use the correct MAC address and the provided IP address.

[0022] In some embodiments, the pushed boot loader is an open-source implementation of Pre-Boot Execution Environment (IPXE) client firmware and boot loader. The IPXE boot loader provides support for booting from the destination server from the network or extending an existing PXE client implementation on the destination server to support additional protocols. The agentless provisioner can generate a boot loader configuration file that includes installation options and the source software version of the boot loader. Once the boot loader boots, the agentless provisioner can proceed with installing the operating system on the destination server.

[0023] 1, there is shown a high-level block diagram of an overall solution architecture 100, according to an embodiment of the present disclosure. Architecture 100 includes a deployment configuration 110, a centralized server 120, an agentless provisioner 130, and destination servers 140-1, 140-2, 140-N (collectively "destination servers 140"), where N is a variable integer representing any number of possible destination servers 140. Additional details of agentless provisioner 130 are shown in FIG. 2.

[0024] The deployment configuration 110 is a component of the architecture 100 that includes commands to execute specific instructions for launch (e.g., tempf) from a specific source to facilitate the deployment of an application to a destination server 140-1. The deployment configuration 110 can build and extend the deployment of the destination server 140 specified in the deployment configuration. For example, the deployment configuration 110 can specify which destination server 140 in a data center the application should be installed on. Additionally, the deployment configuration can include vendor-specific credentials that the agentless provisioner 130 can use to communicate with the destination server 140 through a Secure Shell Protocol (SSH) tunnel. For example, the vendor-specific credentials can be used to set up an SSH tunnel through an Integrated Dell Remote Access Controller (iDRAC) or an Integrated Management Module (IMM).

[0025] Centralized server 120 is a component of architecture 100 configured to function as a unit to provide an interface to an administrator (not shown). In some embodiments, centralized server 120 is a web server that includes various forms of functionality, such as publishing web pages or web applications to the administrator, providing applications to run on the administrator's computer, or any other functionality that provides an interface to the system. The interface may be a command line interface or a graphical user interface.

[0026] Agentless provisioner 130 is a component of architecture 100 configured to manage the provisioning of destination server 140. In some embodiments, agentless provisioner 130 corresponds to one or more servers connected to destination server 140. Agentless provisioner 130 is described in more detail below (FIG. 2).

[0027] Destination servers 140 are components of architecture 100 that correspond to groups of servers on which provisioning may occur. Typically, multiple different operating systems are provisioned onto destination servers 140. For example, destination server 140-1 and destination server 140-2 run two different types of operating systems. In some embodiments, different groupings of destination servers 140 may run the same operating system and may or may not use the same configuration settings. For example, destination server 140-1 and destination server 140-2 run the same operating system but utilize different configuration settings based on the various settings and hardware of each server.

[0028] The destination server 140 may include multiple controllers, such as a serial terminal controller, a power controller, a boot controller, a graphical console controller, and a device discovery controller. These controllers may provide for remote management of the destination server 140 by the agentless provisioner 130. For example, the serial terminal controller includes functionality that allows for the remote display of serial terminal output. The power controller includes functionality that turns the destination server 140 on and off. The boot controller includes functionality that allows for the remote loading of programs. The graphical console controller includes functionality that allows for the remote display of a graphical console. The device discovery controller includes functionality that allows for the remote addition and configuration of new devices on the destination server 140.

[0029] It should be understood that there are multiple types of controllers (e.g., serial terminal controller, power controller, boot controller, graphical console controller, device discovery controller). Furthermore, one or more of the aforementioned functions provided by different controllers may be performed by a single controller or by different controllers. For example, the Automatic Light Out Management (ALOM) controller performs the functions of a power controller, a boot controller, and a serial terminal controller.

[0030] In some embodiments, destination server 140 is comprised of heterogeneous hardware systems. For example, destination server 140-1 may correspond to a server managed via Sun Microsystems' Intelligent Platform Management Interface (IPMI), while destination server 140-2 may correspond to a server managed via a Dell's Integrated Dell Remote Access Controller (iDRAC), or the like. Alternatively, destination server 140 may be a generic type whose hardware is individually specified by an administrator.

[0031] The destination server 140, the agentless provisioner 130, and the centralized server 120 may be connected in virtually any manner. Additionally, in some embodiments, the agentless provisioner 130 and the destination server 140 are behind a firewall. The centralized server 120 may or may not be behind the same firewall as the agentless provisioner 130 and the destination server 140. Typically, the agentless provisioner 130 is maintained in the data center that maintains the destination server 140, with or without the centralized server 120.

[0032] It should be noted that Figure 1 is intended to depict major representative components of exemplary architecture 100. However, in some embodiments, individual components may be more or less complex than those depicted in Figure 1, components other than or in addition to those depicted in Figure 1 may be present, and the number, type, and arrangement of such components may vary.

[0033] 2, an exemplary agentless provisioner 200 (similar to agentless provisioner 130 of FIG. 1) is shown. Agentless provisioner 200 includes a dynamic host configuration protocol (DHCP) server 210, a trivial file transfer protocol (TFTP) server 220, a hypertext transfer protocol secure (HTTPS) server 230, a translation component 240, a secure socket shell (SSH) service 250, a sandbox 260, and applications 270. Agentless provisioner 200 can provision heterogeneous destination servers 140 with server-specific operating systems and applications specified in deployment configuration 110.

[0034] The DHCP server 210 is a component of the agentless provisioner 200 configured to provide network management protocols used in Internet Protocol (IP) local area networks. The DHCP server can provide IP addresses to the destination servers 140 using the DHCP protocol. Additionally, the DHCP server 210 can assign unique addresses to each of the destination servers 140, identify them for transmission control protocol (TCP) / IP communication, and provide other network configuration parameters. The DHCP server 210 can operate a DHCP service that can provide minimal DHCP requirements for provisioning, using various DHCP configurations required for different operating systems running on the destination servers 140.

[0035] The TFTP server 220 is a component of the agentless provisioner 200 that is configured to store and serve files for provisioning (e.g., applications, operating systems, etc.). The TFTP server 220 can also be used to transfer firmware images and configuration files to the destination server 140.

[0036] The HTTPS server 230 is a component of the agentless provisioner 200 that is configured to provide secure communications between the agentless provisioner 200 and the destination server 140. In HTTPS, the communications protocol is encrypted using Transport Layer Security (TLS) or Secure Socket Layer (SSL). The HTTPS server 230 provides two-way encryption of the communications between the agentless provisioner 200 and the destination server 140, protecting the communications from eavesdropping and tampering.

[0037] The translation component 240 is a component of the agentless provisioner 200 configured to translate vendor-specific commands provided by the destination servers 140. For example, the destination server 140-1 may be a Dell server with a unique set of configuration commands, and the destination server 140-2 may be a Hewlett-Packard server with another unique set of configuration commands. During the provisioning process, the destination servers 140 may receive and send a unique set of commands to and from the agentless provisioner 200. These commands may, for example, provide commands, updates, and status notifications during the provisioning process. The translation component 240 may automatically translate the vendor-specific commands so that the agentless provisioner 200 can scale across environments with heterogeneous destination servers 140.

[0038] Additionally, the translation component 240 provides translations for the sequence of commands or actions to be executed against the managing controller (e.g., family / model) of the destination server 140 to accomplish a task (e.g., network startup, reboot, etc.). In some embodiments, the translation component 240 translates error codes during error handling. The translations can be for general issues that may exist at the destination server 140 during the provisioning process. Error code translations can ensure that tasks performed on the destination server 140 are fully performed properly, even if an error occurs at the managing controller level. Additionally, the translation component 240 can adjust commands based on preferences related to command line syntax, expected responses, timing, etc.

[0039] In some embodiments, the translation component 240 translates the vendor-specific commands via a mapping between the vendor-specific commands and commands understandable by the agentless provisioner 200. This can be accomplished by an administrator manually mapping the commands of the destination server 140 to the commands provided by the agentless provisioner 200. In this way, the translation component 240 provides a simple set of common commands that are not vendor-specific, thereby enabling mixed hardware deployments that allow for coordinated deployments.

[0040] The SSH service 250 is a component of the agentless provisioner 200 configured to provide secure shell tunneling between the agentless provisioner 200 and the destination server 140 during the provisioning process. An SSH tunnel can be used to transport unencrypted traffic over a network through an encrypted channel.

[0041] Sandbox 260 is a component of agentless provisioner 200 configured as a security mechanism for isolating running programs. Agentless provisioner 200 can observe and analyze application 270 in an isolated environment. Sandbox 260 can prevent threats from entering the network and potentially modifying the application.

[0042] The agentless provisioner 200 is configured to work with the manufacturer's management interface, such as an iDRAC or IMM, which allows the agentless provisioner 200 to communicate with the destination server 140 over an SSH tunnel for a secure connection, avoiding the use of other interfaces, such as the Intelligent Platform Management Interface ("IPMI"), which do not provide secure communications.

[0043] The agentless provisioner 200 is further configured to monitor the installation progress of the operating system and application installation during the provisioning process. The agentless provisioner may monitor an out-of-band serial terminal and / or SSH connection to verify that the installation is occurring correctly. This may be performed by analyzing logs, parsing regular expression files, and intercepting output generated by the serial terminal.

[0044] In some embodiments, the agentless provisioner 200 is portable and self-contained. For example, the agentless provisioner 200 may be a deployable binary including bash and java programs that can be distributed to multiple destination servers 140. Scalability can be achieved by loading the ISO content into random access memory of the destination servers 140, thereby enabling the mechanism to accommodate multiple requests.

[0045] It should be noted that Figure 2 is intended to depict major representative components of an exemplary agentless provisioner 200. However, in some embodiments, the individual components may be more or less complex than those depicted in Figure 2, components other than or in addition to those depicted in Figure 2 may be present, and the number, type, and configuration of such components may vary.

[0046] 3 is a flow diagram illustrating a process 300 of a server provisioning process using an agentless provisioner according to an embodiment of the present disclosure. Process 300 may be performed by hardware, firmware, software running on a processor, or a combination thereof. For example, any or all steps of process 300 may be performed by one or more processors embedded in a computing device.

[0047] A deployment configuration request for destination server 140 is received. This is shown at step 310. For example, an administrator generates and sends deployment configuration 110 to agentless provisioner 200. The deployment configuration 110 may include the intended configuration and installation instructions. For example, the deployment configuration 110 may include the requested software build and the requested installation configuration of the application to be installed. In some embodiments, the administrator sends the deployment configuration 110 to agentless provisioner 200 via a Representational State Transfer (REST) ​​call. The administrator may also send the deployment configuration 110 to a centralized server 120 running agentless provisioner 200, which sends the deployment configuration 110 to provisioner 130.

[0048] The hardware of the destination server 140 is reconfigured based on the information provided in the deployment configuration 110. This is shown in step 320. In some embodiments, the agentless provisioner 200 can configure the destination server 140 via an out-of-band terminal on the destination server 140 for Pre-Boot Execution Environment (PXE) boot on at least one available network interface card (NIC) connected to the destination server 140. The agentless provisioner 200 can then synchronize the terminal speed on the destination server 140 based on the speed provided by the operating system to be installed. For example, the agentless provisioner 200 can obtain COM2 at a specific baud rate so that the agentless provisioner 200 and the destination server 140 can communicate at the same speed.

[0049] Once synchronized, the agentless provisioner 200 can utilize the controller to reboot the destination server 140 to complete the configuration of the hardware specified in the deployment configuration 110. In some embodiments, all NICs connected to the destination server 140 are configured for network boot before rebooting. The first network card that becomes operational is selected for communication. The agentless provisioner 200 can ensure that when the hardware on the destination server 140 is reconfigured, a known working configuration for pre-boot execution environment PXE boot is available on all available NICs. Additionally, the agentless provisioner 200 can verify that the serial terminals on the destination server 140 are properly configured to a known state. Once verified, the agentless provisioner 200 can power cycle the destination server 140, thereby rebooting the system.

[0050] Upon restart, the agentless provisioner 200 can receive a DHCP offer packet from the destination server 140 and provide an IP address to the destination server 140. In some embodiments, the destination server 140 can send the DHCP offer packet over a broadcast domain via a NIC. The agentless provisioner 200 can intercept this packet and inspect the destination server 140 and its architecture. The agentless provisioner 200 can respond to the destination server 140 with the machine's IP address. The agentless provisioner 200 can also inform the destination server 140 of the media access control (MAC) address associated with the destination server 140.

[0051] The agentless provisioner 200 pushes the boot loader to the destination server 140. This is shown in step 330. In some embodiments, the boot loader is a modified version of the PXE client firmware and boot loader. Once pushed, the boot loader is executed and begins running on the destination server 140.

[0052] In some embodiments, pushing the boot loader includes generating a boot loader configuration file. The boot loader configuration file may include boot loader options and a source software version. Based on the deployment configuration 110, the boot loader configuration file may include installation options and a source software version of an application to be installed (e.g., QRadar). The source ISO file of the boot loader configuration file is not mounted or unpacked to a file system. The source ISO file of the boot loader configuration file may be read by the destination server 140.

[0053] Once generated, the agentless provisioner 200 can send an acknowledgement packet to the destination server 140 that includes a link to the TFTP server 220 containing the boot loader source files. The destination server 140 can then invoke the agentless provisioner 200 via TFTP to fetch the boot loader code, which can be sourced from internal jar storage. The agentless provisioner 200 can then send the source files and the boot loader configuration file via the TFTP server 220 to the destination server 140 specified by the link to the TFTP server 220.

[0054] The agentless provisioner 200 installs the operating system on the destination server 140 via a boot loader. This is shown in step 340. In some embodiments, the boot loader installs the operating system via a bootstrap process. Because the boot loader is typically a low-level version of Linux, a more powerful operating system is required to operate the server and run the applications specified in the deployment configuration 110. Additionally, recovery partitions and other details are generally dictated by the requirements of the specified and intended operating system installation.

[0055] In some embodiments, performing the operating system installation includes the agentless provisioner 200 receiving a request via a loopback request from the destination server 140 for files related to the operating system. The agentless provisioner 200 can send the files in chunks via the TFTP server 220 so that the destination server 140 can load the information into memory during the installation process. The files can include a full set of application options and callback links for additional files related to the operating system and the application. These callback links can point to kernel, kickstart, application auto-configuration files, and other data required for the provisioning process. Additionally, the configuration files include a hard mapping of the first Ethernet interface to a MAC address previously known to be communicating with the DHCP server 210.

[0056] The agentless provisioner 200 can then install the operating system on the destination server 140 from the auto-boot file located within the transmitted file via the server controller. In some embodiments, the destination server 140 loads "comboot" from the agentless provisioner 200 via the TFTP server 220 and performs an auto-boot from the previous operating system configuration. In some embodiments, the destination server 140 fetches the operating system kernel executable and initial random access memory (RAM) disk via a REST API on the agentless provisioner 200 via the HTTPS server 230. The kernel and disk can be sourced directly from within the ISO file and dynamically provided via the REST API for the destination server 140 to retrieve from memory.

[0057] During the installation process, the storage disk on destination server 140 may be partitioned and the installation of the operating system may be performed on the partition. Additionally, agentless provisioner 200 may monitor the installation of the operating system via SSH service 250. While the installation is being performed, the main ISO file may be copied to a recovery partition, which may be provided via a REST API provided by agentless provisioner 200. Once the main ISO file has been completely transferred to the recovery partition, agentless provisioner 200 may switch destination server 140 from network booting to local booting via DHCP server 210.

[0058] The destination server 140 is rebooted and the remainder of the operating system installation occurs via the local ISO file located on the recovery partition. While this occurs, the agentless provisioner can continue to monitor the progress of the installation via an out-of-band serial terminal on the destination server 140. Monitoring can include, for example, analyzing log files, monitoring serial terminal output in real time, or using regular expression ("regex") files. For example, a regular expression file can be parsed to look for specific points in the installation process that indicate points that require action. After the operating system is installed, the generated log file can be analyzed to verify that the installation was performed correctly.

[0059] The agentless provisioner 200 sends the auto-configuration file to the destination server 140. This is shown in step 350. The auto-configuration file can be downloaded via a REST API and placed in local storage on the destination server 140 where it can be read. The destination server 140 can be rebooted and the auto-configuration file can proceed with installing the application on the server.

[0060] The agentless provisioner 200 monitors the installation of the application. This is shown in step 360. The agentless provisioner 200 can continue to monitor the destination server 140 via an out-of-band serial terminal. The output of the terminal is analyzed, allowing the agentless provisioner 200 to determine when action needs to be taken. The output can include auto-installation properties specific to the application being installed. For example, vendor-specific error messages may occur, which can be translated by the translation component 240. Based on the error messages, the agentless provisioner 200 can take the necessary steps to correct the error. This may include, for example, resubmitting the installation file, returning to a previous step to ensure the destination server 140 is configured correctly, etc.

[0061] 4, there is shown a high-level block diagram of an exemplary computer system 400 (e.g., agentless provisioner 200) that may be used in implementing (e.g., using one or more processor circuits of a computer or computer processor) one or more of the methods, tools, and modules described herein, and any associated functionality, in accordance with embodiments of the present disclosure. In some embodiments, the major components of computer system 400 may include one or more processors 402, memory 404, a terminal interface 412, an I / O (input / output) device interface 414, a storage interface 416, and a network interface 418, all of which may be communicatively coupled for inter-component communication, directly or indirectly, via a memory bus 403, an I / O bus 408, and an I / O bus interface 410.

[0062] Computer system 400 may include one or more general-purpose programmable central processing units (CPUs) 402-1, 402-2, 402-3, and 402-N, generally referred to herein as processors 402. In some embodiments, computer system 400 may include multiple processors typical of relatively large systems, although in other embodiments, computer system 400 may alternatively be a single CPU system. Each processor 402 may execute instructions stored in memory 404 and may include one or more levels of on-board cache.

[0063] Memory 404 may include computer system-readable media in the form of volatile memory, such as random access memory (RAM) 422 or cache memory 424. Computer system 400 may further include other removable / non-removable, volatile / non-volatile computer system storage media. By way of example, storage system 426 may be provided for reading from and writing to non-removable, non-volatile magnetic media, such as a "hard drive." Although not shown, a magnetic disk drive may be provided for reading from and writing to a removable, non-volatile magnetic disk (e.g., a "floppy disk"), or an optical disk drive may be provided for reading from or writing to a removable, non-volatile optical disk, such as a CD-ROM, DVD-ROM, or other optical media. Additionally, memory 404 may include flash memory (e.g., a flash memory stick drive or flash drive). Memory devices may be connected to memory bus 403 by one or more data media interfaces. Memory 404 may include at least one program product having a set (e.g., at least one) of program modules configured to perform the functions of various embodiments.

[0064] While memory bus 403 is depicted in FIG. 4 as a single bus structure providing a direct communication path between processor 402, memory 404, and I / O bus interface 410, memory bus 403 may, in some embodiments, include multiple distinct buses or communication paths, which may be arranged in any of a variety of configurations, such as point-to-point links in a hierarchical, star, or web configuration, multiple hierarchical buses, parallel and redundant paths, or any other suitable type of configuration. Furthermore, while I / O bus interface 410 and I / O bus 408 are depicted as single respective units, computer system 400 may, in some embodiments, include multiple I / O bus interface units, multiple I / O buses, or both. Furthermore, while multiple I / O interface units are depicted, isolating I / O bus 408 from the various communication paths running to the various I / O devices, in other embodiments, some or all of the I / O devices may be directly connected to one or more system I / O buses.

[0065] In some embodiments, computer system 400 may be a multi-user mainframe computer system, a single-user system, or a server computer or similar device that has little or no direct user interface but receives requests from other computer systems (clients). Further, in some embodiments, computer system 400 may be implemented as a desktop computer, a portable computer, a laptop or notebook computer, a tablet computer, a pocket computer, a telephone, a smartphone, a network switch or router, or any other suitable type of electronic device.

[0066] It should be noted that Figure 4 is intended to depict major representative components of an exemplary computer system 400. However, in some embodiments, the individual components may be more or less complex than those depicted in Figure 4, components other than or in addition to those depicted in Figure 4 may be present, and the number, type, and arrangement of such components may vary.

[0067] One or more programs / utilities 428, each having at least one set of program modules 430 (e.g., agentless provisioner 200), may be stored in memory 404. The programs / utilities 428 may include a hypervisor (also called a virtual machine monitor), one or more operating systems, one or more application programs, other program modules, and program data. Each of the operating system, one or more application programs, other program modules, and program data, or some combination thereof, may comprise an implementation of a network environment. The programs 428 and / or program modules 430 generally perform the functions or methodologies of various embodiments.

[0068] Although this disclosure includes detailed descriptions of cloud computing, implementation of the teachings described herein is not limited to cloud computing environments. Rather, embodiments of the present disclosure can be practiced in conjunction with any other type of computing environment now known or developed in the future.

[0069] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with the service provider. This cloud model may include at least five characteristics, at least three service models, and at least four implementation models.

[0070] The characteristics are as follows:

[0071] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time or network storage, automatically as needed, without the need for human interaction with the service provider.

[0072] Broad network access: Computing power is available over the network and can be accessed through standard mechanisms, facilitating use by heterogeneous thin or thick client platforms (e.g., cell phones, laptops, PDAs).

[0073] Resource Pooling: Computing resources from a provider are pooled and offered to multiple consumers using a multi-tenant model. Various physical and virtual resources are dynamically allocated and reallocated based on demand. Consumers generally have no control or knowledge of the exact location of the resources they are provided with, resulting in a sense of location independence. However, consumers may be able to determine location at a higher level of abstraction (e.g., country, state, data center).

[0074] Rapid Elasticity: Computing capacity can be provisioned quickly and elastically, sometimes automatically, to instantly scale out and quickly release to instantly scale in. To the consumer, the computing power available for provisioning often appears unlimited, and can be purchased at any time and in any quantity.

[0075] Metered Services: Cloud systems leverage measurement capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, active user accounts) to automatically control and optimize resource usage. Resource usage can be monitored, controlled, and reported to provide transparency to both providers and consumers of utilized services.

[0076] The service model is as follows:

[0077] Software as a Service (SaaS): The functionality offered to the consumer is the availability of a provider's applications running on a cloud infrastructure that can be accessed from a variety of client devices through a thin client interface such as a web browser (e.g., webmail). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application functionality, except for limited user-specific application configuration settings.

[0078] Platform as a Service (PaaS): The capability offered to consumers is to deploy applications they create or acquire using programming languages ​​and tools supported by the provider onto a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the configuration of their hosting environment.

[0079] Infrastructure as a Service (IaaS): The functionality offered to consumers is the provisioning of processors, storage, networking, and other basic computing resources on which they can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but has control over the operating system, storage, and deployed applications, and in some cases partial control over some network components (e.g., host firewalls).

[0080] The deployment model is as follows:

[0081] Private Cloud: This cloud infrastructure is dedicated to a specific organization and can be managed by that organization or a third party, and can exist on-premise or off-premise.

[0082] Community Cloud: This cloud infrastructure is shared by multiple organizations to support a specific community with common concerns (e.g., mission, security requirements, policies, and compliance). This cloud infrastructure can be managed by those organizations or a third party and can exist on-premises or off-premises.

[0083] Public cloud: This cloud infrastructure is available to the general public or large industry organizations and is owned by an organization that sells cloud services.

[0084] Hybrid cloud: This cloud infrastructure combines two or more cloud models (private, community, or public), each of which retains its inherent nuances but is bound by standards or specific technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0085] A cloud computing environment is a service-oriented environment that emphasizes statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.

[0086] Referring to FIG. 5, an exemplary cloud computing environment 500 is shown. As shown, the cloud computing environment 500 includes one or more cloud computing nodes 510, to which local computing devices used by cloud consumers (e.g., personal digital assistants (PDAs) or mobile phones 520-1, desktop computers 520-2, laptop computers 520-3, or automobile computer systems 520-4, or combinations thereof) can communicate. The nodes 510 can communicate with each other. The nodes 510 can be physically or virtually grouped (not shown) in one or more networks, such as, for example, a private, community, public, or hybrid cloud, or combinations thereof, as described above. This enables the cloud computing environment 500 to provide infrastructure, platform, or software as a service, or combinations thereof, for which cloud consumers do not need to maintain resources on their local computing devices. It should be understood that the types of computing devices 520-1 through 520-4 shown in FIG. 5 are merely exemplary, and that computing node 510 and cloud computing environment 500 can communicate with any type of electronic device via any type of network and / or network-addressable connection (e.g., using a web browser).

[0087] Referring to Figure 6, a set of functional abstraction model layers 600 provided by cloud computing environment 500 (Figure 5) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 6 are merely exemplary, and embodiments of the present disclosure are not limited thereto. As shown, the following layers and corresponding functions are provided:

[0088] Hardware and software layer 610 includes hardware and software components. Examples of hardware components include mainframe 611, reduced instruction set computer (RISC) architecture-based server 612, server 613, blade server 614, storage device 615, and network and network components 616. In some embodiments, software components include network application server software 617 and database software 618.

[0089] The virtualization layer 620 provides an abstraction layer from which the following virtual entities can be provided, for example: virtual servers 621, virtual storage 622, virtual networks including virtual private networks 623, virtual applications and operating systems 624, and virtual clients 625.

[0090] By way of example, management layer 630 may provide the following functionality: Resource provisioning 631 enables dynamic procurement of computing and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 632 enables cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. By way of example, these resources may include application software licenses. Security enables the identification and verification of cloud consumers and tasks, as well as protection for data and other resources. User portal 633 provides consumers and system administrators with access to the cloud computing environment. Service level management 634 enables the allocation and management of cloud computing resources so that requested service levels are met. Service level agreement (SLA) planning and fulfillment 635 enables the advance arrangement and procurement of anticipated future cloud computing resources required according to SLAs.

[0091] The workload layer 640 provides examples of functionality available to a cloud computing environment. Examples of workloads and functionality that can be provided from this layer include mapping and navigation 641, software development and lifecycle management 642 (e.g., agentless provisioner 200), virtual classroom instruction delivery 643, data analytics processing 644, transaction processing 645, and precision cohort analysis 646.

[0092] The present invention may be a system, method, or computer program product, or combination thereof, integrated at any possible level of technical detail. The computer program product may include a computer-readable storage medium having stored thereon computer-readable program instructions for causing a processor to carry out aspects of the present disclosure.

[0093] A computer-readable storage medium may be a tangible device capable of retaining and storing instructions for use by an instruction execution device. The computer-readable storage medium may be, by way of example only, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a suitable combination thereof. More specific examples of computer-readable storage media include portable computer diskettes, hard disks, RAM, ROM, EPROM (or flash memory), SRAM, CD-ROMs, DVDs, memory sticks, floppy disks, mechanically encoded devices having instructions recorded thereon, such as punch cards or ridge-in-groove structures, and suitable combinations thereof. As used herein, a computer-readable storage medium should not be construed as a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses passing through a fiber optic cable), or an electrical signal transmitted over a wire.

[0094] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, a wireless network, or a combination thereof). The network may be comprised of copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, edge servers, or a combination thereof. A network adapter card or network interface of each computing / processing device receives the computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.

[0095] Computer-readable program instructions for carrying out the operations of the present disclosure may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object-oriented programming languages ​​such as Smalltalk, C++, etc., and procedural programming languages ​​such as the "C" programming language and similar programming languages. The computer-readable program instructions may be executable entirely on the user's computer, as a standalone software package, partially on the user's computer, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) can execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize them in order to carry out aspects of the present disclosure.

[0096] Aspects of the present disclosure are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the present disclosure. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.

[0097] These computer-readable program instructions can be provided to a processor of a computer or other programmable data processing apparatus to create a machine, such that the instructions, executed by the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions can also be stored in a computer-readable storage medium connectable to a computer, programmable data processing apparatus, or other device, or combination thereof, that functions in a particular way, such that the computer-readable storage medium on which the instructions are stored constitutes one of several products including instructions that implement aspects of the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams.

[0098] Computer-readable program instructions, such as instructions to perform the functions / acts specified in one or more blocks of the flowcharts and / or block diagrams on a computer, other programmable apparatus, or other device, can also be loaded into a computer, other programmable data processing apparatus, or other device to perform a series of operational steps on the computer, other programmable apparatus, or other device to produce a computer-implemented process.

[0099] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of executable implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, which constitute one or more executable instructions for implementing the specified logical function(s). In some alternative embodiments, the functions shown in the blocks may occur out of the order shown in the figures. For example, two blocks shown in succession may actually be accomplished as a single step, executed concurrently, substantially concurrently, partially, or fully in a time-overlapping manner, or the blocks may be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, can be implemented by a special-purpose hardware-based system that performs the specified functions or operations or executes a combination of special-purpose hardware and computer instructions.

[0100] The terminology used herein is for the purpose of describing particular embodiments only and is not intended to limit various embodiments. As used herein, the singular forms "a," "an," and "the" are intended to include the plural unless the context clearly dictates otherwise. As used herein, the terms "includes" and / or "inducing" identify the presence of stated features, integers, steps, operations, elements, or components, or combinations thereof, but do not exclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or groups or combinations thereof. In the preceding detailed description of exemplary embodiments of various embodiments, reference has been made to the accompanying drawings, in which like numerals represent like elements, which form a part hereof, and in which specific exemplary embodiments in which the various embodiments may be practiced are shown. These embodiments have been described in sufficient detail to enable those skilled in the art to practice the embodiments, but other embodiments may be utilized, and logical, mechanical, electrical, and other changes may be made without departing from the scope of the various embodiments. In the previous description, numerous specific details have been set forth to provide a thorough understanding of various embodiments. However, various embodiments may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail so as not to obscure the embodiments.

[0101] Where different reference numbers consist of a common number followed by a different letter (e.g., 100a, 100b, 100c) or a punctuation mark followed by a different number (e.g., 100-1, 100-2, or 100.1, 100.2), the use of the reference letter alone without the letter or subsequent number (e.g., 100) may refer to the group of elements as a whole, any subset of the group, or an illustrative specimen of the group.

[0102] Furthermore, the phrase "at least one," when used in conjunction with a list of items, means that one or more different combinations of the listed items may be used, and only one of each item in the list may be required. In other words, "at least one" means that any combination and number of items from the list may be used, but not all items in the list are required. An item may be a specific thing, event, or category.

[0103] For example, without limitation, "at least one of item A, item B, or item C" can include item A, item A and item B, or item B. This example also includes item A, item B, item C, or items B and C. Of course, any combination of these items can be present. In some illustrative examples, "at least one" can be, for example, without limitation, two of item A, one of item B, and ten of item C, four of item B and seven of item C, or other suitable combinations.

[0104] Different uses of the word "embodiment" as used herein do not necessarily refer to the same embodiment, although they may. All data and data structures shown or described herein are exemplary, and other embodiments may use different amounts of data, types of data, fields, numbers and types of fields, field names, numbers and types of rows, records, entries, or organizations of data. Furthermore, any data may be combined with logic, so that a separate data structure may not be necessary. Therefore, the foregoing detailed description is not to be taken in a limiting sense.

[0105] The description of various embodiments of the present disclosure is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. It will be apparent to those skilled in the art that many modifications and variations are possible without departing from the scope of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications or technical improvements to technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

[0106] While the present disclosure has been described in terms of specific embodiments, it is expected that variations and modifications thereof will become apparent to those skilled in the art. It is therefore intended that the following claims be interpreted as covering all such variations and modifications as fall within the scope of the present disclosure.

[0107] The description of various embodiments of the present disclosure is presented for illustrative purposes, but is not intended to be exhaustive or limited to the disclosed embodiments. It will be apparent to those skilled in the art that many modifications and variations are possible without departing from the scope of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications or technical improvements to technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein.

Claims

1. 1. A computer-implemented method for server provisioning and deployment, the computer-implemented method comprising: receiving, by a provisioner, a deployment configuration for a server, the deployment configuration including a requested software build, an installation of requested applications, and a configuration of the server; reconfiguring hardware on the server based on the deployment configuration via an out-of-band management card on the server; pushing a boot loader containing files for installing an operating system and the application to the server; installing the operating system on the server via the boot loader; sending an auto-configuration file to the server, the auto-configuration file providing installation properties for the application; monitoring the status of the server during the installation of the application using a serial terminal output on the server; 11. A computer-implemented method comprising:

2. Reconfiguring the hardware on the server includes: configuring the server via an out-of-band terminal to launch a pre-boot execution environment (PXE) on at least one available network interface card (NIC) on the server; synchronizing terminal speeds of serial terminals on said server; rebooting the server to complete the configuration; receiving a Dynamic Host Configuration Protocol (DHCP) offer packet from the server; providing the server with an Internet Protocol (IP) address and informing the server of an associated Media Access Control (MAC) address; The computer-implemented method of claim 1 , comprising:

3. Pushing the boot loader generating a boot loader configuration file, the boot loader configuration file including installation options and source software versions for the boot loader based on the deployment configuration; sending an acknowledgement packet to a file transfer server containing the boot loader source file; transmitting the source file and the boot loader configuration file to the server via the link to the file transfer server for installation; The computer-implemented method of claim 1 , comprising:

4. Installing the operating system includes: receiving a request from the server for a file associated with the operating system; sending the file to the server, the file including a full set of options for the application and callback links for additional files associated with the operating system; partitioning a storage disk on said server into at least a primary partition and a recovery partition; performing the installation of the operating system on the primary partition of the storage disk; installing recovery files on the recovery partition of the storage disk; installing additional files on the server to allow the remainder of the installation to be performed offline via the recovery file; analyzing information generated by the server to monitor installation of the operating system; The computer-implemented method of claim 1 , comprising:

5. The computer-implemented method of claim 1 , wherein communication with the server occurs over a Secure Shell (SSH) tunnel.

6. The computer-implemented method of claim 1 , wherein the provisioner is configured to translate vendor-specific commands provided by the server while configuring the server and installing the application.

7. The computer-implemented method of claim 1 , wherein the provisioner is agentless.

8. The computer-implemented method of claim 1 , wherein the provisioner scales based on a mapped universally unique identifier (UUID) associated with the server.

9. 1. A computer program for server provisioning and deployment, the computer program, when executed by at least one computer, causing the at least one computer to: receiving a deployment configuration for a server, the deployment configuration including a requested software build, an installation of requested applications, and a configuration of the server; reconfiguring hardware on the server based on the deployment configuration via an out-of-band management card on the server; pushing a boot loader containing files for installing an operating system and the application to the server; installing the operating system on the server via the boot loader; sending an auto-configuration file to the server, the auto-configuration file providing installation properties for the application; monitoring the status of the server during the installation of the application using a serial terminal output; A computer program that executes instructions to perform the following:

10. Reconfiguring the hardware on the server includes: configuring the server via an out-of-band terminal to launch a pre-boot execution environment (PXE) on at least one available network interface card (NIC) on the server; synchronizing terminal speeds of serial terminals on said server; rebooting the server to complete the configuration; receiving a Dynamic Host Configuration Protocol (DHCP) offer packet from the server; providing the server with an Internet Protocol (IP) address and informing the server of an associated Media Access Control (MAC) address; 10. The computer program of claim 9, comprising:

11. Pushing the boot loader generating a boot loader configuration file, the boot loader configuration file including installation options and source software versions for the boot loader based on the deployment configuration; sending an acknowledgement packet to a file transfer server containing the boot loader source file; transmitting the source file and the boot loader configuration file to the server via the link to the file transfer server for installation; 10. The computer program of claim 9, comprising:

12. Installing the operating system includes: receiving a request from the server for a file associated with the operating system; sending the file to the server, the file including a full set of options for the application and callback links for additional files associated with the operating system; partitioning a storage disk on said server into at least a primary partition and a recovery partition; performing the installation of the operating system on the primary partition of the storage disk; installing recovery files on the recovery partition of the storage disk; installing additional files on the server to allow the remainder of the installation to be performed offline via the recovery file; analyzing information generated by the server to monitor installation of the operating system; 10. The computer program of claim 9, comprising:

13. The computer program product of claim 9 , wherein communication with the server occurs via a Secure Shell (SSH) tunnel.

14. The deployment configuration is received by a provisioner; 10. The computer program product of claim 9, wherein the provisioner is configured to translate vendor-specific commands provided by the server while configuring the server and installing the application.

15. The deployment configuration is received by a provisioner; The computer program product of claim 9 , wherein the provisioner is agentless.

16. The deployment configuration is received by a provisioner; The computer program product of claim 9 , wherein the provisioner scales based on a mapped universally unique identifier (UUID) associated with the server.

17. 1. A system for threat similarity analysis for automated action on security alerts, the system comprising: Memory and a processor; a local data storage device having stored thereon computer executable code, the computer executable code comprising program instructions executable by a processor to cause the processor to perform a method, the method comprising: receiving a deployment configuration for a server, the deployment configuration including a requested software build, an installation of requested applications, and a configuration of the server; reconfiguring hardware on the server based on the deployment configuration via an out-of-band management card on the server; pushing a boot loader containing files for installing an operating system and the application to the server; installing the operating system on the server via the boot loader; sending an auto-configuration file to the server, the auto-configuration file providing installation properties for the application; monitoring the status of the server during the installation of the application using a serial terminal output on the server; Including, the system.

18. Reconfiguring the hardware on the server includes: configuring the server via an out-of-band terminal to launch a pre-boot execution environment (PXE) on at least one available network interface card (NIC) on the server; synchronizing terminal speeds of serial terminals on said server; rebooting the server to complete the configuration; receiving a Dynamic Host Configuration Protocol (DHCP) offer packet from the server; providing the server with an Internet Protocol (IP) address and informing the server of an associated Media Access Control (MAC) address; 20. The system of claim 17, comprising:

19. Pushing the boot loader generating a boot loader configuration file, the boot loader configuration file including installation options and source software versions for the boot loader based on the deployment configuration; sending an acknowledgement packet to a file transfer server containing the boot loader source file; transmitting the source file and the boot loader configuration file to the server via the link to the file transfer server for installation; 20. The system of claim 17, comprising:

20. Installing the operating system includes: receiving a request from the server for a file associated with the operating system; sending the file to the server, the file including a full set of options for the application and callback links for additional files associated with the operating system; partitioning a storage disk on said server into at least a primary partition and a recovery partition; performing the installation of the operating system on the primary partition of the storage disk; installing recovery files on the recovery partition of the storage disk; installing additional files on the server to allow the remainder of the installation to be performed offline via the recovery file; analyzing information generated by the server to monitor installation of the operating system; 20. The system of claim 17, comprising:

Citation Information

Patent Citations

  • Software installation method for site server and site server

    CN105573776A

  • Automatic Windows system environment deploying method and system

    CN106708515A

  • Software installation method of computer and installation server

    JP2020135190A

  • Techniques to configure multi-mode storage devices in remote provisioning environments

    US20170147361A1

  • Method for System Debug and Firmware Update of a Headless Server

    US20170293520A1