Patent Description:
Existing systems and methods of installing software updates on computing devices connected to a network, are based on a publisher of the software pushing the updated software files to the computing devices over the network. Then the updated software is installed on the computing devices in accordance with instructions obtained from the publisher.

What is needed is a technology to solve the problem of maintaining application containers with complex installs across a network of cloud vendors and regions. What is needed is to enable online services that rely on cloud-based ephemeral machine instances to keep their catalog of machine images up to date automatically, which has benefits for security and engineering efficiency. It is critical to keep online software up to date with the latest security patches from all software vendors.

<CIT> discloses methods, systems, and apparatus, including medium-encoded computer program products, for installing software include receiving a request to install a software product on a device and identifying the software product and the source of the software product based on the request. A message, which includes data identifying the software product and the source of the software product, is transmitted to a remote update device. An authorization message is received from the remote update device indicating whether the source of the software product is authorized to provide the software product. If the authorization message indicates that the source of the software product is authorized to provide the software product, the software product is automatically installed on the device.

<CIT> discloses systems, methods and media for updating device drivers of an operating system for a server computer system. Embodiments include a method for updating device drivers for a server computer system by a build server. Further embodiments of the method include determining whether device drivers for an operating system image source need to be updated, such as by crawling a vendor website. Further embodiments also include in response to determining that device driver updates need to be downloaded, scheduling a time for download of device driver updates. Embodiments of the method also include downloading the scheduled device driver updates based on the scheduled time and storing the device driver updates in a device driver update database. Further embodiments of the method include installing the operating system image source on a target server and installing the device driver updates on the target server.

<CIT> discloses a system and method of deploying applications to networked computing environments. Application packages and installation instructions are received by a deployment manager. The installation instructions include test instructions. Application packages are distributed in response to requests by developers and installation instructions executed on a target computing environment. Failure of an installation test provides an indication of issues with the application in the target environment. Records of failures received are stored for use by application developers.

Example embodiments of the invention solve the problem of maintaining and updating application containers with complex installs across cloud vendors and regions.

In an example embodiment of the invention, a distributed system manages machine images on a plurality of distributed servers over a computer network. A service processor generates installation instructions for building a machine image on a remote server, the machine image comprising at least one component, the installation instructions including instructions for the remote server to access over a network the at least one component from a source of the at least one component. The service processor transmits to a plurality of distributed ones of the remote server, over a computer network, the installation for building the machine image.

A reactive management processor coupled to the service processor, accesses the source of the at least one component, to detect whether an update of the at least one component exists, and to notify the service processor of existence of the detected update.

The service processor generates revised installation instructions for building a revised machine image on the remote server in response to the service processor receiving the notification of the update from the reactive management processor, the revised installation instructions including instructions for the remote server to access over the network the update of the at least one component from the source of the at least one component. The service processor transmits to the plurality of distributed ones of the remote server, over the computer network, a global rebuild command and the revised installation instructions for rebuilding the revised machine image.

The global rebuild command is transmitted by the service processor in response to at least one of a change to the installation instructions, a change to an installed software component, a changes to a library used, or a change to a base operating system patch status.

The global rebuild command is transmitted by the service processor in response to at least one of a change to the installation instructions, a change to an installed software component, a change to a library used, or a change to a base operating system patch status.

The source of the at least one component may be a publisher of software components or a storage device storing software components.

The service processor may further be configured to generate instructions for automatic functional tests to be performed on the machine image after having been built on the remote server, the instructions for functional tests being transmitted with the installation instructions to the plurality of distributed ones of the remote server, over the computer network.

The service processor may further be configured to generate revised instructions for automatic functional tests to be performed on the revised machine image after having been rebuilt on the remote server, the revised instructions for functional tests being transmitted with the revised installation instructions to the plurality of distributed ones of the remote server, over the computer network.

A machine image builder software may execute the installation instructions for building the machine image on the remote server, for each of the plurality of distributed ones of the remote server in the computer network.

The example embodiments of the invention harness network architecture and exploit it by utilizing a non-conventional and non-generic arrangement of components to manage machine images on a plurality of distributed servers over a computer network, to maintain and update application containers with complex installs across a network of cloud-based vendors and regions.

Example embodiments of the invention solve the problem of maintaining application containers with complex installs across a network of distributed cloud-based vendors and regions. Example embodiments of the invention enable online services that rely on cloud-based ephemeral machine instances to keep their catalog of machine images up to date automatically, to keep online software up to date with the latest security patches from all software vendors.

