Cloud Infrastructure Management

An interoperable system converts user interactions into configuration commands, integrating with source control management, enabling efficient, automated cloud infrastructure management without software engineering expertise.

JP2025520602AActive Publication Date: 2025-07-03GOOGLE LLC
View PDF 3 Cites 0 Cited by

Patent Information

Application Number
JP2024574754
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-12-12
Filing Date
2023-06-19
Publication Date
2025-07-03
Estimated Expiration
2043-06-19

AI Technical Summary

Technical Problem

Existing cloud infrastructure management systems require manual click operations, which are inefficient for large-scale automation and often necessitate costly investments in software engineering teams to implement Infrastructure as Code (IaC).

Method used

An interoperable system that converts user interactions from graphical user interfaces into configuration commands, integrating with source control management systems for version management and approval functions, enabling 'code-free' cloud infrastructure management.

Benefits of technology

Facilitates efficient, automated cloud infrastructure management without the need for software engineering expertise, allowing users to manage and provision resources seamlessly through a graphical interface.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025520602000001_ABST
    Figure 2025520602000001_ABST
Patent Text Reader

Abstract

A method (500) for managing a cloud infrastructure (50) includes receiving, from a user (12) of a user device (10), a cloud infrastructure modification request (20) requesting a modification of the cloud infrastructure. The cloud infrastructure modification request includes abstract configuration data (22) derived from a user interaction (24) with a graphical user interface (GUI) (14) executed on the user device. The method includes converting the abstract configuration data into a configuration command (210). The configuration command describes the configuration of the cloud infrastructure. The method includes updating a configuration file (152) using the configuration command. The method includes provisioning the cloud infrastructure using the updated configuration file (152U).
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] This disclosure relates to cloud infrastructure management.

Background Art

[0002] With infrastructure as code (IaC), developers or operations teams can automatically manage, monitor, and provision resources instead of manually configuring cloud resources. Infrastructure as code may be referred to as programmable infrastructure or software-defined infrastructure. Configuration state / manifest files are stored in source control management (SCM) such as Gitlab, versioned, and may be referred to as Git operations (i.e., GitOps). Conventional user interfaces (UIs) for cloud infrastructure management typically enable developers or operations teams to manually manage, monitor, and configure cloud resources with click operations, which may be referred to as ClickOps. These click operations and UIs are effective ways to manually manage cloud resources.

Summary of the Invention

[0003] One aspect of the present disclosure provides a computer-implemented method executed by data processing hardware to cause the data processing hardware to perform operations for managing a cloud infrastructure. The operations include receiving, from a user of a user device, a cloud infrastructure modification request requesting a modification of the cloud infrastructure executed on the data processing hardware. The cloud infrastructure modification request includes abstract configuration data derived from a user interaction with a graphical user interface (GUI). The operations include converting the abstract configuration data into a configuration command. The configuration command describes the configuration of the cloud infrastructure. The operations include updating a configuration file using the configuration command. The operations include provisioning the cloud infrastructure using the updated configuration file.

[0004] Embodiments of the present disclosure may include one or more of the following optional features. In some embodiments, the operation further includes generating an approval request that requests approval from a second user of the second user device for an update to the configuration file after updating the configuration file using a configuration command, and receiving, from the second user device, an approval response approving the update to the configuration file before provisioning the cloud infrastructure. In some of these embodiments, the operation further includes receiving, from a user of the user device, a second cloud infrastructure modification request that requests a modification to the cloud infrastructure, the second cloud infrastructure modification request including second abstract configuration data derived from a second user interaction using a GUI executed on the user device, converting the second abstract configuration data into a second configuration command, updating the configuration file using the second configuration command, generating a second approval request that requests approval from a second user of the second user device for an update to the configuration file, receiving, from the second user device, a rejection response rejecting the update to the configuration file, and sending a notification including the rejection response to the user device. In some of these embodiments, the operation further includes receiving, from a user of the user device, a second cloud infrastructure modification request that requests a modification to the cloud infrastructure, the second cloud infrastructure modification request including second abstract configuration data derived from a second user interaction using a GUI executed on the user device, converting the second abstract configuration data into a second configuration command, determining a merge conflict between the second configuration command and existing configuration commands of the configuration file, and sending a notification including the merge conflict to the user device. In some of these embodiments, the approval request includes the difference between the configuration file before the update and the configuration file after the update.

[0005] In some embodiments, the operation further includes obtaining a configuration file from a source control management system before updating the configuration file using a configuration command. In some of these embodiments, updating the configuration file includes merging the configuration command with the configuration file using the source control management system.

[0006] Optionally, after provisioning the cloud infrastructure, the operation further includes receiving an updated configuration command from a second user of a second user device, updating the configuration file using the updated configuration command, provisioning the cloud infrastructure using the configuration file, and sending a GUI update command to the user device. The GUI update command, when executed by the user device, causes the user device to display a visual element representing the updated configuration command on a GUI executed on the user device. In some of these embodiments, the updated configuration command is derived from updates made by the second user to a copy of the configuration file stored on the second user device. The configuration file may include infrastructure as code (IaC). In some embodiments, the GUI is executed on the user device. Optionally, the configuration file includes one or more cloud infrastructure specifications of the cloud infrastructure and is controlled by the source control management system.

[0007] Another aspect of the present disclosure provides a system for managing a cloud infrastructure. The system includes data processing hardware and memory hardware that communicates with the data processing hardware. The memory hardware stores instructions that, when executed on the data processing hardware, cause the data processing hardware to perform operations. The operations include receiving, from a user of a user device, a cloud infrastructure modification request that requests a modification of the cloud infrastructure to be executed on the data processing hardware. The cloud infrastructure modification request includes abstract configuration data derived from a user interaction with a graphical user interface (GUI). The operations include converting the abstract configuration data into a configuration command. The configuration command describes the configuration of the cloud infrastructure. The operations include updating a configuration file with the configuration command. The operations include provisioning the cloud infrastructure using the updated configuration file.

[0008] This aspect may include one or more of the following optional features. In some embodiments, the operation further includes generating an approval request that requests approval from a second user of a second user device for an update to a configuration file after updating the configuration file using a configuration command, and receiving, from the second user device, an approval response approving the update to the configuration file before provisioning the cloud infrastructure. In some of these embodiments, the operation further includes receiving, from a user of the user device, a second cloud infrastructure modification request that requests a modification of the cloud infrastructure, the second cloud infrastructure modification request including second abstract configuration data derived from a second user interaction using a GUI executed on the user device, converting the second abstract configuration data into a second configuration command, updating the configuration file using the second configuration command, generating a second approval request that requests approval from a second user of the second user device for the update to the configuration file, receiving, from the second user device, a rejection response rejecting the update to the configuration file, and sending a notification including the rejection response to the user device. In some of these embodiments, the operation further includes receiving, from a user of the user device, a second cloud infrastructure modification request that requests a modification of the cloud infrastructure, the second cloud infrastructure modification request including second abstract configuration data derived from a second user interaction using a GUI executed on the user device, converting the second abstract configuration data into a second configuration command, determining a merge conflict between the second configuration command and an existing configuration command of the configuration file, and sending a notification including the merge conflict to the user device. In some of these embodiments, the approval request includes the difference between the configuration file before the update and the configuration file after the update.

[0009] In some embodiments, the operation further includes obtaining a configuration file from a source control management system before updating the configuration file with a configuration command. In some of these embodiments, updating the configuration file includes merging the configuration command with the configuration file using the source control management system.

[0010] Optionally, after provisioning the cloud infrastructure, the operation further includes receiving an updated configuration command from a second user of a second user device, updating the configuration file with the updated configuration command, provisioning the cloud infrastructure using the configuration file, and sending a GUI update command to the user device. The GUI update command, when executed by the user device, causes the user device to display a visual element representing the updated configuration command on a GUI executed on the user device. In some of these embodiments, the updated configuration command is derived from updates made by the second user to a copy of the configuration file stored on the second user device. The configuration file may include infrastructure as code (IaC). In some embodiments, the GUI is executed on the user device. Optionally, the configuration file includes one or more cloud infrastructure specifications of the cloud infrastructure and is controlled by the source control management system.

[0011] Details of one or more embodiments of the present disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims.

Brief Description of the Drawings

[0012]

Figure 1

Figure 2

Figure 3

Figure 4A

Figure 4B

Figure 4C

Figure 5

Figure 6

Best Mode for Carrying Out the Invention

[0013] Similar reference symbols in the various drawings indicate similar elements.

[0014] With Infrastructure as code (IaC), developers or operations teams can automatically manage, monitor, and provision resources instead of manually configuring cloud resources. Infrastructure as code may be referred to as programmable infrastructure or software-defined infrastructure. Configuration state / manifest files are stored in source control management (SCM) such as Gitlab, versioned, and sometimes called Git operations (i.e., GitOps). Traditional user interfaces (UIs) for cloud infrastructure management typically enable developers or operations teams to manually manage, monitor, and provision cloud resources, which can be referred to as click operations (i.e., ClickOps). These click operations and UIs are effective ways to manually manage cloud resources. However, for large-scale management of cloud resources and automation of the deployment process, IaC is generally more desirable and thus commonly practiced in the modern software industry. Conventionally, IaC and UI have been two different tracks and are not interoperable. Therefore, to achieve IaC, customers usually need to invest in software engineering teams to implement IaC using technology, which is expensive and time-consuming.

[0015] Embodiments of this specification include a system that provides an interoperable model between ClickOps and GitOps. This system also provides a mechanism for a client or customer to achieve Infrastructure as Code (IaC) without investing in a software engineering team. The system receives user interactions from a graphical user interface (GUI) executed on a user device and converts user actions into configuration commands. The system generates or updates a configuration file that includes the configuration commands and uses the configuration file to provision or deploy a cloud infrastructure. The system interfaces with a source control management system (SCMS) to provide a robust approval function and version management function without the user having to directly interact with the configuration file.

[0016] Referring to FIG. 1, in some embodiments, a system 100 for managing a cloud infrastructure 50 includes a remote system 140 that communicates with one or more user devices 10 via a network 112. The remote system 140 may be a scalable / elastic resource 142 that includes a single computer, multiple computers, or a distributed system (e.g., a cloud environment) that includes computing resources 144 (e.g., data processing hardware) and / or storage resources 146 (e.g., memory hardware). A data store (i.e., a remote storage device) may be overlaid on the storage resource 146, enabling scalable use of the storage resource 146 by one or more of a client (e.g., user device 10) or computing resources 144. The remote system 140 can execute the cloud infrastructure 50 and / or communicate with the cloud infrastructure 50.