<FIG> illustrates an example embodiment of the invention, showing a distributed system including a machine image builder service processor <NUM> and a plurality of distributed vendor cloud servers <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>) in a computer network (e.g., Internet) <NUM>. The service processor <NUM> is configured to generate installation instructions to build a machine image on the distributed servers and to generate automatic functional tests to be performed on the machine image after having been built on the distributed servers. A reactive management processor <NUM> is coupled to the service processor <NUM> and they may run on the same machine. The reactive management processor <NUM> is configured to access a source of at least one component of the machine image, to detect whether an update of the at least one component exists, and to notify the service processor <NUM> of the existence of the detected update. The service processor <NUM> is configured to generate revised instructions to rebuild the machine image built on the distributed servers <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>) and to distribute a global rebuild command to the distributed servers, in response to the detection of an update by the reactive management processor <NUM>.

<FIG> illustrates an example embodiment of the invention, showing the service processor <NUM> having generated the installation instructions in step <NUM> as a recipe script <NUM> to build a machine image on the distributed servers <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>).

The service processor <NUM> sends the recipe script <NUM> to each vendor cloud server in step <NUM>.

An example of the recipe script <NUM> may include the following instructions:.

An example of the script instruction [<NUM>] to get the first component from the first supplier's internet URL and install, is shown in Table A:
<IMG>.

The service processor <NUM> is further configured to generate instructions for automatic functional tests to be performed on the machine image after having been built on each remote server <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>), the instructions for functional tests being transmitted with the installation instructions script <NUM> to the plurality of distributed ones <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>) of the remote server, over the computer network <NUM>.

An example of the script instruction for automatic functional tests of the completed machine image on the server <NUM>(<NUM>), is shown in Table B:
<IMG>.

The service processor <NUM> also sends a list of target cloud vendors and a set of region targets for each, to each vendor cloud server in step <NUM>.

The service processor <NUM> includes a processor <NUM> comprising a dual central processor unit (CPU) or multi-CPU <NUM>/<NUM>', a random access memory (RAM) <NUM> and read only memory (ROM) <NUM>. The memories <NUM> and/or <NUM> include computer program code to carry out the functions of the service processor <NUM>. A transmitter/receiver TX/RX <NUM> enables communication with the computer network <NUM>.

<FIG> illustrates an example embodiment of the invention, showing a distributed server <NUM>(<NUM>) in the computer network <NUM>, having received the installation instructions in the script <NUM> to build a machine image on the server. The distributed server <NUM>(<NUM>) receives the recipe script for building a virtual machine with remote access and functional tests in step <NUM>. The distributed server <NUM>(<NUM>) runs the recipe script <NUM> in step <NUM>. The distributed server <NUM>(<NUM>) accesses components identified in the script <NUM>, from the respective suppliers <NUM> of the components via their respective internet URLs. The suppliers <NUM> may be publishers of software components. The distributed server <NUM>(<NUM>) may also access components identified in the script <NUM>, from a storage device <NUM> storing software components. The accessed components are then installed on the distributed server <NUM>(<NUM>) by the machine image builder. The machine image builder software executes the installation instructions in the script <NUM> for building the machine image on the distributed server <NUM>(<NUM>), for each of the plurality of distributed ones <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>) of the remote server in the computer network <NUM>. The installed machine image may then be stored in the library <NUM>.

The distributed server <NUM>(<NUM>) includes a processor <NUM> comprising a dual central processor unit (CPU) or multi-CPU <NUM>/<NUM>', a random access memory (RAM) <NUM> and read only memory (ROM) <NUM>. The memories <NUM> and/or <NUM> include computer program code to carry out the functions of the distributed server <NUM>(<NUM>). A transmitter/receiver TX/RX <NUM> enables communication with the component suppliers over the computer network <NUM>, and communication with the file storage <NUM> and the library <NUM>.

<FIG> illustrates an example embodiment of the invention, showing a schematic figure of the components of the machine image and their installation by the machine image builder on the distributed server <NUM>(<NUM>), based on the received installation instructions in the script <NUM>. An example of the components of the machine image is:.

Windows 2008R2 + SQL Server + JDK1. <NUM> + DYNSIM <NUM>. <NUM> + Software Agent.

The example machine image <NUM> is created on the base operating system of the distributed server <NUM>(<NUM>), with the example of the components and their dependencies. The Image Source machine image <NUM> includes information for the software, target list <NUM> and base image <NUM>.