[0017] The remote system 140 includes and / or communicates with a source control management system (SCMS) 150. The SCMS 150 provides version control (i.e., revision control, source control, source code management, etc.) for one or more configuration files 152, 152a - n. The configuration files 152 define the deployment and / or provisioning of the cloud infrastructure 50. The configuration files 152 may include Infrastructure as Code (IaC) and / or one or more cloud infrastructure specifications 154 (i.e., specifying the deployment / provisioning of the cloud infrastructure 50). The SCMS 150 can interact with a data store 160 to store, manage, and maintain the configuration files 152.

[0018] The remote system 140 is configured to receive, for example, via the network 112, a cloud infrastructure modification request 20 from the user device 10 associated with each user 12. The user device 10 can correspond to any computing device such as a desktop workstation, a laptop workstation, or a mobile device (i.e., a smartphone). The user device 10 includes computing resources 18 (e.g., data processing hardware) and / or storage resources 16 (e.g., memory hardware). The user 12 can construct the modification request 20 using the graphical user interface (GUI) 14 executed on the user device 10. The modification request 20 requests the remote system 140 to generate and / or update one or more configuration files 152, 152a - n stored in a memory (e.g., a data store) that communicates with the remote system. The modification request 20 can include abstract configuration data 22 derived from user interactions 24, 24a - n with the GUI 14 executed on the user device 10. For example, the user 12 interacts with the GUI 14 by adjusting a slider, selecting a button, entering into a text box, etc. The interaction represents the intention of the user 12 to modify the configuration or deployment of the cloud infrastructure 50. For example, the abstract configuration data 22 indicates that the user 12 requests to change the size of the deployment of the cloud infrastructure 50 via one or more user interactions 24. In particular, the abstract configuration data 22 is at a higher level (i.e., more abstract) than conventional cloud infrastructure configuration commands. For example, the GUI 14 can provide a "code-free" environment that enables the user 12 to configure the cloud infrastructure 50 without the need for the technology required for the generation or adjustment of low-level code.

[0019] The remote system 140 runs a cloud infrastructure manager 200 that receives a modification request 20. The cloud infrastructure manager 200 converts the abstract configuration data 22 into one or more configuration commands 210 (Figure 2). The cloud infrastructure manager 200 updates the configuration file 152 (e.g., obtained from the SCMS 150) with the converted configuration commands 210. The configuration file 152 represents low-level "source" code that includes the configuration commands 210 necessary to configure and / or provision the cloud infrastructure 50. For example, the configuration file 152 includes a YAML configuration file. Thus, the cloud infrastructure manager 200 converts the abstract "high-level" intent from the user 12 (i.e., the user interaction 24 when interacting with the GUI 14) into the "low-level" configuration file 152. This enables the user 12 to modify the cloud infrastructure 50 or request a modification to the cloud infrastructure 50 without the technical knowledge required to directly generate the configuration file 152. The cloud infrastructure manager 200 can use the updated configuration files 152, 152U to provision the cloud infrastructure 50. For example, the updated configuration file 152 changes the deployment size of the cloud infrastructure 50.

[0020] Referring now to FIG. 2, in some embodiments, the cloud infrastructure manager 200 includes a UI translator 220. The UI translator 220 receives abstract configuration data 22 derived from user interactions 24. For example, a first user 12, 12a interacts with a first GUI 14, 14a using a first user device 10, 10a. The user device 10 can send these user interactions 24 (e.g., interactions generated by user 12a interacting with GUI 14a via a mouse, keyboard, touch, voice, etc.) to the UI translator 220 as abstract configuration data 22 derived from user interactions 24.

[0021] The UI translator 220 converts the abstract configuration data 22 into one or more configuration commands 210. For example, the UI translator 220 uses a lookup table, a machine learning algorithm, or other model to generate configuration commands 210 from the abstract configuration data. The configuration commands 210 represent the "low-level" code necessary to effect an addition or change to the cloud infrastructure 50 requested by user 12 via user interaction 24.

[0022] In some embodiments, the SCM manager 300 receives the configuration command 210 from the UI translator 220. The SCM manager 300 communicates with the SCMS 150. The SCM manager 300 obtains from the SCMS 150 any appropriate configuration file 152 that can be updated by the configuration command 210. For example, if the configuration command 210 modifies or adds cloud infrastructure specifications 154 of an existing configuration file 152, the SCM manager 300 obtains the configuration file from the SCMS 150 before updating the configuration file 152. In other embodiments, the SCM manager 300 generates a new configuration file 152 (e.g., when the configuration command 210 does not modify an existing configuration file 152 but instead requires a completely new configuration file 152). The SCM manager 300 updates the obtained configuration file 152 with the configuration command 210 received from the UI translator 220. Updating the configuration file 152 includes, in some embodiments, merging the configuration command 210 with the configuration file 152. Merging the configuration command 210 can include adding new lines, deleting lines, and / or modifying existing lines based on the configuration command 210 and the existing lines within the configuration file 152. In some embodiments, the SCM manager 300 uses the SCMS 150 to merge the configuration command 210. For example, the SCM manager 300 sends a merge command to the SCMS 150.