<FIG> illustrates an example embodiment of the invention, showing the reactive management processor <NUM> including a database of component suppliers <NUM>. The reactive management processor <NUM> is shown accessing at <NUM>, the Internet URL of a component supplier <NUM> source of at least one component of the machine image. The reactive management processor <NUM> is shown detecting at <NUM>, that there has been an update of the at least one component. The reactive management processor <NUM> is shown notifying at <NUM>, the service processor <NUM> of the existence of the detected update.

The reactive management processor <NUM> includes a processor <NUM> comprising a dual central processor unit (CPU) or multi-CPU <NUM>, a random access memory (RAM) <NUM> and read only memory (ROM) <NUM>. The memories <NUM> and/or <NUM> include computer program code to carry out the functions of the reactive management processor <NUM>. A transmitter/receiver TX/RX <NUM> enables communication with the component suppliers over the computer network <NUM>, and communication with the file storage <NUM>.

The service processor <NUM> is shown receiving the identity of the updated component from the supplier at step <NUM>'. The service processor <NUM> is shown generating revised instructions script <NUM>' at step <NUM>', to rebuild the machine image built on the distributed servers <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>). The service processor <NUM> is shown distributing a global rebuild command at step <NUM>', to the distributed servers <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>), in response to the detection of the update by the reactive management processor <NUM>.

<FIG> illustrates an example embodiment of the invention, showing the distributed server <NUM>(<NUM>) in the computer network <NUM>, receiving the trigger for global rebuild with the revised recipe script <NUM>' at step <NUM>'. The distributed server <NUM>(<NUM>) receives the revised installation instructions script <NUM>' to rebuild a revised machine image on the server <NUM>(<NUM>) at step <NUM>'. The distributed server <NUM>(<NUM>) runs the revised recipe script <NUM>' at step <NUM>' to rebuild a revised machine image on the server. The distributed server <NUM> accesses components identified in the script <NUM>', from the respective suppliers <NUM> of the components via their respective internet URLs. The suppliers <NUM> may be publishers of software components. The distributed server <NUM> may also access components identified in the script <NUM>', from the storage device <NUM> storing software components. The accessed components are then installed on the distributed server <NUM>(<NUM>) by the machine image builder. The machine image builder software executes the revised installation instructions in the script <NUM>' for rebuilding the machine image on the distributed server <NUM>(<NUM>), for each of the plurality of distributed ones <NUM>(<NUM>), <NUM>(<NUM>), and <NUM>(<NUM>) of the remote server in the computer network <NUM>. The installed revised machine image may then be stored in the library <NUM>.

<FIG> illustrates an example embodiment of the invention, showing a more detailed depiction of the reactive management processor <NUM> accessing several supplier sources <NUM>(<NUM>), <NUM>(<NUM>), to <NUM>(I), of components of the machine image <NUM> and searching the suppliers' directories <NUM>(<NUM>), <NUM>(<NUM>), to <NUM>(I), for the existence of any updates of the components. The reactive management processor is shown notifying the service processor <NUM> of the existence detected updates. In an alternate embodiment, the component suppliers may provide a push-notification of the existence of updates, to the reactive management processor.

The memory <NUM> of the reactive management processor <NUM> stores programmed instructions configured to access the supplier sources <NUM>(<NUM>), <NUM>(<NUM>), to <NUM>(I), and search the suppliers' directories <NUM>(<NUM>), <NUM>(<NUM>), to <NUM>(I), for the existence of any updates of the components of the machine image <NUM>. An example sequence of instructions may begin with Instruction <NUM> to access a data base of component suppliers <NUM>. This may follow with Instruction <NUM> to index through "I" suppliers. This may follow with Instruction <NUM> to begin a loop by accessing a directory of supplier "i" <NUM>. This may follow with Instruction <NUM>, for component "i", to compare an existing file name with a file name in the directory. This may follow with Instruction <NUM>, for component "i", to compare an existing time stamp with a time stamp in directory. This may follow with Instruction <NUM> to determine if the file name or the time stamp is changed, then identify the file as updated. This may follow with Instruction <NUM> to identify the update of component "i" from supplier "i" for rebuild <NUM>. This may follow with Instruction <NUM> to increase the index for component suppliers by one and then loop back to Instruction <NUM> to continue the loop for "I" suppliers.

The reactive management processor <NUM> is shown accessing at Instruction <NUM>, the Internet URL of a, "i"th component supplier <NUM>(i) of a component (i) of the machine image. The reactive management processor <NUM> is shown detecting at Instruction <NUM>, that there has been an update of the "i"th component. The reactive management processor <NUM> is shown notifying at Instruction <NUM>, the service processor <NUM> of the existence of the detected update. The service processor <NUM> is shown receiving the identity of the updated component from the reactive management processor <NUM>.