[0023] In some embodiments, user 12 interacts directly with SCMS 150 to "manually" add, delete, or edit configuration file 152. For example, a second user 12, 12b uses a second user device 10, 10b to communicate directly with SCMS 150 or interact with a second GUI 14, 14b that communicates directly via cloud infrastructure manager 200. In this case, the second user 12b directly interacts with the "low-level" code, for example, by directly modifying configuration file 152 in a text editor or other development environment (e.g., by running at least partially locally on the second user device 10b). SCM manager 300 can receive updated configuration commands 210 derived from the updates made by the second user 12b to a copy of configuration file 152 on the second user device 10b. For example, SCM manager 300 receives these manual updates to configuration file 152 from SCMS 150 by SCMS 150 "pushing" the changes or by SCM manager 300 "pulling" the changes. SCM manager 300 may provide the changes to UI translator 220 (e.g., using configuration commands 210). UI translator 220 can convert the configuration commands 210 generated by the second user 12b into abstract configuration data 22. The first GUI 14a can receive the abstract configuration data from UI translator 220 (e.g., via GUI update commands) and update GUI 14a to reflect the changes propagated by the second user 12b. That is, the first user 12a can observe the visual elements of GUI 14 that reflect or represent the changes to configuration file 152 generated by the second user 12b via the first GUI 14a, and the visual elements are presented in an abstract way (i.e., in a way that abstracts the low-level code of configuration file 152).

[0024] In this way, the cloud infrastructure manager 200 enables users 12 of both the first GUI 14a (i.e., the abstract or "high-level" representation of the configuration file 152) and the second GUI 15b (i.e., the "low-level" representation of the configuration file 152) to collaborate and coexist. The cloud infrastructure manager 200 can update or provision the cloud infrastructure 50 based on updates made to the configuration file 152 by the second user 12b.

[0025] In some embodiments, the cloud infrastructure manager 200 includes an infrastructure manager 240. The infrastructure manager 240 communicates with the UI translator 220 and / or the SCM manager 300 using configuration commands 210 and / or the configuration file 152 to provision the cloud infrastructure 50. That is, when a change to the configuration file 152 (either from the abstract configuration data 22 or from a direct modification of the configuration file 152) requires a corresponding change to the cloud infrastructure 50 (i.e., the configuration of various cloud infrastructure elements such as servers, load balancers, virtual machines, etc.), the infrastructure manager 240 interacts with the cloud infrastructure 50 to make the necessary changes.

[0026] Referring now to FIG. 3, in some embodiments, the SCM manager 300 includes an approval manager 310. The approval manager 310 generates an approval request 312 that requests approval of an update or addition to the configuration file 152 before committing the update or addition to the SCMS 150. For example, when a first user 12a generates a modification request 20 requesting a modification to the configuration file 152 (FIGS. 1 and 2), the approval manager 310 generates an approval request 312 that requests approval of the modification to the configuration file 152 from a second user 12b. Before provisioning the cloud infrastructure 50, the approval manager 310 receives approval responses 314, 314a from the second user 12b approving the modification to the configuration file 152. In other examples, the approval manager 310 receives rejection responses 314, 314b from the second user device 10b rejecting the modification to the configuration file 152. In these examples, the approval manager 310 sends a notification 320 to the first user device 10a (i.e., the user 12a who generated the modification request 20) that includes the rejection response 314b or otherwise notifies the user 12a of the rejection.

[0027] The approval manager 310 can generate an approval request 312 for each approver of the modification request 20. The approval manager 310 can determine an appropriate approver for the modification request 20 based on several factors. For example, the modification request 20 can reference one or more approvers. In another example, the approval manager 310 can select the owner of the configuration file 152 or other responsible party as the approver. In yet another example, the approval manager 310 can determine an approver (e.g., an administrator) from a predetermined list based on the requester, based on the scope of the modification request 20, etc. The approval manager 310 can always generate an approval request 312 (i.e., an update or addition to the configuration file 152 always requires approval), or only some of the modification request 20 may require approval (e.g., adding a new configuration file 152 does not require approval, but modifying an existing configuration file 152 requires approval).

[0028] In some embodiments, the SCM manager 300 determines whether there is a merge conflict 330 between a new configuration command 210 (e.g., generated from a modification request 20) and any existing configuration command 210 of the configuration file 152. A merge conflict 330 occurs when the proposed changes to the configuration file 152 are somehow incompatible with the version of the configuration file 152 that is to be updated. For example, a merge conflict 330 occurs when the configuration command 210 changes the deployment size of a deployment that does not exist in the configuration file 152 (e.g., because the deployment was deleted by a previous modification). The approval manager 310 can determine whether there is a merge conflict 330 based on communication with the SCMS 150. That is, in some embodiments, the SCM manager 300 determines the merge conflict 330 (e.g., by analyzing the new configuration command 210 and the existing configuration file 152), or the SCM manager 300 depends on the SCMS 150 to determine whether there is any merge conflict 330 (e.g., by performing a "dry run" or testing a commit to the SCMS 150). In some embodiments, the SCM manager 300 determines whether there is any merge conflict 330 before generating any approval request 312. In these embodiments, the SCM manager 300 can send a notification 320 to the user 12 who generated the modification request 20, notifying the user 12 of the merge conflict 330. The user 12 may be required to correct the merge conflict 330 before requesting approval of the modification.

[0029] Merge conflict 330 reflects, in some embodiments, only conflicts that cause an invalid configuration file 152. In other embodiments, merge conflict 330 extends to valid but undesirable configurations. For example, an organization may impose certain rules or restrictions (e.g., maximum deployment size, maximum cost, etc.). The SCM manager 300 may flag a violation of a rule or restriction as a merge conflict 330 that requires correction. In some examples, if there is a merge conflict 330, the SCM manager 300 generates an approval request(s) 312 and notifies the approver of the merge conflict 330.

[0030] Referring now to FIG. 4A, schematic diagram 400a includes an exemplary user device 10 that executes GUI 14. Here, GUI 14 solicits user interaction 24 from user 12 by providing one or more input fields 410, 410a - n. In this example, GUI 14 provides slider 410a and text box 410b, although any type of input field (e.g., radio buttons, check boxes, list selection, drop - down box, voice input, etc.) may be provided. Specifically, in this example, user 12 selects, via user interaction 24, by adjusting slider 410a, that the deployment should include 28 servers. GUI 14 can request any number of user interactions 24 from user 12 to gather all of the abstract configuration data 22 necessary to generate a correction request 20. For example, GUI 14 may request an identifier, user credentials (e.g., username, password, etc.), an approver, etc.

[0031] Referring now to FIG. 4B, schematic diagram 400b includes another exemplary user device 10 that executes GUI 14. Here, GUI 14 displays a pending and closed change request 20 (i.e., a "merge request"). For example, GUI 14 displays any number of change statuses 412. Here, the change status 412 includes the status 412, 412a of the change request 20 (e.g., open or pending, merged or completed, and / or closed or rejected), the title 412, 412b of the change request 20, the creator 412, 412c of the change request 20, and the reviewer 412, 412d of the change request 20 (i.e., the approver). With GUI 14, user 12 may be able to search, filter, and / or browse the details of change request 20. In some embodiments, with GUI 14, user 12 may be able to approve one or more change requests 20. Here, via user interaction 24, user 12 may interact with an approval user input 420 (e.g., a button). Interaction with approval user input 420 generates an approval response 314a (FIG. 3), enabling SCM manager 300 to merge the updated configuration file 152 via SCMS 150 into the repository. In some examples, user 12 selects any of the change requests 20 to obtain additional details of each change request 20.

[0032] Referring now to FIG. 4C, schematic diagram 400c includes user device 10 that executes GUI 14 of FIG. 4B. Here, user 12 has selected modification request 20 with the title "Assignment #3", and GUI 14 responds by displaying a detailed view of modification request 20. GUI 14 may provide various different views (e.g., summary view, commit view, and change view) with different types and levels of details. Here, the change view includes approval request 312 that includes difference 430 between configuration file 152 before being updated with new configuration command 210 (i.e., original configuration file 152) and the updated configuration file 152. For example, the difference highlights for user 12 any of the added, deleted, and / or changed lines, enabling user 12 to quickly review specific changes to configuration file 152 before approving, rejecting, or editing modification request 20. After reviewing the changes to configuration file 152, user 12 can dispose of modification request 20 by selecting approval user input 420, rejecting modification request 20, or modifying modification request 20. In some embodiments, user 12 modifies modification request 20 by directly editing configuration file 152 or by changing other parameters of modification request 20 (e.g., changing the name, changing the approver, etc.). The modified modification request 20 may require approval from another user 12 (e.g., the original creator of modification request 20 or a third user 12).

[0033] Accordingly, in some embodiments, the cloud infrastructure manager 200 automatically generates a configuration change from one or more user actions (i.e., user interactions 24 with the GUI 14 executed on the user device 10). For example, the user 12 provides credentials to the cloud infrastructure manager 200 and then executes one or more operations (e.g., clicking a create button) on the GUI 14. Thereby, the user device 10 generates a modification request 20 (e.g., for a gateway server, etc.). In response to receiving the modification request 20, the cloud infrastructure manager 200 generates or updates one or more configuration files 152. After the configuration file(s) 152 are created or updated, in some examples, the cloud infrastructure manager 200 generates a merge request for the SCMS 150 that includes the generated / updated configuration file 152.

[0034] In some embodiments, the cloud infrastructure manager 200 provides an approval process and source control management as the only reliable source of information about configuration management. For example, the administrator provides credentials to the cloud infrastructure manager 200 to view all created modification requests 20. Additionally, with appropriate permissions, the administrator can review, approve, and / or reject the modification request 20. When the administrator (or other approver) approves the modification request 20, in some embodiments, the cloud infrastructure manager 200 performs a "dry run" of the new or updated configuration 152. If the dry run is successful, the cloud infrastructure manager 200 may notify the SCMS 150. The SCMS 150 merges the update, for example, into the main branch of the configuration file(s) 152. If the dry run fails, the cloud infrastructure manager 200 can instead send a failure notification to the user 12 via the GUI 14.

[0035] In some embodiments, the cloud infrastructure manager 200 applies configuration changes (i.e., configuration synchronization). For example, after the modification request 20 is successfully merged into the main branch, the cloud infrastructure manager 200 automatically applies the generated configuration to the cloud infrastructure 50 (e.g., a container orchestration system).