The reactive management processor <NUM> attempts to look at the URL structure of the suppliers' directories. For example, if an SQL install is at the URL https://download. com/download/c/<NUM>/<NUM>/<NUM>/SQLEXPR_x64_ENU. exe
the reactive management processor <NUM> will find the partial URL
https://download. com/download/c/<NUM>/<NUM>/<NUM>/. automatically.

For files that are not in a numbered path structure, for example, the user's own file:
s3://m6remotefolder/Dynsim53_BETA_InstallKit1. zip
will be updated by simply replacing that file.

The reactive management processor <NUM> looks for updated timestamps on that file. The reactive management processor <NUM> remembers the existing file timestamp and identifies updates.

It is possible for the recipe script <NUM>' to use authorized downloads of the installers, although this is not very common. The credentials may be stored in a separate credential store, not explicitly in the recipe script <NUM>'. The encrypted credential store may be pushed to the vendor cloud server <NUM>(<NUM>) with the recipe script <NUM>' and decrypted on the fly using a one-time key. Software licenses may be handled in a similar fashion, with the license files downloaded by the vendor cloud server <NUM>(<NUM>) from a separate authorized source.

<FIG> is a flow diagram <NUM> of an example programmed method executed by the system of <FIG>, to generate revised instructions to rebuild the machine image built on the distributed servers and to distribute a global rebuild command to the distributed servers, in response to the detection of an update by the reactive management processor.

The steps of the flow diagram represent computer code instructions stored in the RAM and/or ROM memory, which when executed by the central processing units (CPU), carry out the functions of the example embodiments of the invention. The steps may be carried out in another order than shown and individual steps may be combined or separated into component steps. The flow diagram has the following steps:.

At step <NUM>, the service processor (e.g., <NUM> in <FIG>) generates installation instructions for building a machine image on a remote server (e.g., <NUM>(<NUM>) in <FIG>), the machine image comprising at least one component, the installation instructions including instructions for the remote server to access over a network the at least one component from a source (e.g., <NUM> in <FIG>) of the at least one component.

At step <NUM>, the service processor transmits to a plurality of distributed ones of the remote server, over a computer network (e.g., the Internet), the installation instructions for building the machine image.

At step <NUM>, the reactive management processor (e.g., <NUM> in <FIG>) accesses the source of the at least one component, to detect whether an update of the at least one component exists, and to notify the service processor of existence of the detected update.

At step <NUM>, the service processor generates revised installation instructions for building a revised machine image on the remote server in response to the service processor receiving the notification of the update from the reactive management processor <NUM>, the revised installation instructions including instructions for the remote server to access over the network the update of the at least one component from the source of the at least one component.

At step <NUM>, the service processor transmits to the plurality of distributed ones of the remote server, over the computer network, a global rebuild command and the revised installation instructions for rebuilding the revised machine image.

Although specific example embodiments of the invention have been disclosed, persons of skill in the art will appreciate that changes may be made to the details described for the specific example embodiments. The scope is defined by the independent claims.

Claim 1:
Distributed system for managing machine images on a plurality of distributed servers (<NUM>) over a computer network (<NUM>), said system comprising:
a service processor (<NUM>) configured to generate installation instructions for building a machine image on a remote server, the machine image comprising at least one component, the installation instructions including instructions for the remote server to access over a network the at least one component from a source of the at least one component;
the service processor (<NUM>) transmitting to a plurality of distributed remote servers (<NUM>), over a computer network (<NUM>), the installation instructions for building the machine image;
characterized by
a reactive management processor (<NUM>) coupled to the service processor (<NUM>), configured to access the source of the at least one component, to detect whether an update of the at least one component exists, and to notify the service processor (<NUM>) of existence of the detected update;
the service processor (<NUM>) further configured to generate revised installation instructions for building a revised machine image on the remote server in response to the service processor (<NUM>) receiving the notification of the update from the reactive management processor (<NUM>), the revised installation instructions including instructions for the remote server to access over the network (<NUM>) the update of the at least one component from the source of the at least one component; and
the service processor (<NUM>) transmitting to the plurality of distributed remote servers (<NUM>), over the computer network (<NUM>), a global rebuild command and the revised installation instructions for rebuilding the revised machine image,
wherein the global rebuild command is transmitted by the service processor (<NUM>) in response to at least one of a change to the installation instructions, a change to an installed software component, a change to a library used, or a change to a base operating system patch status.