[0036] Optionally, the user 12 creates and / or updates the cloud resources / infrastructure 50 using the GUI 14 running on the user device 10. For example, the user 12 creates a fleet. In this example, the cloud infrastructure manager 200 automatically converts the user action (i.e., the user interaction 24 between the user 12 and the GUI 14) into a change in the code within the configuration file 152. Before the configuration change is merged into the main branch of the SCMS 150, one or more other users 12 may need to approve the configuration change. After approval (if required), the code change is merged and becomes a trusted source of information for the cloud infrastructure 50. In some embodiments, the cloud infrastructure manager 200 starts a configuration synchronization pipeline before applying the configuration change. The infrastructure code (converted from the user action) may be replicated to create more cloud resources (such as a fleet in this example).

[0037] FIG. 5 is a flowchart of an exemplary arrangement of operations of a method 500 implemented on a computer that manages a cloud infrastructure. When executed by data processing hardware 144, method 500 causes the data processing hardware 144 to perform the operations. Method 500 includes, at operation 502, receiving a cloud infrastructure modification request 20 from a user 12 of a user device 10, the request requesting a modification of a cloud infrastructure 50 to be executed on the data processing hardware 144. The cloud infrastructure modification request 20 includes abstract configuration data 22 derived from a user interaction 24 with a GUI 14 (e.g., executed on the user device 10). Method 500 includes, at operation 505, converting the abstract configuration data 22 into a configuration command 210, and at operation 506, updating a configuration file 152 using the configuration command 210. The configuration file 152 can include one or more cloud infrastructure specifications 154 of the cloud infrastructure 50 and can be controlled by a source control management system 150. Method 500 includes, at operation 508, provisioning the cloud infrastructure 50 using the updated configuration file 152U.

[0038] FIG. 6 is a schematic diagram of an exemplary computing device 600 that can be used to implement the systems and methods described in this document. Computing device 600 is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions are intended only as examples and are not intended to limit the embodiments of the invention described and / or claimed in this document.

[0039] The computing device 600 includes a processor 610, a memory 620, a storage device 630, a high-speed interface / controller 640 connected to the memory 620 and the high-speed expansion port 650, and a low-speed interface / controller 660 connected to the low-speed bus 670 and the storage device 630. Each component 610, 620, 630, 640, 650, and 660 is interconnected using various buses and may be mounted on a common motherboard or in other ways as required. The processor 610 processes instructions for execution within the computing device 600, including instructions stored in the memory 620 or the storage device 630, and can display graphical information of a graphical user interface (GUI) on an external input / output device such as a display 680 connected to the high-speed interface 640. In other embodiments, multiple processors and / or multiple buses may be used, along with multiple memories and memory types, as required. Also, multiple computing devices 600 may be connected, with each device providing a part of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system).

[0040] Memory 620 stores non-temporary information within computing device 600. Memory 620 may be a computer-readable medium, a volatile memory unit(s), or a non-volatile memory unit(s). The non-temporary memory 620 may be a physical device used to temporarily or permanently store programs (e.g., sequences of instructions) or data (e.g., program state information) for use by computing device 600. Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM) / programmable read-only memory (PROM) / erasable programmable read-only memory (EPROM) / electrically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware such as a boot program). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM), and disks or tapes.

[0041] Storage device 630 can provide large-capacity storage to computing device 600. In some embodiments, storage device 630 is a computer-readable medium. In various different embodiments, storage device 630 may be an array of devices including a floppy (registered trademark) disk device, a hard disk device, an optical disk device, or a tape device, flash memory or other similar solid-state memory device, or a storage area network or other configured device. In additional embodiments, a computer program product is tangibly embodied in an information carrier. The computer program product includes instructions that, when executed, perform one or more of the methods as described above. The information carrier is a computer-readable medium or a machine-readable medium such as memory 620, storage device 630, or memory on processor 610.

[0042] The high-speed controller 640 manages the bandwidth-intensive operations of the computing device 600, while the low-speed controller 660 manages the lower-bandwidth-intensive operations. Such role assignments are merely examples. In some embodiments, the high-speed controller 640 is coupled to a high-speed expansion port 650 that can accept the memory 620, the display 680 (e.g., via a graphics processor or accelerator), and various expansion cards (not shown). In some embodiments, the low-speed controller 660 is coupled to the storage device 630 and the low-speed expansion port 690. The low-speed expansion port 690 may include various communication ports (such as USB, Bluetooth®, Ethernet®, wireless Ethernet, etc.) and may be coupled to one or more input / output devices such as a keyboard, a pointing device, a scanner, etc., or may be coupled to a network device such as a switch or a router via, for example, a network adapter.

[0043] As shown in the figure, the computing device 600 can be implemented in many different forms. For example, it can be implemented as a standard server 600a, or multiple times as a group of such servers 600a, as a laptop computer 600b, or as part of a rack server system 600c.

[0044] The various embodiments of the systems and techniques described herein can be realized in digital electronic circuits and / or optical circuits, integrated circuits, specially designed ASICs (application-specific integrated circuits), computer hardware, firmware, software, and / or combinations thereof. These various embodiments can be special or general-purpose and can include embodiments in one or more computer programs executable and / or interpretable in a programmable system that includes at least one programmable processor, at least one input device, and at least one output device coupled to receive data and instructions from and to transmit data and instructions to a storage system.

[0045] A software application (i.e., a software resource) can refer to computer software that causes a computing device to perform tasks. In some examples, a software application may be referred to as an "application", an "app", or a "program". Exemplary applications include, but are not limited to, system diagnostic applications, system management applications, system maintenance applications, word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and game applications.

[0046] These computer programs (also known as programs, software, software applications, or code) contain machine instructions for a programmable processor and can be implemented in high-level procedural and / or object-oriented programming languages and / or assembly / machine language. As used herein, the terms "machine-readable medium" and "computer-readable medium" refer to any computer program product, non-transitory computer-readable medium, apparatus, and / or device (e.g., magnetic disk, optical disk, memory, programmable logic device (PLD)) used to provide machine instructions and / or data to a programmable processor that includes a machine-readable medium that receives the machine instructions as a machine-readable signal. The term "machine-readable signal" refers to any signal used to provide machine instructions and / or data to a programmable processor.

[0047] The processes and logical flows described in this specification can be implemented by one or more programmable processors, also referred to as data processing hardware, executing one or more computer programs to act on input data and generate output. The processes and logical flows can also be implemented by special purpose logic circuitry, such as an FPGA (Field Programmable Gate Array) or an ASIC (Application Specific Integrated Circuit). Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. In general, a processor receives instructions and data from a read only memory, a random access memory, or both. The basic elements of a computer are a processor for executing instructions and one or more memory devices for storing instructions and data. In general, a computer also includes, or is operatively coupled to, one or more mass storage devices for storing data, such as magnetic disks, magneto-optical disks, or optical disks, or for receiving data therefrom, or for transmitting data thereto, or for doing both. However, a computer need not have such devices. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including by way of example semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices, magnetic disks, such as internal hard disks or removable disks, magneto-optical disks, and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.

[0048] To provide interaction with a user, one or more aspects of this specification may be implemented on a computer having a display device, such as a CRT (cathode ray tube), LCD (liquid crystal display) monitor, touch screen, etc. for displaying information to the user, and optionally, a keyboard and a pointing device, such as a mouse or trackball, by which the user can provide input to the computer. Other types of devices can also be used to provide interaction with the user. For example, the feedback provided to the user can be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback, and the input received from the user can be received in any form, including acoustic, voice, or tactile input. Further, the computer can interact with the user by sending documents to and receiving from the devices used by the user, for example, by sending web pages to a web browser on the user's client device in response to requests received from the web browser.

[0049] Multiple embodiments have been described. Nevertheless, it will be understood that various modifications can be made without departing from the spirit and scope of the present disclosure. Accordingly, other embodiments are within the scope of the following claims.

Claims

1. A method (500) for a computer to be executed by data processing hardware (144) to cause the data processing hardware (144) to perform operations, the operations comprising: Receiving a cloud infrastructure modification request (20) from a user (12) of a user device (10) to modify a cloud infrastructure (50) executed on the data processing hardware (144), the cloud infrastructure modification request (20) including abstract configuration data (22) derived from a user interaction (24) with a graphical user interface (GUI) (14); The operations further comprise: Converting the abstract configuration data (22) into a configuration command (210), the configuration command (210) describing the configuration of the cloud infrastructure (50); The operations further comprise: Updating a configuration file (152) using the configuration command (210); and Provisioning the cloud infrastructure (50) using the updated configuration file (152U). A method (500) comprising the above.

2. The operations further comprise: After updating the configuration file (152) using the configuration command (210), generating an approval request (312) to request approval of the update to the configuration file (152) from a second user (12) of a second user device (10); and Receiving an approval response (314a) from the second user device (10) approving the update to the configuration file (152) before provisioning the cloud infrastructure (50). The method (500) according to Claim 1, further comprising the above.

3. The operations further comprise: Receiving a second cloud infrastructure modification request (20) from the user (12) of the user device (10) to modify the cloud infrastructure (50), the second cloud infrastructure modification request (20) including second abstract configuration data (22) derived from a second user interaction (24) using the GUI (14) executed on the user device (10); The operations further comprise: Converting the second abstract configuration data (22) into a second configuration command (210); Updating the configuration file (152) using the second configuration command (210); Generating a second approval request (312) for requesting approval of the update from the second user (12) of the second user device (10) to the configuration file (152); Receiving a rejection response (314b) from the second user device (10) to reject the update to the configuration file (152); Sending a notification (320) including the rejection response (314b) to the user device (10); The method (500) according to claim 2, further comprising the above.

4. The operation further comprises Receiving a second cloud infrastructure modification request (20) from the user (12) of the user device (10) to request modification of the cloud infrastructure (50), where the second cloud infrastructure modification request (20) includes second abstract configuration data (22) derived from a second user interaction (24) using the GUI (14) executed on the user device (10); The operation is Converting the second abstract configuration data (22) into a second configuration command (210); Determining a merge conflict (330) between the second configuration command (210) and an existing configuration command (210) of the configuration file (152); Sending a notification (320) including the merge conflict (330) to the user device (10); The method (500) according to claim 2, further comprising the above.

5. The approval request (312) includes the difference between the configuration file (152) before update and the configuration file (152) after update. The method (500) according to any one of claims 2 to 4.

6. The operation is The method (500) according to any one of claims 1 to 5, further comprising obtaining the configuration file (152) from a source control management system (150) before updating the configuration file (152) using the configuration command (210).

7. Updating the configuration file (152) includes merging the configuration command (210) with the configuration file (152) using the source control management system (150). The method (500) according to claim 6.

8. After provisioning the cloud infrastructure (50), the operation is receiving an updated configuration command (210) from a second user (12) of the second user device (10); updating the configuration file (152) using the updated configuration command (210); provisioning the cloud infrastructure (50) using the configuration file (152); sending a GUI update command to the user device (10), wherein when executed by the user device (10), the GUI update command causes the user device (10) to display a visual element representing the updated configuration command (210) on the GUI (14) executed on the user device (10). The method (500) according to any one of claims 1 to 7. **Claim 9** The updated configuration command (210) is derived from an update made by the second user (12) to a copy of the configuration file (152) stored in the second user device (10). The method (500) according to claim 8. **Claim 10** The configuration file (152) includes infrastructure as code (IaC). The method (500) according to any one of claims 1 to 9. **Claim 11** The GUI (14) is executed on the user device (10). The method (500) according to any one of claims 1 to 10. **Claim 12** The configuration file (152) includes one or more cloud infrastructure specifications (154) of the cloud infrastructure (50), and is controlled by a source control management system (150). The method (500) according to any one of claims 1 to 11. **Claim 13** comprises data processing hardware (144) and memory hardware (146) communicating with the data processing hardware (144), wherein the memory hardware (146) stores instructions which, when executed by the data processing hardware (144), cause the data processing hardware (144) to perform operations, and the operations are Receiving a cloud infrastructure modification request (20) requesting a modification of a cloud infrastructure (50) executed on the data processing hardware (144) from a user (12) of a user device (10), wherein the cloud infrastructure modification request (20) includes abstract configuration data (22) derived from a user interaction (24) with a graphical user interface (GUI) (14). The operation includes converting the abstract configuration data (22) into a configuration command (210), the configuration command (210) describing the configuration of the cloud infrastructure (50). The operation further includes updating a configuration file (152) using the configuration command (210). provisioning the cloud infrastructure (50) using the updated configuration file (152U). A system (100) including the above.

14. The operation includes after updating the configuration file (152) using the configuration command (210), generating an approval request (312) requesting approval of the update to the configuration file (152) from a second user (12) of a second user device (10). before provisioning the cloud infrastructure (50), receiving an approval response (314a) approving the update to the configuration file (152) from the second user device (10). The system (100) according to claim 13, further including the above.

15. The operation includes receiving a second cloud infrastructure modification request (20) requesting a modification of the cloud infrastructure (50) from the user (12) of the user device (10), the second cloud infrastructure modification request (20) including second abstract configuration data (22) derived from a second user interaction (24) using the GUI (14) executed on the user device (10). The operation includes converting the second abstract configuration data (22) into a second configuration command (210). updating the configuration file (152) using the second configuration command (210). Generating a second approval request (312) that requests approval of the update from the second user (12) of the second user device (10) to the configuration file (152); Receiving a rejection response (314b) from the second user device (10) that rejects the update to the configuration file (152); Sending a notification (320) including the rejection response (314b) to the user device (10); The system (100) according to claim 14, further comprising:

16. The operation includes: Receiving a second cloud infrastructure modification request (20) from the user (12) of the user device (10) that requests modification of the cloud infrastructure (50), wherein the second cloud infrastructure modification request (20) includes second abstract configuration data (22) derived from a second user interaction (24) using the GUI (14) executed on the user device (10); The operation includes: Converting the second abstract configuration data (22) into a second configuration command (210); Determining a merge conflict (330) between the second configuration command (210) and an existing configuration command (210) of the configuration file (152); Sending a notification (320) including the merge conflict (330) to the user device (10); The system (100) according to claim 14, further comprising:

17. The approval request (312) includes a difference between the configuration file (152) before the update and the configuration file (152) after the update. The system (100) according to any one of claims 14 to 16.

18. The operation includes: Before updating the configuration file (152) using the configuration command (210), further comprising obtaining the configuration file (152) from a source control management system (150). The system (100) according to any one of claims 13 to 17.

19. Updating the configuration file (152) includes merging the configuration command (210) with the configuration file (152) using the source control management system (150). The system (100) according to claim 18.

20. After provisioning the cloud infrastructure (50), the operation is: Receiving an updated configuration command (210) from a second user (12) of the second user device (10); Updating the configuration file (152) using the updated configuration command (210); Provisioning the cloud infrastructure (50) using the configuration file (152); Sending a GUI update command to the user device (10), wherein when executed by the user device (10), the GUI update command causes the user device (10) to display a visual element representing the updated configuration command (210) on the GUI (14) executed on the user device (10). The system (100) according to any one of claims 13 to 19.

21. The updated configuration command (210) is derived from an update made by the second user (12) to a copy of the configuration file (152) stored in the second user device (10). The system (100) according to claim 20.

22. The configuration file (152) includes infrastructure as code (IaC). The system (100) according to any one of claims 13 to 21.

23. The GUI (14) is executed on the user device (10). The system (100) according to any one of claims 13 to 22.

24. The configuration file (152) is including one or more cloud infrastructure specifications (154) of the cloud infrastructure (50), controlled by a source control management system (150), The system (100) according to any one of claims 13 to 23.

Citation Information

Patent Citations

  • Merge system for source module correction information

    JP1993241802A

  • System, method and program for rewriting content

    JP2010267112A

  • Container system for automating application deployment in a cloud infrastructure

    US20220012030A1