Programmed resupply of a computing platform configuration
By determining and generating system configuration instructions through programming, the bare metal system is automatically re-provisioned, solving the problem of time-consuming manual provisioning in existing technologies and achieving fast and efficient bare metal system provisioning.
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2024-11-06
- Publication Date
- 2026-06-12
Smart Images

Figure CN122207007A_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to the programmatic provisioning of hardware computing platforms. Specifically, this disclosure relates to the configuration of modular computing components and the generation of system configuration instructions based on component configuration instructions. Background Technology
[0002] Cloud service providers can make specific computing platforms available to client entities. In addition to virtual machines, which can be implemented on any suitable available hardware as needed, or as a supplement, client entities can use and control a specific set of hardware components (e.g., processors, network hardware, storage devices, etc.) owned by the cloud service provider; this is referred to as a "bare metal" system. While the bare metal system is under the client's control, the client can make changes to many settings and other aspects of the bare metal system. For example, the client can install and / or update firmware, drivers, and the operating system. The client can also store data and applications on storage devices. When the client no longer needs the bare metal system, it can be returned to the cloud service provider. The cloud service provider may wish to re-provision the returned hardware components of the bare metal system for use by another client, for example, by erasing all software and data installed by the previous client and installing a specific set of firmware and drivers. Manual re-provisioning can take several months, leaving the hardware components offline and unusable.
[0003] The solutions described in this section are feasible solutions, but not necessarily solutions that have been previously conceived or adopted. Therefore, unless otherwise stated, no solution should be assumed to qualify as prior art simply because it is included in this section. Attached Figure Description
[0004] The accompanying figures illustrate embodiments by way of example and not limitation. It should be noted that the terms "a" or "an" embodiment used in this disclosure do not necessarily refer to the same embodiment, and mean at least one. In the figures: Figure 1 This is a block diagram illustrating a pattern for implementing a cloud infrastructure as a service system according to at least one embodiment; Figure 2 This is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system according to at least one embodiment; Figure 3 This is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system according to at least one embodiment; Figure 4 This is a block diagram illustrating another pattern for implementing a cloud infrastructure as a service system according to at least one embodiment; Figure 5This is a block diagram illustrating an example computer system according to at least one embodiment; Figure 6 The illustration shows a system according to one or more embodiments; Figures 7A-7C The illustrations show a collection of examples of operations for programmatically refeeding a bare-metal system according to one or more embodiments; Figure 8 The illustration shows an example of a platform definition according to one or more embodiments; and Figure 9 An example of a dependency graph according to one or more embodiments is illustrated. Detailed Implementation
[0005] In the following description, numerous specific details are set forth for purposes of explanation in order to provide a thorough understanding. One or more embodiments may be practiced without these specific details. Features described in one embodiment may be combined with features described in different embodiments. In some examples, well-known structures and devices are described in the form of block diagrams to avoid unnecessarily obscuring the invention.
[0006] 1. General Overview
[0007] 2. Infrastructure as a Service
[0008] 3. Programmatic Resupply System Architecture
[0009] 4. Re-supply the bare-metal system via programming.
[0010] 5. Example Implementation
[0011] 6. Practical applications, advantages, and improvements
[0012] 7. Computer networks and cloud networks
[0013] 8. Other matters; extension
[0014] 1. General Overview
[0015] One or more embodiments re-provision the bare-metal system by programmatically determining the components constituting the bare-metal system, retrieving configuration information of the components, and generating and executing system configuration instructions based on the configuration information.
[0016] The system receives a request to re-provision the bare-metal system. The request includes platform definitions that define the compute components within the bare-metal system. The system programmatically generates queries to retrieve the component configurations for each compute component in the platform definitions. The component configurations of a compute component can identify its dependencies on other compute components in the bare-metal system.
[0017] The system programmatically generates a dependency graph for a bare-metal system, which indicates, for a given computation component, any other computation components that depend on that given computation component, as well as any other computation components that the given computation component depends on.
[0018] The system programmatically generates queries for each computing component to retrieve component configuration instructions for configuring that component. The system generates system configuration instructions based on the component configuration instructions and a dependency graph. The dependency graph determines the order in which the system will execute the component configuration instructions. The system then re-provisions the bare-metal system by executing the system configuration instructions.
[0019] One or more embodiments described in this specification and / or claimed in the claims may not be included in this general overview section.
[0020] 2. Infrastructure as a Service
[0021] As mentioned above, Infrastructure as a Service (IaaS) is a specific type of cloud computing. IaaS can be configured to provide virtualized computing resources over a public network (e.g., the Internet). In the IaaS model, cloud providers can host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). In some cases, IaaS providers can also offer various services to accompany these infrastructure components (example services include billing software, monitoring software, logging software, load balancing software, clustering software, etc.). Therefore, because these services may be policy-driven, IaaS users can implement policies to drive load balancing to maintain application availability and performance.
[0022] In some instances, IaaS customers can access resources and services over a wide area network (WAN) such as the internet, and can use the cloud provider's services to install the remaining elements of the application stack. For example, a user can log in to the IaaS platform to create virtual machines (VMs), install an operating system (OS) on each VM, deploy middleware such as databases, create buckets for workloads and backups, and even install enterprise software into the VM. The customer can then use the provider's services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, and managing disaster recovery.
[0023] In most cases, cloud computing models will require the involvement of cloud providers. Cloud providers can, but are not necessarily, third-party providers specializing in (e.g., provisioning, renting, selling) IaaS services. Entities may also choose to deploy private clouds, thus becoming their own infrastructure service providers.
[0024] In some examples, IaaS deployment is the process of placing a new application or a new version of an application onto a prepared application server, etc. It may also include the processing of server preparation (e.g., installation libraries, daemons, etc.). This is typically managed by the cloud provider, below the hypervisor layer (e.g., servers, storage devices, network hardware, and virtualization). Therefore, the customer can be responsible for processing (OS), middleware, and / or application deployment (e.g., on self-service virtual machines, etc., which can be started on demand).
[0025] In some examples, IaaS provisioning can refer to acquiring computers or virtual hosts for use, or even installing necessary libraries or services on them. In most cases, deployment does not include provisioning, and provisioning may need to be performed first.
[0026] In some cases, IaaS provisioning presents two distinct challenges. First, there's the initial challenge of provisioning the initial set of infrastructure before anything is operational. Second, once everything is provisioned, there's the challenge of evolving the existing infrastructure (e.g., adding new services, changing services, removing services, etc.). In some cases, both challenges can be addressed by enabling declaratively defined infrastructure configuration. In other words, the infrastructure (e.g., which components are needed and how they interact) can be defined by one or more configuration files. Therefore, the overall topology of the infrastructure (e.g., which resources depend on which resources and how they work together) can be described declaratively. In some instances, once the topology is defined, workflows for creating and / or managing the different components described in the configuration files can be generated.
[0027] In some examples, the infrastructure can have many interconnected elements. For example, there may be one or more Virtual Private Clouds (VPCs) (e.g., potential on-demand pools of configurable and / or shared computing resources), also known as the core network. In some examples, there may also be one or more inbound / outbound traffic group rules, provisioned to define how inbound and / or outbound traffic will be configured for the network, and one or more Virtual Machines (VMs). Other infrastructure elements, such as load balancers, databases, etc., may also be provisioned. The infrastructure can evolve incrementally as more and / or additional infrastructure elements are desired.
[0028] In some instances, continuous deployment techniques can be used to enable the deployment of infrastructure code across various virtual computing environments. Furthermore, the described techniques enable infrastructure management within these environments. In some examples, service teams may write code that they expect to deploy to one or more, but often many, different production environments (e.g., across various geographical locations, sometimes spanning the entire world). However, in some examples, the infrastructure on which the code will be deployed must first be set up. In some instances, provisioning can be done manually, resources can be provisioned using provisioning tools, and / or once the infrastructure is provisioned, the code can be deployed using deployment tools.
[0029] Figure 1 This is a block diagram 100 illustrating an example pattern of an IaaS architecture according to at least one embodiment. Service operator 102 may be communicatively coupled to secure host lease 104, which may include a virtual cloud network (VCN) 106 and a secure host subnet 108. In some examples, service operator 102 may use one or more client computing devices, which may be portable handheld devices (e.g., iPhone®, cellular phone, iPad®, computing tablet, personal digital assistant (PDA)) or wearable devices (e.g., Google Glass® head-mounted display), running software such as Microsoft Windows Mobile® and / or various mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 8, Palm OS, and enabled for the Internet, email, short message service (SMS), Blackberry®, or other communication protocols. Alternatively, client computing devices may be general-purpose personal computers, including, for example, personal computers and / or laptops running various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems. The client computing device can be a workstation computer running various commercial UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, such as Google Chrome OS). Alternatively, or additionally, the client computing device can be any other electronic device, such as a thin client computer, an internet-enabled gaming system (e.g., a Microsoft Xbox game console with or without Kinect® gesture input), and / or a personal messaging device capable of communicating over a network that can access VCN 106 and / or the internet.
[0030] VCN 106 may include a local peering gateway (LPG) 110, which may be communicatively coupled to SSH VCN 112 via LPG 110 contained in Secure Shell (SSH) VCN 112. SSH VCN 112 may include an SSH subnet 114, and SSH VCN 112 may be communicatively coupled to control plane VCN 116 via LPG 110 contained in control plane VCN 116. Furthermore, SSH VCN 112 may be communicatively coupled to data plane VCN 118 via LPG 110. Control plane VCN 116 and data plane VCN 118 may be contained in a service lease 119 that may be owned and / or operated by an IaaS provider.
[0031] The control plane VCN 116 may include a control plane demilitarized zone (DMZ) layer 120 that acts as a peripheral network (e.g., a portion of a corporate network between an intranet and an external network). DMZ-based servers can assume limited liability and help control vulnerabilities. Furthermore, the DMZ layer 120 may include one or more load balancer (LB) subnets 122, a control plane application layer 124 that may include one or more application subnets 126, and a control plane data layer 128 that may include one or more database (DB) subnets 130 (e.g., one or more front-end DB subnets and / or one or more back-end DB subnets). One or more LB subnets 122 contained in the control plane DMZ layer 120 may be communicatively coupled to one or more application subnets 126 contained in the control plane application layer 124 and an Internet gateway 134 that may be contained in the control plane VCN 116. The application subnets 126 may be communicatively coupled to one or more DB subnets 130 contained in the control plane data layer 128, as well as a service gateway 136 and a Network Address Translation (NAT) gateway 138. The control plane VCN 116 may include the service gateway 136 and the NAT gateway 138.
[0032] The control plane VCN 116 may include a data plane mirror application layer 140, which may include one or more application subnets 126. The one or more application subnets 126 included in the data plane mirror application layer 140 may include a virtual network interface controller (VNIC) 142 capable of executing a compute instance 144. The compute instance 144 may communicatively couple the one or more application subnets 126 of the data plane mirror application layer 140 to the one or more application subnets 126 that may be included in the data plane application layer 146.
[0033] Data plane VCN 118 may include data plane application layer 146, data plane DMZ layer 148, and data plane data layer 150. Data plane DMZ layer 148 may include one or more LB subnets 122 communicatively coupled to one or more application subnets 126 of data plane application layer 146 and Internet gateway 134 of data plane VCN 118. One or more application subnets 126 may be communicatively coupled to service gateway 136 and NAT gateway 138 of data plane VCN 118. Data plane data layer 150 may also include one or more DB subnets 130 communicatively coupled to one or more application subnets 126 of data plane application layer 146.
[0034] The Internet gateway 134 of the control plane VCN 116 and data plane VCN 118 can be communicatively coupled to the metadata management service 152, which in turn can be communicatively coupled to the public Internet 154. The public Internet 154 can be communicatively coupled to the NAT gateway 138 of the control plane VCN 116 and data plane VCN 118. The service gateway 136 of the control plane VCN 116 and data plane VCN 118 can be communicatively coupled to the cloud service 156.
[0035] In some examples, the service gateway 136 of the control plane VCN 116 or data plane VCN 118 can make application programming interface (API) calls to the cloud service 156 without traversing the public internet 154. API calls from the service gateway 136 to the cloud service 156 can be unidirectional: the service gateway 136 can make API calls to the cloud service 156, and the cloud service 156 can send requested data to the service gateway 136. However, the cloud service 156 may not initiate API calls to the service gateway 136.
[0036] In some examples, secure host lease 104 can be directly connected to service lease 119, which would otherwise be isolated. Secure host subnet 108 can communicate with SSH subnet 114 via LPG 110, which enables bidirectional communication between otherwise isolated systems. Connecting secure host subnet 108 to SSH subnet 114 allows secure host subnet 108 to access other entities within service lease 119.
[0037] Control plane VCN 116 may allow users of service lease 119 to configure or otherwise provision desired resources. Desired resources provisioned in control plane VCN 116 may be deployed or otherwise used in data plane VCN 118. In some examples, control plane VCN 116 may be isolated from data plane VCN 118, and the data plane mirror application layer 140 of control plane VCN 116 may communicate with the data plane application layer 146 of data plane VCN 118 via VNIC 142, which may be included in both the data plane mirror application layer 140 and the data plane application layer 146.
[0038] In some examples, users or clients of the system can make requests, such as create, read, update, or delete (CRUD) operations, via the public internet 154, which can transmit requests to the metadata management service 152. The metadata management service 152 can transmit the request to the control plane VCN 116 via internet gateway 134. The request can be received by one or more LB subnets 122 contained in the control plane DMZ layer 120. The LB subnets 122 can determine that the request is valid, and in response to this determination, they can transmit the request to one or more application subnets 126 contained in the control plane application layer 124. If the request is validated and requires a call to the public internet 154, the call to the public internet 154 can be transmitted to a NAT gateway 138 that can make calls to the public internet 154. The request may expect the stored metadata to be stored in one or more DB subnets 130.
[0039] In some examples, the data plane mirroring application layer 140 can facilitate direct communication between the control plane VCN 116 and the data plane VCN 118. For example, it may be desirable to apply configuration changes, updates, or other appropriate modifications to resources contained in the data plane VCN 118. Through VNIC 142, the control plane VCN 116 can communicate directly with the resources contained in the data plane VCN 118, and thus can perform configuration changes, updates, or other appropriate modifications to these resources.
[0040] In some embodiments, the control plane VCN 116 and data plane VCN 118 may be contained within service lease 119. In this case, the system's users or customers may not own or operate the control plane VCN 116 or data plane VCN 118. Alternatively, the IaaS provider may own or operate both the control plane VCN 116 and data plane VCN 118, and both planes may be contained within service lease 119. This embodiment enables the isolation of networks that might prevent users or customers from interacting with the resources of other users or customers. Furthermore, this embodiment allows users or customers of the system to privately store databases without relying on the public Internet 154, which may not have the desired level of threat protection for storage.
[0041] In other embodiments, one or more LB subnets 122 included in the control plane VCN 116 may be configured to receive signals from the service gateway 136. In this embodiment, the control plane VCN 116 and the data plane VCN 118 may be configured to be invoked by the IaaS provider's customers without invoking the public internet 154. The IaaS provider's customers may expect this embodiment because the database(s) used by the customer can be controlled by the IaaS provider and can be stored on a service lease 119, which may be isolated from the public internet 154.
[0042] Figure 2 This is a block diagram 200 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operator 202 (e.g., Figure 1 Service provider 102) can communicatively couple to secure host lease 204 (e.g., Figure 1 Secure hosting lease 104), the secure hosting lease 204 may include a virtual cloud network (VCN) 206 (e.g., Figure 1 VCN106) and Secure Host Subnet 208 (e.g., Figure 1 The secure host subnet 108). VCN 206 may include a local peering gateway (LPG) 210 (e.g., Figure 1 The LPG 110), VCN 206 can be contained within the secure shell (SSH) VCN 212 (e.g., Figure 1 LPG 110 in SSH VCN 112 is communicatively coupled to SSH VCN 212. SSH VCN 212 may include SSH subnet 214 (e.g., Figure 1 SSH subnet 114), and SSH VCN 212 can be accessed via VCN 216 contained in the control plane (e.g., Figure 1The LPG 210 in the control plane VCN 216 is communicatively coupled to the control plane VCN 216. The control plane VCN 216 may be contained in the service lease 219 (e.g., Figure 1 In the service lease 119), and the data plane VCN 218 (e.g., Figure 1 The data plane VCN 118 may be included in a customer lease 221 that may be owned or operated by a user or customer of the system.
[0043] Control plane VCN 216 may include control plane DMZ layer 220 (e.g., Figure 1 The control plane DMZ layer 120), which may include one or more LB subnets 222 (e.g., Figure 1 (One or more) LB subnets 122), may include (one or more) application subnets 226 (e.g., Figure 1 The control plane application layer 224 of (one or more) application subnets 126 (e.g., Figure 1 The control plane application layer 124) may include one or more database (DB) subnets 230 (e.g., similar to...). Figure 1 The control plane data layer 228 of (one or more) DB subnets 130 (e.g., Figure 1 The control plane data layer 128). One or more LB subnets 222 contained in the control plane DMZ layer 220 can be communicatively coupled to one or more application subnets 226 contained in the control plane application layer 224 and an Internet gateway 234 that can be contained in the control plane VCN 216 (e.g., Figure 1 Internet gateway 134), and application subnet(s) 226 can communicatively couple to DB subnet(s) 230 contained in control plane data layer 228 and service gateway 236 (e.g., Figure 1 Service gateway 136) and Network Address Translation (NAT) gateway 238 (e.g., Figure 1 (NAT gateway 138). The control plane VCN 216 may include the service gateway 236 and the NAT gateway 238.
[0044] The control plane VCN 216 may include a data plane mirror of the application layer 240, which may include one or more application subnets 226 (e.g., Figure 1 The data plane mirror application layer 240). One or more application subnets 226 contained in the data plane mirror application layer 240 may include computational instances 244 (e.g., similar to...). Figure 1The virtual network interface controller (VNIC) 242 (e.g., the VNIC of 142) of the computing instance 144. The computing instance 244 may facilitate the mirroring of the application subnet(s) 226 of the application layer 240 in the data plane and may be included in the application layer 246 in the data plane (e.g., Figure 1 Communication between one or more application subnets 226 in the data plane application layer 146 via VNIC 242 contained in the data plane mirror application layer 240 and VNIC 242 contained in the data plane application layer 246.
[0045] The Internet gateway 234 included in the control plane VCN 216 can be communicatively coupled to the metadata management service 252 (e.g., Figure 1 Metadata management service 252), which can communicatively couple to the public Internet 254 (e.g., Figure 1 The public internet 254 can communicatively couple to a NAT gateway 238 contained in a control plane VCN 216. The service gateway 236 contained in the control plane VCN 216 can communicatively couple to a cloud service 256 (e.g., ...). Figure 1 Cloud services (156).
[0046] In some examples, data plane VCN 218 may be included in customer lease 221. In this case, the IaaS provider may provide control plane VCN 216 for each customer, and the IaaS provider may set up a unique compute instance 244 for each customer, included in service lease 219. Each compute instance 244 may allow communication between control plane VCN 216 included in service lease 219 and data plane VCN 218 included in customer lease 221. Compute instance 244 may allow resources provisioned in control plane VCN 216 included in service lease 219 to be deployed or otherwise used in data plane VCN 218 included in customer lease 221.
[0047] In other examples, an IaaS provider's customer may have a database residing in customer lease 221. In this example, control plane VCN 216 may include data plane mirror application layer 240, which may include one or more application subnets 226. Data plane mirror application layer 240 may reside in data plane VCN 218, but may not reside in data plane VCN 218. In other words, data plane mirror application layer 240 may have access to customer lease 221, but may not reside in data plane VCN 218 or be owned or operated by an IaaS provider's customer. Data plane mirror application layer 240 may be configured to invoke data plane VCN 218, but may not be configured to invoke any entity contained in control plane VCN 216. Customers may expect to deploy or otherwise use resources provided in the control plane VCN 216 in the data plane VCN 218, and the data plane mirroring application layer 240 can facilitate the customer's expected deployment or other use of resources.
[0048] In some embodiments, an IaaS provider's customer may apply filters to data plane VCN 218. In this embodiment, the customer may determine what data plane VCN 218 can access, and the customer may restrict access from data plane VCN 218 to the public Internet 254. The IaaS provider may not be able to apply filters or otherwise control data plane VCN 218's access to any external networks or databases. Applying filters and controls to data plane VCN 218 contained in customer lease 221 helps isolate data plane VCN 218 from other customers and the public Internet 254.
[0049] In some embodiments, cloud service 256 may be invoked by service gateway 236 to access services that may not exist on public internet 254, control plane VCN 216, or data plane VCN 218. The connection between cloud service 256 and control plane VCN 216 or data plane VCN 218 may not be real-time or continuous. Cloud service 256 may reside on different networks owned or operated by an IaaS provider. Cloud service 256 may be configured to receive calls from service gateway 236 and may be configured not to receive calls from public internet 254. Some cloud services 256 may be isolated from other cloud services 256, and control plane VCN 216 may be isolated from cloud services 256 that may not be in the same region as control plane VCN 216. For example, control plane VCN 216 may be located in "Region 1," and cloud service "Deployment 1" may be located in both "Region 1" and "Region 2." If the service gateway 236, contained in the control plane VCN 216 located in region 1, makes a call to deployment 1, then that call can be transmitted to deployment 1 in region 1. In this example, the control plane VCN 216 or deployment 1 in region 1 may not be communicatively coupled to or otherwise communicate with deployment 1 in region 2.
[0050] Figure 3 This is a block diagram 300 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operator 302 (e.g., Figure 1 Service provider 102) can communicatively couple to secure host lease 304 (e.g., Figure 1 Secure hosting lease 104), the secure hosting lease 304 may include a virtual cloud network (VCN) 306 (e.g., Figure 1 VCN106) and Secure Host Subnet 308 (e.g., Figure 1 The secure host subnet 108). VCN 306 may include LPG 310 (e.g., Figure 1 The LPG 110), VCN 306 can be accessed via SSH VCN 312 (e.g., LPG 110), Figure 1 The LPG 310 in SSH VCN 312 is communicatively coupled to SSH VCN 312. SSH VCN 312 may include SSH subnet 314 (e.g., Figure 1 SSH subnet 114), and SSH VCN 312 can be accessed via VCN 316 contained in the control plane (e.g., Figure 1 The LPG 310 in the control plane VCN 316 is communicatively coupled to the control plane VCN 316 and via the data plane VCN 318 (e.g., Figure 1The LPG 310 in the data plane 118 is communicatively coupled to the data plane VCN 318. The control plane VCN 316 and the data plane VCN 318 may be contained in the service lease 319 (e.g., Figure 1 In the service rental (119).
[0051] The control plane VCN 316 may include one or more load balancer (LB) subnets 322 (e.g., Figure 1 The control plane DMZ layer 320 of (one or more) LB subnets 122) (e.g., Figure 1 The control plane DMZ layer 120 may include one or more application subnets 326 (e.g., similar to...). Figure 1 The control plane application layer 324 of (one or more) application subnets 126 (e.g., Figure 1 The control plane application layer 124) may include a control plane data layer 328 (e.g., one or more) of DB subnets 330. Figure 1 The control plane data layer 128). One or more LB subnets 322 contained in the control plane DMZ layer 320 can be communicatively coupled to one or more application subnets 326 contained in the control plane application layer 324 and an Internet gateway 334 that can be contained in the control plane VCN 316 (e.g., Figure 1 Internet gateway 134), and application subnet(s) 326 can communicatively couple to DB subnet(s) 330 contained in control plane data layer 328 and service gateway 336 (e.g., Figure 1 The service gateway) and Network Address Translation (NAT) gateway 338 (e.g., Figure 1 (NAT gateway 138). The control plane VCN 316 may include the service gateway 336 and the NAT gateway 338.
[0052] Data plane VCN 318 may include data plane application layer 346 (e.g., Figure 1 Data plane application layer 146), data plane DMZ layer 348 (e.g., Figure 1 Data plane DMZ layer 148), and data plane data layer 350 (e.g., Figure 1The data plane data layer 150. The data plane DMZ layer 348 may include one or more trusted application subnets 360 and one or more untrusted application subnets 362 communicatively coupled to the data plane application layer 346, and one or more LB subnets 322 of the Internet gateway 334 contained in the data plane VCN 318. One or more trusted application subnets 360 may be communicatively coupled to the service gateway 336 contained in the data plane VCN 318, the NAT gateway 338 contained in the data plane VCN 318, and one or more DB subnets 330 contained in the data plane data layer 350. One or more untrusted application subnets 362 may be communicatively coupled to the service gateway 336 contained in the data plane VCN 318 and one or more DB subnets 330 contained in the data plane data layer 350. The data plane data layer 350 may include one or more DB subnets 330 communicatively coupled to the service gateway 336 contained in the data plane VCN 318.
[0053] One or more untrusted application subnets 362 may include one or more primary VNICs 364(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 366(1)-(N). Each tenant VM 366(1)-(N) may be communicatively coupled to a corresponding application subnet 367(1)-(N) that may be contained in a corresponding container egress VCN 368(1)-(N) that may be contained in a corresponding customer lease 370(1)-(N). A corresponding secondary VNIC 372(1)-(N) may facilitate communication between one or more untrusted application subnets 362 contained in a data plane VCN 318 and application subnets contained in container egress VCN 368(1)-(N). Each container egress VCN 368(1)-(N) may include a NAT gateway 338 that can be communicatively coupled to the public Internet 354 (e.g., Figure 1 The public internet (154).
[0054] The Internet gateway 334, contained in the control plane VCN 316 and the data plane VCN 318, can be communicatively coupled to the metadata management service 352 (e.g., Figure 1The metadata management system 152 can be communicatively coupled to the public internet 354. The public internet 354 can be communicatively coupled to a NAT gateway 338 contained in a control plane VCN 316 and a data plane VCN 318. The service gateway 336 contained in the control plane VCN 316 and the data plane VCN 318 can be communicatively coupled to a cloud service 356.
[0055] In some embodiments, the data plane VCN 318 may be integrated with the customer lease 370. Such integration may be useful or desired by the IaaS provider's customer in certain situations, such as when support may be expected during code execution. The customer may provide code that could be destructive, might communicate with other customer resources, or might otherwise cause undesirable effects. In response, the IaaS provider may determine whether to run the code provided by the customer.
[0056] In some examples, an IaaS provider's customer may grant the IaaS provider temporary network access and request functionality attached to data plane layer application 346. The code running this functionality may execute in VM 366(1)-(N) and may not be configured to run anywhere else on data plane VCN 318. Each VM 366(1)-(N) may be connected to a customer lease 370. The corresponding container 371(1)-(N) contained in VM 366(1)-(N) may be configured to run the code. In this case, dual isolation may exist (e.g., container 371(1)-(N) runs the code, where container 371(1)-(N) may be contained in at least one VM 366(1)-(N) contained in untrusted application subnet 362), which can help prevent incorrect or otherwise unintended code from corrupting the IaaS provider's network or the networks of different customers. Containers 371(1)-(N) may be communicatively coupled to customer lease 370 and may be configured to transmit or receive data from customer lease 370. Containers 371(1)-(N) may not be configured to transmit or receive data from any other entity in the data plane VCN 318. After the code execution is complete, the IaaS provider may terminate or otherwise dispose of containers 371(1)-(N).
[0057] In some embodiments, one or more trusted application subnets 360 may run code that may be owned or operated by an IaaS provider. In this embodiment, one or more trusted application subnets 360 may be communicatively coupled to one or more database subnets 330 and configured to perform CRUD operations in one or more database subnets 330. One or more untrusted application subnets 362 may be communicatively coupled to one or more database subnets 330, but in this embodiment, one or more untrusted application subnets may be configured to perform read operations in one or more database subnets 330. Containers 371(1)-(N) that may be contained in each customer's VM 366(1)-(N) and may run code from the customer may not be communicatively coupled to one or more database subnets 330.
[0058] In other embodiments, the control plane VCN 316 and the data plane VCN 318 may be coupled without direct communication. In this embodiment, there may not be direct communication between the control plane VCN 316 and the data plane VCN 318. However, communication may occur indirectly through at least one method. The LPG 310 may be established by the IaaS provider, which can facilitate communication between the control plane VCN 316 and the data plane VCN 318. In another example, the control plane VCN 316 or the data plane VCN 318 may invoke the cloud service 356 via the service gateway 336. For example, an invocation of the cloud service 356 from the control plane VCN 316 may include a request for a service that can communicate with the data plane VCN 318.
[0059] Figure 4 This is a block diagram 400 illustrating another example pattern of an IaaS architecture according to at least one embodiment. Service operator 402 (e.g., Figure 1 Service provider 102) can communicatively couple to secure host lease 404 (e.g., Figure 1 Secure hosting lease 104), the secure hosting lease 404 may include a Virtual Cloud Network (VCN) 406 (e.g., Figure 1 VCN106) and Secure Host Subnet 408 (e.g., Figure 1 The secure host subnet 108). VCN 406 may include LPG 410 (e.g., Figure 1 The LPG 110), VCN 406 can be accessed via SSH VCN 412 (e.g., LPG 110), Figure 1 The LPG 410 in SSH VCN 412 is communicatively coupled to SSH VCN 412. SSH VCN 412 may include SSH subnet 414 (e.g., Figure 1SSH subnet 114), and SSH VCN 412 can be accessed via VCN 416 contained in the control plane (e.g., Figure 1 The LPG 410 in the control plane VCN 416 is communicatively coupled to the control plane VCN 416 and via the data plane VCN 418 (e.g., Figure 1 LPG 410 in data plane 118 is communicatively coupled to data plane VCN 418. Control plane VCN 416 and data plane VCN 418 may be contained in service lease 419 (e.g., Figure 1 In the service rental (119).
[0060] The control plane VCN 416 may include one or more LB subnets 422 (e.g., Figure 1 The control plane DMZ layer 420 of (one or more) LB subnets 122) (e.g., Figure 1 The control plane DMZ layer 120 may include (one or more) application subnets 426 (e.g., Figure 1 The control plane application layer 424 of (one or more) application subnets 126 (e.g., Figure 1 The control plane application layer 124) may include (one or more) DB subnets 430 (e.g., Figure 3 The control plane data layer 428 of (one or more) DB subnets 330 (e.g., Figure 1 The control plane data layer 128). One or more LB subnets 422 contained in the control plane DMZ layer 420 can be communicatively coupled to one or more application subnets 426 contained in the control plane application layer 424 and an Internet gateway 434 that can be contained in the control plane VCN 416 (e.g., Figure 1 Internet gateway 134), and application subnet 426 (one or more) can communicatively couple to DB subnet 430 (one or more) contained in control plane data layer 428 and service gateway 436 (e.g., Figure 1 The service gateway) and Network Address Translation (NAT) gateway 438 (e.g., Figure 1 (NAT gateway 138). The control plane VCN 416 may include the service gateway 436 and the NAT gateway 438.
[0061] Data plane VCN 418 may include data plane application layer 446 (e.g., Figure 1 Data plane application layer 146), data plane DMZ layer 448 (e.g., Figure 1 Data plane DMZ layer 148), and data plane data layer 450 (e.g., Figure 1The data plane data layer 150). The data plane DMZ layer 448 may include one or more trusted application subnets 460 that can be communicatively coupled to the data plane application layer 446 (e.g., Figure 3 (one or more) trusted application subnets 360 and (one or more) untrusted application subnets 462 (e.g., Figure 3 The data plane includes one or more untrusted application subnets 362 and one or more LB subnets 422 of Internet gateway 434 contained in data plane VCN 418. One or more trusted application subnets 460 may communicatively couple to service gateway 436, NAT gateway 438, and DB subnets 430 contained in data plane VCN 418. One or more untrusted application subnets 462 may communicatively couple to service gateway 436 and DB subnets 430 contained in data plane VCN 418 and data plane data layer 450, respectively. Data plane data layer 450 may include one or more DB subnets 430 that may communicatively couple to service gateway 436 contained in data plane VCN 418.
[0062] One or more untrusted application subnets 462 may include a primary VNIC 464(1)-(N) communicatively coupled to tenant virtual machines (VMs) 466(1)-(N) residing within one or more untrusted application subnets 462. Each tenant VM 466(1)-(N) may run code in a corresponding container 467(1)-(N) and is communicatively coupled to an application subnet 426 that may be contained in a data plane application layer 446, which may be contained in a container egress VCN 468. A corresponding secondary VNIC 472(1)-(N) may facilitate communication between one or more untrusted application subnets 462 contained in a data plane VCN 418 and the application subnets contained in a container egress VCN 468. The container egress VCN may include a public internet 454 (e.g., Figure 1 The public internet (154) uses NAT gateway 438.
[0063] Internet gateway 434, contained in control plane VCN 416 and data plane VCN 418, can be communicatively coupled to metadata management service 452 (e.g., Figure 1A metadata management system 452 can be communicatively coupled to the public internet 454. The public internet 454 can be communicatively coupled to a NAT gateway 438 contained in a control plane VCN 416 and a data plane VCN 418. A service gateway 436 contained in a control plane VCN 416 and a data plane VCN 418 can be communicatively coupled to a cloud service 456.
[0064] In some examples, Figure 4 The architecture shown in block diagram 400 can be considered as Figure 3 This is an exception to the pattern shown in the architecture of block diagram 300, and is likely what the IaaS provider's customers would expect in situations where the IaaS provider cannot communicate directly with the customer (e.g., in a disconnected region). The customer can have real-time access to the corresponding container 467(1)-(N) contained in VM 466(1)-(N). Container 467(1)-(N) can be configured to invoke the corresponding secondary VNIC 472(1)-(N) contained in one or more application subnets 426 of the data plane application layer 446, which may be contained in the container egress VCN 468. The secondary VNIC 472(1)-(N) can transmit the invocation to a NAT gateway 438, which can then transmit the invocation to the public internet 454. In this example, the container 467(1)-(N) that can be accessed by the customer in real-time can be isolated from the control plane VCN 416 and from other entities contained in the data plane VCN 418. Container 467(1)-(N) can also be isolated from resources from other customers.
[0065] In other examples, a client can use containers 467(1)-(N) to invoke cloud service 456. In this example, the client can run code within containers 467(1)-(N) requesting a service from cloud service 456. Container 467(1)-(N) can then transmit the request to a secondary VNIC 472(1)-(N), which can then transmit the request to a NAT gateway, which can then transmit the request to the public internet 454. The public internet 454 can then transmit the request via internet gateway 434 to one or more LB subnets 422 contained in control plane VCN 416. In response to determining that the request is valid, one or more LB subnets can then transmit the request to one or more application subnets 426, which can then transmit the request to cloud service 456 via service gateway 436.
[0066] It should be recognized that the IaaS architectures 100, 200, 300, and 400 depicted in the figures may have components other than those depicted. Furthermore, the embodiments shown in the figures are merely some examples of cloud infrastructure systems that can be incorporated into embodiments of this disclosure. In some other embodiments, the IaaS system may have more or fewer components than shown in the figures, may combine two or more components, or may have different component arrangements or configurations.
[0067] In some embodiments, the IaaS system described herein may include application suites, middleware, and database service offerings delivered to customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such an IaaS system is the Oracle Cloud Infrastructure (OCI) provided by this assignee.
[0068] Figure 5 An example computer system 500, in which various embodiments can be implemented, is illustrated. System 500 can be used to implement any of the computer systems described above. As shown, computer system 500 includes a processing unit 504 that communicates with a plurality of peripheral subsystems via a bus subsystem 502. These peripheral subsystems may include a processing acceleration unit 506, an I / O subsystem 508, a storage subsystem 518, and a communication subsystem 524. Storage subsystem 518 includes a tangible computer-readable storage medium 522 and system memory 510.
[0069] Bus subsystem 502 provides a mechanism for allowing various components and subsystems of computer system 500 to communicate with each other as intended. While bus subsystem 502 is schematically shown as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 502 can be any of several types of bus architectures, including memory buses or memory controllers, peripheral buses, and local buses using any of the various bus architectures. For example, such architectures may include Industry Standard Architecture (ISA) buses, Micro Channel Architecture (MCA) buses, Enhanced ISA (EISA) buses, Video Electronics Standards Association (VESA) local buses, and Peripheral Component Interconnect (PCI) buses, which may be implemented as Mezzanine buses manufactured according to the IEEE P1386.1 standard.
[0070] A processing unit 504, which may be implemented as one or more integrated circuits (e.g., a conventional microprocessor or microcontroller), controls the operation of the computer system 500. One or more processors may be included in the processing unit 504. These processors may include single-core or multi-core processors. In some embodiments, the processing unit 504 may be implemented as one or more independent processing units 532 and / or 534, each including a single-core or multi-core processor. In other embodiments, the processing unit 504 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors into a single chip.
[0071] In various embodiments, processing unit 504 can execute various programs in response to program code and can maintain multiple concurrently executing programs or processes. At any given time, some or all of the program code to be executed can reside in processor(s) 504 and / or storage subsystem 518. With appropriate programming, processor(s) 504 can provide the various functions described above. Computer system 500 may additionally include processing acceleration unit 506, which may include digital signal processor (DSP), dedicated processor, etc.
[0072] I / O subsystem 508 may include user interface input devices and user interface output devices. User interface input devices may include keyboards, pointing devices such as mice or trackballs, touchpads or touchscreens integrated into a display, scroll wheels, click wheels, dials, buttons, switches, keyboards, audio input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may include, for example, motion sensing and / or gesture recognition devices, such as the Microsoft Kinect® motion sensor, which enables users to control and interact with input devices such as the Microsoft Xbox® 360 game controller via a natural user interface using gestures and voice commands. User interface input devices may also include eye gesture recognition devices, such as the Google Glass® blink detector, which detects eye activity from the user (e.g., “blinking” when taking a photo and / or making menu selections) and translates the eye gestures into input for an input device (e.g., Google Glass®). Furthermore, user interface input devices may include voice recognition sensing devices that enable users to interact with a voice recognition system (e.g., the Siri® navigator) via voice commands.
[0073] User interface input devices may also include, but are not limited to, 3D mice, joysticks or pointing sticks, game panels and drawing tablets, and audio / video devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye-tracking devices. Furthermore, user interface input devices may include, for example, medical imaging input devices such as computed tomography (CT), magnetic resonance imaging (MRI), positron emission tomography (PET), and medical ultrasound equipment. User interface input devices may also include, for example, audio input devices such as MIDI keyboards and digital musical instruments.
[0074] User interface output devices may include display subsystems, indicator lights, or non-visual displays such as audio output devices. Display subsystems may be cathode ray tubes (CRTs), flat panel devices such as those using liquid crystal displays (LCDs) or plasma displays, projection devices, touchscreens, etc. Generally, the term "output device" is intended to include all possible types of devices and mechanisms for outputting information from computer system 500 to a user or other computer. For example, user interface output devices may include, but are not limited to, various display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, voice output devices, and modems.
[0075] Computer system 500 may include storage subsystem 518, which provides a tangible, non-transitory, computer-readable storage medium for storing software and data constructs that provide the functionality of the embodiments described in this disclosure. The software may include programs, code modules, instructions, scripts, etc., which, when executed by one or more cores or processors of processing unit 504, provide the aforementioned functionality. Storage subsystem 518 may also provide a repository for storing data used according to this disclosure.
[0076] like Figure 5 As depicted in the example, storage subsystem 518 may include various components, including system memory 510, computer-readable storage medium 522, and computer-readable storage medium reader 520. System memory 510 may store program instructions that can be loaded and executed by processing unit 504. System memory 510 may also store data used during the execution of instructions and / or data generated during the execution of program instructions. Various types of programs may be loaded into system memory 510, including but not limited to client applications, web browsers, middleware applications, relational database management systems (RDBMS), virtual machines, containers, etc.
[0077] System memory 510 may also store operating system 516. Examples of operating system 516 may include various versions of Microsoft Windows®, Apple Macintosh® and / or Linux operating systems, various commercially available UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome® OS, etc.) and / or mobile operating systems such as iOS, Windows® Phone, Android® OS, BlackBerry® OS, and Palm® OS. In some implementations where computer system 500 executes one or more virtual machines, the virtual machine, along with the guest operating system (GOS), may be loaded into system memory 510 and executed by one or more processors or cores of processing unit 504.
[0078] System memory 510 can be configured differently depending on the type of computer system 500. For example, system memory 510 can be volatile memory (such as random access memory (RAM)) and / or non-volatile memory (such as read-only memory (ROM), flash memory, etc.). Different types of RAM configurations can be provided, including static random access memory (SRAM), dynamic random access memory (DRAM), etc. In some embodiments, system memory 510 may include a basic input / output system (BIOS), which contains basic routines such as those that facilitate the transfer of information between components within the computer system 500 during startup.
[0079] Computer-readable storage medium 522 may represent remote, local, fixed and / or removable storage devices and storage media for temporarily and / or more permanently containing and storing computer-readable information for use by computer system 500, including instructions executable by processing unit 504 of computer system 500.
[0080] Computer-readable storage medium 522 may include any suitable medium known or used in the art, including storage and communication media, such as, but not limited to, volatile and non-volatile, removable and non-removable media implemented by any method or technology for storing and / or transmitting information. This may include tangible computer-readable storage media such as RAM, ROM, electrically erasable programmable ROM (EEPROM), flash memory or other memory technologies, CD-ROM, digital versatile disc (DVD) or other optical storage devices, magnetic tape cassettes, magnetic tape, disk storage devices or other magnetic storage devices, or other tangible computer-readable media.
[0081] As an example, computer-readable storage medium 522 may include a hard disk drive that reads or writes to a non-removable non-volatile magnetic medium, a disk drive that reads or writes to a removable non-volatile magnetic disk, and an optical disc drive that reads or writes to a removable non-volatile optical disc (such as a CD-ROM, DVD, and Blu-ray® disc or other optical media). Computer-readable storage medium 522 may include, but is not limited to, Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, digital audio tapes, and so on. Computer-readable storage medium 522 may also include solid-state drives (SSDs) based on non-volatile memory (such as flash memory-based SSDs, enterprise flash drives, solid-state ROMs, etc.), volatile memory-based SSDs (such as solid-state RAM, dynamic RAM, static RAM), DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs using a combination of DRAM-based and flash memory-based SSDs. Disk drives and their associated computer-readable media can provide non-volatile storage for computer-readable instructions, data structures, program services and other data for computer system 500.
[0082] Machine-readable instructions executable by one or more processors or cores of processing unit 504 may be stored on a non-transitory computer-readable storage medium. The non-transitory computer-readable storage medium may include physically tangible memory or storage devices, including volatile memory storage devices and / or non-volatile memory devices. Examples of non-transitory computer-readable storage media include magnetic storage media (e.g., disks or tapes), optical storage media (e.g., DVDs, CDs), various types of RAM, ROM, or flash memory, hard disk drives, floppy disk drives, removable memory drives (e.g., USB drives), or other types of storage devices.
[0083] The communication subsystem 524 provides an interface to other computer systems and networks. The communication subsystem 524 serves as an interface for receiving data from other systems and transmitting data from computer system 500 to other systems. For example, the communication subsystem 524 enables computer system 500 to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 524 may include radio frequency (RF) transceiver components (e.g., advanced data network technologies using cellular telephone technology, such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution), WiFi (IEEE 802.11 series standards), or other mobile communication technologies, or any combination thereof), GPS receiver components, and / or other components for accessing wireless voice and / or data networks. In some embodiments, the communication subsystem 524 may provide a wired network connection (e.g., Ethernet) as an addition to or replacement for the wireless interface.
[0084] In some embodiments, the communication subsystem 524 may also represent one or more users who can use the computer system 500 to receive input communications in the form of structured and / or unstructured data feeds 526, event streams 528, event updates 530, etc.
[0085] For example, the communication subsystem 524 can be configured to receive data feeds 526 in real time from users of social networks and / or other communication services, such as Twitter® feeds, Facebook® updates, web feeds such as Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.
[0086] Furthermore, the communication subsystem 524 can also be configured to receive data in the form of a continuous data stream, which may include an event stream 528 and / or event updates 530 that are essentially continuous or unbounded real-time events without a clearly defined termination. Examples of applications that generate continuous data may include, for example, sensor data applications, financial quotation machines, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, vehicle traffic monitoring, etc.
[0087] The communication subsystem 524 can also be configured to output structured and / or unstructured data feeds 526, event streams 528, event updates 530, etc. to one or more databases, which can communicate with one or more streaming data source computers coupled to the computer system 500.
[0088] The computer system 500 can be one of a variety of types, including handheld portable devices (e.g., iPhone® cellular phones, iPad® computing tablets, PDAs), wearable devices (e.g., Google Glass® head-mounted displays), PCs, workstations, mainframes, information stations, server racks, or any other data processing systems.
[0089] Due to the constantly evolving nature of computers and networks, the description of the computer system 500 depicted in the figures is intended only as a specific example. Many other configurations with more or fewer components than the system depicted in the figures are possible. For example, custom hardware may also be used and / or specific elements may be implemented in hardware, firmware, software (including applets), or a combination thereof. Additionally, connectivity with other computing devices, such as network input / output devices, may be employed. Based on the disclosure and teachings provided herein, those skilled in the art will recognize other ways and / or methods for implementing the various embodiments.
[0090] 3. Programmatic Resupply System Architecture
[0091] Figure 6 A system 600 according to one or more embodiments is illustrated. Figure 6 As shown, system 600 includes a configuration engine 610, a data store 620, a bare-metal system 640, and an interface 650. The configuration engine 610 may include one or more functional components, such as a dependency graph generator 612, a dynamic state machine generator 614, and a component validator 616. In one or more embodiments, system 600 may include a... Figure 6 The diagram shows more or fewer components. Figure 6 The components shown in the diagram can be local or remote to each other. Figure 6 The components illustrated in the diagram can be implemented in software and / or hardware. Each component can be distributed across multiple applications and / or machines. Multiple components can be combined into a single application and / or machine. Operations described for one component can be performed alternatively by another component.
[0092] In one or more embodiments, configuration engine 610 refers to hardware and / or software configured to perform the operations described herein for programmatically re-provisioning a computing platform configuration (referred to as a bare metal system). References below... Figures 7A-7C This describes an example of an operation used to programmatically refeed a bare-metal system.
[0093] In one or more embodiments, configuration engine 610 receives a reprovision request 630 requesting reprovision of bare-metal system 640 via interface 650. Bare-metal system 640 includes one or more computing components 642. The computing components 642 of a given bare-metal system 640 may include, for example, a central processing unit (CPU), a graphics processing unit (GPU), a root trust device (RoT), a network interface card (NIC), volatile memory, non-volatile memory, storage devices, buses, switches, fans, etc.
[0094] Request 630 may include platform definition 632. Platform definition 632 may identify and define each computing component 642 included on the bare-metal system 640 to be reproduced. For a given computing component in the bare-metal system 640, platform definition 632 may include, for example, the computing component's identifier, manufacturer, model or version number, firmware version, and / or driver version. (Reference) Figure 8 Describe an example of a platform definition.
[0095] In one or more embodiments, configuration engine 610 retrieves component configuration 622 for each computing component included in platform definition 632. Component configuration 622 may include specific settings for the characteristics of the computing component. For example, component configuration may include information identifying drivers and / or firmware versions to be installed. Component configuration may identify dependencies of a component on another component. Component configuration may include verification criteria for checking whether the computing component is properly provisioned.
[0096] In one or more embodiments, dependency graph generator 612 refers to hardware and / or software configured to perform the operations described herein for generating dependency graphs. For example, dependency graph generator 612 can create dependency graph nodes for each computing component in platform definition 632 and create directed edges between two nodes based on dependencies from one node to another, according to the component configuration.
[0097] In one or more embodiments, configuration engine 610 retrieves component configuration instructions 624 for each computing component in the platform definition. Configuration instructions 624 for a specific computing component may include code, scripts, or other instructions defining how the component is provisioned for reuse. For example, configuration instructions may include steps to securely erase or wipe data from a device. Configuration instructions may include steps to install or update firmware.
[0098] In one or more embodiments, configuration engine 610 uses retrieved component configuration instructions 624 to generate system configuration instructions 625. System configuration instructions 625 may include retrieved component configuration instructions 624 arranged to be executed in the order indicated by the dependency graph. For example, if component B depends on component A, then system configuration instructions 625 may include component configuration instructions for component A, followed by component configuration instructions for component B. In one or more embodiments, the system configuration instructions may be compiled to generate an executable file. Configuration engine 610 may then execute the system configuration instructions to re-feed the computing components in the bare-metal system.
[0099] In one or more embodiments, the dynamic state machine generator 614 can generate system configuration instructions in the form of a dynamic state machine 629. The dynamic state machine can include state nodes for each node in the dependency graph. When a state's provisioning operation is completed, the dynamic state machine transitions from that state to the next state in the order derived from the dependency graph. The dynamic state machine will include states only for computational components defined in the platform definition.
[0100] In one or more embodiments, the component configuration instructions 624 for a component may include one or more generic drivers 626 and one or more component drivers 628. The generic driver 626 may be an abstract class or interface that defines one or more aspects (such as types, variables, or functions) of the abstract class or interface. A “child” generic driver may extend a “parent” generic driver and add more aspects to the extended parent generic driver. The component driver 628 implements the generic driver and any parent generic driver, providing values for any variables in the implemented generic driver(s) and instructions for any functions in the implemented generic driver(s) to create a usable set of configuration instructions for the computing component. In this way, whenever a new computing component is introduced to system 100, only the component configuration instructions for the new computing component need to be provided for future provisioning. The generic driver provides a standardized interface when generating system configuration instructions.
[0101] For example, a generic SmartNIC driver can abstract operations such as: power on, power off, assertion protection pin on / off, reboot, reading serial number, writing serial number, and installing system applications. A component-specific driver for a manufacturer's SmartNIC will include the actual component configuration instructions for the abstraction, while a second component-specific driver for a different manufacturer's SmartNIC will include different component configuration instructions for the abstracted functions.
[0102] In one or more embodiments, data storage 620 is any type of storage unit and / or device for storing data (e.g., file system, database, collection of tables, or any other storage mechanism). Additionally, data storage 620 may include multiple different storage units and / or devices. These multiple different storage units and / or devices may or may not belong to the same type, or may or may not be located at the same physical site. Furthermore, data storage 620 may be implemented or executed on the same computing system as configuration engine 610. Alternatively, or additionally, data storage 620 may be implemented or executed on a computing system separate from configuration engine 610. Data storage 620 may be coupled to configuration engine 610 via a direct connection or via network communication. Additional embodiments and / or examples related to computer networks are described in Part 7, “Computer Networks and Cloud Networks,” below.
[0103] The information describing component configuration 622, component configuration instructions 624, system configuration instructions 625, general driver 626, component driver 628, and dynamic state machine 629 can be implemented across any component within system 600. However, for clarity and explanation purposes, this information is described in data store 620.
[0104] In this embodiment, the configuration engine 610 is implemented on one or more digital devices. The term "digital device" generally refers to any hardware device that includes a processor. A digital device can refer to a physical device that executes an application or virtual machine. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, function-specific hardware devices, hardware routers, hardware switches, hardware firewalls, hardware network address translation (NAT) devices, hardware load balancers, mainframes, televisions, content receivers, set-top boxes, printers, mobile handheld devices, smartphones, personal digital assistants (PDAs), wireless receivers and / or transmitters, base stations, communication management equipment, routers, switches, controllers, access points, and / or client devices.
[0105] In one or more embodiments, interface 650 refers to hardware and / or software configured to facilitate communication between a user and configuration engine 610. Interface 650 renders user interface elements and receives input via these elements. Examples of interfaces include graphical user interfaces (GUIs), command-line interfaces (CLIs), haptic interfaces, and voice command interfaces. Examples of user interface elements include checkboxes, radio buttons, drop-down lists, list boxes, buttons, toggle switches, text fields, date and time pickers, command lines, sliders, pages, and forms.
[0106] In this embodiment, the different components of interface 650 are specified in different languages. The behavior of user interface elements is specified using a dynamic programming language such as JavaScript. The content of user interface elements is specified using a markup language such as Hypertext Markup Language (HTML) or XML User Interface Language (XUL). The layout of user interface elements is specified using a style sheet language such as Cascading Style Sheets (CSS). Alternatively, interface 650 is specified using one or more other languages such as Java, C, or C++.
[0107] 4. Re-supply the bare-metal system via programming.
[0108] Figures 7A-7C The illustrations show a collection of examples of operations for programmatically refeeding a bare-metal system according to one or more embodiments. Figures 7A-7C One or more operations shown can be modified, rearranged, or omitted entirely. Accordingly, they should not be... Figures 7A-7C The specific operation sequence shown is interpreted as limiting the scope of one or more embodiments.
[0109] The system can receive a request to re-provision a bare-metal system comprising a set of computing components (Operation 702). The request may include platform definitions for the computing components. The request may be received via an interface. The request may be submitted by a client returning the bare-metal system to a cloud service provider for reuse, or it may be programmatically triggered by the system when the client returns the bare-metal system. In one or more embodiments, the request indicates that any data on the computing components in the platform definition should be erased (“erase”) and that the latest version of firmware and / or drivers should be installed. In other embodiments, the request may also specify a particular version of firmware or drivers that should be installed for the computing components in the platform definition. The platform definition may be provided as, for example, a list of computing components in the request. Alternatively, the platform definition may be provided in the request as a link, reference, or pointer to a platform definition stored elsewhere.
[0110] The system can select computing components in the platform definition (operation 704). In some embodiments, the system can programmatically start from the first element in the platform definition. Alternatively, the system can programmatically select a specific computing component first, regardless of where that computing component appears in the platform definition. For example, the system can first select the root of trust (RoT) component.
[0111] The system can determine whether a selected computing component has sub-components (operation 706). Some computing components (e.g., a network interface controller (NIC)) may themselves be a collection of computing components including processors and memory. In some embodiments, the platform definition of such a computing component may include sub-components within the platform definition, and the system can programmatically examine the sub-components within each computing component. In other embodiments, the system can programmatically parse or examine the component configuration of a computing component to determine whether the computing component has sub-components.
[0112] When the selected component has no sub-components, the system can retrieve the component configuration of the selected component (operation 708). For example, the system can programmatically identify the component part number in the platform definition. A component part number is a unique part number assigned to a type of component. The system can use the component part number to programmatically generate and execute queries on a database or other data repository to retrieve the corresponding component configuration, including specific characteristics of the computing component. Characteristics may include, for example, which component configuration instructions are used, which firmware version is installed, and / or the expected number of the computing component. The component configuration may include indications of the computing component's dependencies on another computing component. The component configuration can identify another computing component that is a compatible part of the selected computing component. The compatible part may have component configuration instructions that can be used with the computing components it is compatible with.
[0113] The system can determine whether any remaining components exist in the platform definition (operation 710). If any remaining components exist, the system returns to operation 704 to select another computing component.
[0114] When a component has child components, the system can select the child components and retrieve the component configuration of the selected child components as in operation 708 (operation 714).
[0115] The system can determine whether any remaining child components exist within the selected component (operation 716). If remaining child components exist, the system returns to operation 714. If no remaining child components exist, the system continues to operation 710.
[0116] When no remaining components exist in the platform definition, the system can programmatically generate a dependency graph (Operation 712). The system can programmatically access each compute configuration and create a dependency graph node for each compute component in the platform definition, adding that node to the set of nodes. The system can iteratively execute code that identifies the dependency of each compute component on another compute component. When a dependency exists, the system can create a directed edge connecting the two nodes to indicate the dependency between the two components. The system can repeat this process until no new nodes or new directed edges are created. In this context, a dependency can indicate that a compute component must wait for the compute component it depends on to be provisioned before the dependent compute component can be provisioned.
[0117] The system can be programmed to group interdependent components into component groups. A component group is a group of dependent components placed together. For example, a BMC group may contain a root of trust (RoT) device and BMCs that depend on the RoT. A network group may contain NICs, smart NICs, and any network peripheral components that communicate with the bare-metal system. A graphics processing unit (GPU) group may contain GPUs, NICs, and solid-state drives (SSDs). In one or more embodiments, a BMC group or at least a RoT computing component does not depend on any other group and has at least one other group or computing component that depends on it.
[0118] The system can select a component configuration from the retrieved component configurations (Operation 718). For example, the system can first select the component configuration corresponding to the first element in the platform definition or the root node in the dependency graph. Subsequent selections can be made according to the order in the platform definition or the order in the dependency graph.
[0119] The system can retrieve component configuration instructions (operation 720) for configuring a component according to the selected component configuration. In one or more embodiments, the system generates and executes a query based on the component part number and / or other information defined from the platform to retrieve the component configuration instructions corresponding to the component configuration. For example, if the component configuration specifies a firmware version for the computing component, then the system can retrieve component configuration instructions that use the specified firmware version.
[0120] The system can determine whether there are any remaining component configurations to retrieve (operation 722). If there are remaining component configurations to retrieve, the system returns to operation 718.
[0121] When no remaining component configurations are available for retrieval, the system generates system configuration instructions based on component configuration instructions and the dependency graph (operation 724). The system can create a file or other data structure and add the component configuration instructions for each compute component as a single set of instructions to that file or data structure. Component configuration instructions can be arranged in a specific order, such that the instruction corresponding to the root node in the dependency graph is executed first, and component configuration instructions for compute components that depend on the root node compute component appear after the first instruction. Some component configuration instructions may include two or more processes, such as erase processes, firmware install / update processes, and verification processes. These processes may have dependencies that create sorting requirements. The system can use process dependencies when sorting system configuration instructions.
[0122] In one or more embodiments, when two computing components or groups of components do not depend on each other, the system configuration component may include a set of parallel instructions that can be executed independently of each other. In one or more embodiments, the system may compile the system configuration instructions into an executable file.
[0123] The system can re-provision computing components by executing system configuration instructions (Operation 726). For example, in a bare-metal system where the RoT must be updated before the BMC can be erased, the system can connect to the RoT directly or via a network and execute the portion of the system configuration instructions corresponding to updating the firmware on the RoT. The system can perform a query on a data repository to retrieve the firmware for the RoT and then write that firmware to the RoT. Once the RoT firmware is updated, the system can execute the portion of the system configuration instructions corresponding to erasing the BMC via the connection to the RoT. The system can erase the data on the BMC, for example, by setting all bits to the same value. Once the system configuration instructions corresponding to the BMC group have been executed, the system can execute the system configuration instructions corresponding to the GPU group and the system configuration instructions corresponding to the network group in parallel. For example, the system can erase the SmartNIC and retrieve and update the firmware on the GPU in parallel.
[0124] The system can verify the re-provisioned compute components (Operation 728). The component configuration of each compute component can provide criteria for verifying that the compute component has been correctly provisioned. Verification criteria may include, for example: firmware version; firmware name; and a count of the number of compute components in the bare metal system. For compute components that depend on another compute component, verification criteria may include methods for checking that the dependency is correct. For storage devices, the system can verify or confirm that the storage device has been erased. For network components, the system can test that the compute component can connect to the network. The system can verify that specified values are set in the bare metal system, such as a specific MAC address, IP address, or boot volume.
[0125] Component configuration instructions can include verification methods for the corresponding computing component. The system can pass parameters to the verification method, including values that the system uses to supply the computing component.
[0126] In one or more embodiments, the system can verify each computing component or component group after the component or group has been supplied and before the next component or component group has been supplied.
[0127] In one or more embodiments, one or more of the verification steps may fail. Verification may fail when the verification criteria for the computing component are not met after provisioning. Verification may fail when an error occurs in the provisioning or if the computing component is defective. Verification may fail if dependencies are incorrectly defined or insufficiently defined, or if two computing components are incompatible. Other operations may fail, such as when the system cannot retrieve the component configuration. This may occur because the component configuration of the computing component is missing, or because of errors in the part number or other identification information in the platform definition. When a failure occurs, the system may, for example, present a notification that a failure has occurred via an interface and may include information about the affected computing component and the nature of the failure.
[0128] In one or more embodiments, component configuration instructions may generally correspond to the type of computing component, such as a SmartNIC or GPU, rather than being specific to a particular computing component. The system can generate system configuration instructions by using information from the component configuration and component-specific drivers to customize the component configuration instructions for a specific computing component. For example, the manufacturer and firmware version indicated for a computing component can be passed as variables to the component configuration instructions for that computing component, and then those instructions can be used to generate system configuration instructions.
[0129] Figure 7C The illustration shows a set of example operations used to operate the 720 when using generic drivers and component-specific drivers.
[0130] The system can identify a component class (operation 742) that includes a computing component (target component) corresponding to the component configuration selected in operation 718. The component class can correspond to the type of the computing component, such as a SmartNIC or a CPU. The component configuration of a specific computing component can include a field containing that class, and the system can programmatically extract the class from that field. Alternatively, the part number of the computing component can be mapped to a component class, and the system can use that part number to query the mapping to retrieve the component class.
[0131] The system can retrieve the generic driver associated with the component class, as well as the component-specific driver that implements the generic driver and is associated with the target component (Operation 744). For SmartNIC computing components, the system can retrieve the SmartNIC generic driver.
[0132] The system can generate component configuration instructions for a target component based on an instance of a component-specific driver that implements a generic driver (Operation 746). The system can use values provided in the component configuration, such as firmware version, manufacturer name, and / or firmware file, to select and implement a component-specific driver based on the generic driver, along with any specific values provided by the generic driver.
[0133] Some computing components can exhibit different behaviors depending on their firmware version. For example, a NIC with one firmware version and working with one type of CPU architecture can act as a single-interface NIC, while a NIC with a different type of CPU architecture and a different firmware version can act as a dual-interface NIC. The system can have different component-specific drivers for each of these behaviors, and the architecture parameters in the platform definition can be used to select which component-specific driver to use.
[0134] 5. Example Implementation
[0135] For clarity, detailed examples are described below. The components and / or operations described below should be understood as a specific example that may not be applicable to some embodiments. Accordingly, the components and / or operations described below should not be construed as limiting the scope of any claims.
[0136] Figure 8 The illustration shows an example of a platform definition 832 for a bare-metal system. Platform definition 832 can be a list, vector, array, or other collection of elements defining computing components for a particular bare-metal system. Each element in the platform definition can include the part number of the corresponding computing component, where each type of computing component has a unique part number.
[0137] For example, a platform definition may include one or more of Central Processing Unit (CPU) type 802, Root of Trust (RoT) device type 804, and Graphics Processing Unit (GPU) type 806. Each of elements 802, 804, 806, and 808 may specify the architecture of the corresponding computing component on the bare-metal system, such as manufacturer, model, and / or version number. Platform definition 832 may include Intelligent Network Interface Controller (NIC) type 808 and / or Host NIC type 810.
[0138] The platform definition may include Non-volatile Memory Express (NVME) type 812, specifying the manufacturer, size, and quantity of NVMEs on the bare metal system. The platform definition may include Input / Output Module (IOM) type 814, specifying the manufacturer of the IOM devices that connect to the storage devices on the bare metal system. The platform definition may include Memory type 816, specifying the quantity and type of memory on the bare metal system. The platform definition may include Fan type 818 and Switch type 820, specifying the number of fans on the system used for temperature control and the number and type of switches connecting computing components to the network infrastructure on the bare metal system, respectively.
[0139] The platform definition may include Host Bus Adapter (HBA) type 822 and Hard Disk Drive (HDD) element 824. HBA type 822 may specify the manufacturer and / or type of the HBA used to connect a large number of disk drives. The HDD element may include the number of disk drives on the bare metal system, the capacity of each disk drive, and / or the manufacturer of each disk drive.
[0140] The platform definition may include specifying the disk manufacturer, the number of disks, and the corresponding size of the Serial Attached SCSI (SAS) disk type 826. The platform definition may include specifying the type of Baseboard Management Controller (BMC) device 828.
[0141] The platform definition may also include firmware metadata 829. Firmware metadata 829 may include manufacturer release files for one or more computing components included in the platform definition.
[0142] A platform definition may include fewer elements than those described. For example, a platform definition may include only elements for computing components that need to be erased and / or updated. A platform definition may include multiple elements for the same type of computing component. For example, if the corresponding bare-metal system includes multiple hard drives, then the platform definition may include a separate element for each individual drive. Alternatively, if the corresponding bare-metal system includes multiple instances of the same computing component (e.g., multiple CPUs), then the platform definition may include one element for that computing component, indicating the number of computing components in that element.
[0143] In one or more embodiments, two or more computing components may be grouped together as a collection of sub-components. For example, a computing component that includes a collection of storage disks (referred to as a “simple disk bundle” or JBOD) may include disks, host bus adapters (HBAs), and input / output modules (IOMs) as sub-components. Accordingly, the platform definition may include a separate platform definition for the JBOD, which may include sub-components (e.g., nested within a platform definition for the JBOD).
[0144] Figure 9 An example of dependency graph 900 is illustrated. Dependency graph 900 includes BMC group node 910, network group node 920, and GPU group node 930. BMC group node 910 is the root node. As indicated by directed edge 915, network group node 920 depends on BMC group node 910. As indicated by directed edge 917, GPU group node 930 depends on BMC group node 910. There is no directed edge between nodes 920 and 930 because there is no dependency between these two nodes.
[0145] Dependency diagram 900 also includes an ordered set of operations to be performed in each group. For example, in the BMC group, the RoT firmware is erased first. Next, the BMC is erased cleanly. Finally, the RoT and BMC are verified. When generating system configuration instructions, the system can assemble the RoT firmware erase instruction from the RoT component configuration instruction, followed by the BMC erase instruction from the BMC component configuration instruction, and then the verification instruction.
[0146] Similarly, the network group and the GPU group each have their own ordered set of operations. Although operations within a component group can depend on operations within another group, because the component groups are independent of each other, operations in the network group can be executed in parallel with operations in the GPU group, but both groups must wait for the BMC group operations to complete.
[0147] 6. Practical applications, advantages, and improvements
[0148] Securely redeploying bare-metal systems to cloud services and preparing them for onboarding based on customer needs has become a challenge. To securely onboard a bare-metal system, it must be erased and updated with firmware to the highest applicable security standards. The conventional approach is to erase and update the bare-metal system as a static configuration of the computing component. When the configuration changes, a new redeployment process needs to be created for the new configuration. This results in time-consuming processing when erasing and updating the bare-metal system for onboarding.
[0149] Replacing the process of reproducing configurations from a static, monolithic approach with component-by-component redeployment allows for modular and scalable redeployment, significantly reducing the amount of time required to securely erase and update bare-metal systems with new components. When a new compute component is introduced, the system can provision and configure any bare-metal system that includes that new compute component once the component configuration and component configuration instructions for the new compute component are added to the system.
[0150] 7. Computer networks and cloud networks
[0151] In one or more embodiments, a computer network provides connectivity between a set of nodes. Nodes may be local to each other and / or geographically distant. Nodes are connected via a set of links. Examples of links include coaxial cable, unshielded twisted-pair cable, copper cable, fiber optic cable, and virtual links.
[0152] A subset of nodes implements a computer network. Examples of such nodes include switches, routers, firewalls, and Network Address Translation (NAT). Another subset of nodes uses a computer network. Such nodes (also called "hosts") can execute client processes and / or server processes. Client processes make requests for computing services, such as the execution of a specific application and / or the storage of a specific amount of data. Server processes respond by performing the requested service and / or returning the corresponding data.
[0153] A computer network can be a physical network, including physical nodes connected by physical links. A physical node is any digital device. A physical node can be a function-specific hardware device, such as a hardware switch, hardware router, hardware firewall, and hardware NAT. Additionally or alternatively, a physical node can be a general-purpose machine configured to perform various virtual machines and / or applications to perform corresponding functions. A physical link is the physical medium connecting two or more physical nodes. Examples of links include coaxial cable, unshielded twisted-pair cable, copper cable, and fiber optic cable.
[0154] Computer networks can be overlay networks. An overlay network is a logical network implemented on top of another network, such as a physical network. Each node in the overlay network corresponds to a corresponding node in the underlying network. Therefore, each node in the overlay network is associated with both an overlay address (used to address the overlay node) and an underlying address (used to address the underlying node that implements the overlay node). Overlay nodes can be digital devices and / or software processes (such as virtual machines, application instances, or threads). The links connecting overlay nodes are implemented as tunnels through the underlying network. Overlay nodes at either end of the tunnel treat the underlying multi-hop path between them as a single logical link. Tunneling is performed through encapsulation and decapsulation.
[0155] In this embodiment, the client may be located locally on the computer network and / or remotely on the computer network. The client may access the computer network via other computer networks, such as a private network or the Internet. The client may use a communication protocol, such as Hypertext Transfer Protocol (HTTP), to transmit requests to the computer network. Requests may be transmitted through interfaces such as client interfaces (such as web browsers), program interfaces, or application programming interfaces (APIs).
[0156] In this embodiment, a computer network provides connectivity between clients and network resources. Network resources include hardware and / or software configured to execute server processes. Examples of network resources include processors, data storage devices, virtual machines, containers, and / or software applications. Network resources are shared among multiple clients. Clients independently request computing services from the computer network. Network resources are dynamically allocated to requesting and / or clients on demand. The network resources allocated to each requesting and / or client can be scaled up or down based on, for example, (a) computing services requested by a specific client, (b) aggregated computing services requested by a specific tenant, and / or (c) the requested aggregated computing services of the computer network. Such a computer network may be referred to as a "cloud network."
[0157] In this embodiment, the service provider offers a cloud network to one or more end users. The cloud network can implement various service models, including but not limited to Software as a Service (SaaS), Platform as a Service (PaaS), and Infrastructure as a Service (IaaS). In SaaS, the service provider offers end users the ability to use applications running on the service provider's network resources. In PaaS, the service provider offers end users the ability to deploy custom applications onto network resources. Custom applications can be created using programming languages, libraries, services, and tools supported by the service provider. In IaaS, the service provider offers end users the ability to supply processing, storage, networking, and other basic computing resources provided by the network resources. Any application, including operating systems, can be deployed on the network resources.
[0158] In embodiments, computer networks can implement various deployment models, including but not limited to private clouds, public clouds, and hybrid clouds. In a private cloud, network resources are provisioned to a specific group of one or more entities (as used herein, an "entity" refers to a company, organization, person, or other entity) for exclusive use. Network resources can be located locally and / or remotely from the premises of the specific entity group. In a public cloud, cloud resources are provisioned to multiple entities (also referred to as "tenants" or "customers") that are independent of each other. The computer network and its network resources are accessed by clients corresponding to different tenants. Such a computer network can be referred to as a "multi-tenant computer network." Several tenants can use the same specific network resources at different times and / or at the same time. Network resources can be located locally and / or remotely from the tenant's premises. In a hybrid cloud, the computer network includes both private and public clouds. The interface between the private and public clouds allows for the portability of data and applications. Data stored in the private cloud and data stored in the public cloud can be exchanged through the interface. Applications implemented in the private cloud and applications implemented in the public cloud may be dependent on each other. You can use an interface to make calls from an application in a private cloud to an application in a public cloud (and vice versa).
[0159] In this embodiment, the tenants of a multi-tenant computer network are independent of each other. For example, one tenant's business or operations may be separate from those of another tenant. Different tenants may have different network requirements for the computer network. Examples of network requirements include processing speed, data storage capacity, security requirements, performance requirements, throughput requirements, latency requirements, resilience requirements, quality of service (QoS) requirements, tenant isolation, and / or consistency. The same computer network may need to meet the different network requirements needed by different tenants.
[0160] In one or more embodiments, in a multi-tenant computer network, tenant isolation is implemented to ensure that applications and / or data from different tenants are not shared with each other. Various tenant isolation methods can be used.
[0161] In this embodiment, each tenant is associated with a tenant ID. Each network resource in a multi-tenant computer network is tagged with a tenant ID. A tenant is only allowed access to a specific network resource if the tenant and the specific network resource are associated with the same tenant ID.
[0162] In this embodiment, each tenant is associated with a tenant ID. Each application implemented by the computer network is tagged with a tenant ID. Additionally or alternatively, each data structure and / or dataset stored by the computer network is tagged with a tenant ID. A tenant is allowed access to a specific application, data structure, and / or dataset only if the tenant and the specific application, data structure, and / or dataset are associated with the same tenant ID.
[0163] As an example, each database implemented in a multi-tenant computer network can be identified by a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a specific database. As another example, each entry in a database implemented in a multi-tenant computer network can be identified by a tenant ID. Only the tenant associated with the corresponding tenant ID can access the data in a specific entry. However, the database can be shared by multiple tenants.
[0164] In this embodiment, the subscription list indicates which tenants are authorized to access which applications. For each application, a list of tenant IDs of tenants authorized to access that application is stored. A tenant is only allowed to access a specific application if its tenant ID is included in the subscription list corresponding to that specific application.
[0165] In this embodiment, network resources (such as digital devices, virtual machines, application instances, and threads) corresponding to different tenants are isolated to tenant-specific overlay networks maintained by a multi-tenant computer network. As an example, data packets from any source device within a tenant overlay network may only be transmitted to other devices within the same tenant overlay network. Encapsulation tunnels are used to prevent any transmission from a source device on one tenant overlay network to devices in other tenant overlay networks. Specifically, data packets received from a source device are encapsulated within an outer data packet. The outer data packet is transmitted from a first encapsulation tunnel endpoint (communicating with the source device in the tenant overlay network) to a second encapsulation tunnel endpoint (communicating with the destination device in the tenant overlay network). The second encapsulation tunnel endpoint decapsulates the outer data packet to obtain the original data packet transmitted by the source device. The original data packet is transmitted from the second encapsulation tunnel endpoint to the destination device within the same specific overlay network.
[0166] 8. Other matters; extension
[0167] The embodiments are directed to a system having one or more devices, which include a hardware processor and are configured to perform any of the operations described herein and / or any of the following claims.
[0168] In an embodiment, the non-transitory computer-readable storage medium includes instructions that, when executed by one or more hardware processors, cause to perform any of the operations described herein and / or any of the claims.
[0169] While specific embodiments have been described, various modifications, alterations, alternative constructions, and equivalents are also included within the scope of this disclosure. The embodiments are not limited to operation within certain specific data processing environments, but can be freely operated within multiple data processing environments. Furthermore, although the embodiments have been described using a specific series of transactions and steps, those skilled in the art will understand that the scope of this disclosure is not limited to the described series of transactions and steps. Various features and aspects of the above embodiments can be used individually or in combination.
[0170] Furthermore, while embodiments have been described using specific combinations of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of this disclosure. Embodiments may be implemented using only hardware, or only software, or a combination thereof. The various processes described herein can be implemented in any combination on the same processor or on different processors. Thus, where a component or service is described as being configured to perform certain operations, such configuration can be accomplished, for example, by designing electronic circuits, by programming programmable electronic circuits (such as microprocessors), or by any combination thereof. Processes may communicate using a variety of technologies, including but not limited to conventional technologies for inter-process communication, and different pairs of processes may use different technologies, or the same pair of processes may use different technologies at different times.
[0171] Therefore, the specification and drawings are to be considered illustrative rather than restrictive. However, additions, omissions, deletions, and other modifications and changes may be made therein without departing from the broader spirit and scope set forth in the claims. Thus, while specific disclosed embodiments have been described, they are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.
[0172] In the context of describing the disclosed embodiments (particularly in the context of the following claims), the terms “a,” “an,” and “the,” and similar designations, should be interpreted as encompassing both the singular and plural, unless otherwise indicated herein or clearly contradicted by the context. Unless otherwise stated, the terms “comprising,” “having,” “including,” and “containing” should be interpreted as open-ended terms (i.e., meaning “including but not limited to”). The term “connected” should be interpreted as partially or wholly contained, attached to, or joined together, even if something exists in between. Unless otherwise indicated herein, the description of value ranges herein is intended only as a concise way of referring to each individual value falling within that range, and each individual value is incorporated into the specification as if it were described separately herein. Unless otherwise indicated herein or clearly contradicted by the context, all methods described herein can be performed in any suitable order. Unless otherwise stated, the use of any and all examples or exemplary language (e.g., “such as”) provided herein is intended only to better illustrate the embodiments and does not constitute a limitation on the scope of this disclosure. No language in the specification should be construed as indicating that any unclaimed element is essential to the practice of this disclosure.
[0173] Unless otherwise expressly stated, disjunctive language (such as the phrase "at least one of X, Y, or Z") is intended to be understood in context as a general indication that an item, term, etc., can be any one of X, Y, or Z or any combination thereof (e.g., X, Y, and / or Z). Therefore, such disjunctive language is generally not intended, nor should it imply, that certain embodiments require the presence of at least one of X, at least one of Y, or at least one of Z, each individually.
[0174] This document describes preferred embodiments of the present disclosure, including the best modes known for carrying out the present disclosure. Variations of these preferred embodiments will become apparent to those skilled in the art upon reading the foregoing description. Those skilled in the art should be able to suitably employ such variations and may practice the present disclosure in ways other than those specifically described herein. Thus, the present disclosure includes all modifications and equivalents to the subject matter recited in the appended claims, where permitted by applicable law. Furthermore, unless otherwise indicated herein, the present disclosure includes any combination of the foregoing elements in all possible variations.
[0175] All references cited in this article (including publications, patent applications and patents) are incorporated into this article by reference to the same extent as if each reference were individually and specifically incorporated by reference and elaborated in the entire article.
[0176] In the foregoing specification, various aspects of this disclosure have been described with reference to specific embodiments thereof; however, those skilled in the art will recognize that this disclosure is not limited thereto. The various features and aspects of the foregoing disclosure may be used individually or in combination. Furthermore, embodiments may be used in any number of environments and applications other than those described herein without departing from the broader spirit and scope of this specification. Therefore, this specification and the accompanying drawings should be considered illustrative rather than restrictive.
[0177] According to one or more embodiments, any combination of the features and functions described herein may be used. In the foregoing specification, embodiments have been described with reference to numerous specific details, which may vary depending on the implementation. Therefore, the specification and drawings should be viewed in an illustrative rather than restrictive sense. The sole and exclusive indication of the scope of the invention, and what the applicant intends to define as the scope of the invention, is the literal and equivalent scope of the claims generated in the specific form of the set of claims arising from this application, including any subsequent corrections.
Claims
1. One or more non-transitory computer-readable media, including instructions that, when executed by one or more hardware processors, cause to perform operations including: Receive a request to re-provision a bare-metal system, the request including platform definitions for multiple computing components in the bare-metal system; Retrieve a first component configuration for a first computing component among the plurality of computing components and a second component configuration for a second computing component among the plurality of computing components, wherein the second component configuration identifies a first dependency of the second computing component on the first computing component; Generate a dependency graph programmatically, including the first dependency of the second computing component on the first computing component; Retrieve a first set of component configuration instructions for configuring a first computing component according to a first component configuration and a second set of component configuration instructions for configuring a second computing component according to a second component configuration; System configuration instructions are generated based on a first set of component configuration instructions, a second set of component configuration instructions, and a dependency graph, wherein, according to the dependency graph, (a) the first part of the system configuration instructions corresponding to the first set of component configuration instructions precedes (b) the second part of the system configuration instructions corresponding to the second set of component configuration instructions; as well as The bare-metal system is re-provisioned by executing system configuration commands.
2. The non-transient medium as described in claim 1, further comprising: Retrieve a third component configuration for a third computing component among the plurality of computing components, wherein the second component configuration identifies a second dependency of the second computing component on the third computing component; Generate a second dependency graph, which includes a first dependency of the second computing component on the first computing component and a second dependency of the second computing component on the third computing component; Retrieve a third set of component configuration instructions for reconfiguring a third computing component based on the third component configuration; A second system configuration instruction is generated based on a first set of component configuration instructions, a second set of component configuration instructions, a third set of component configuration instructions, and a dependency graph. According to the dependency graph, the first part of the second system configuration instruction corresponding to the first set of component configuration instructions and the third part of the second system configuration instruction corresponding to the third set of component configuration instructions precede the second part of the system configuration instruction. as well as The bare metal system is re-provisioned by executing the second system configuration command.
3. The non-transient medium as described in claim 1, further comprising: Retrieve a third component configuration for a third computing component among the plurality of computing components, wherein the second component configuration identifies a second dependency of the third computing component on the first computing component; Generate a second dependency graph, which includes a first dependency of the second computing component on the first computing component and a second dependency of the third computing component on the first computing component; Retrieve a third set of component configuration instructions for reconfiguring a third computing component based on the third component configuration; A second system configuration instruction is generated based on a first set of component configuration instructions, a second set of component configuration instructions, a third set of component configuration instructions, and a dependency graph. The first part of the second system configuration instruction corresponding to the first set of component configuration instructions precedes both the second part of the system configuration instruction corresponding to the second set of component configuration instructions and the third part of the second system configuration instruction corresponding to the third set of component configuration instructions. The second and third parts are operable for parallel execution. as well as The bare metal system is re-provisioned by executing the second system configuration command.
4. The non-transient medium as described in claim 1, wherein the operation further includes: After generating the system configuration instructions, the system configuration instructions are compiled to generate an executable file, and executing the system configuration instructions includes executing the executable file.
5. The non-transient medium as described in claim 1, wherein the operation further comprises: After the bare metal system is resupplyed, the plurality of computing components are divided into a first subgroup of computing components and a second subgroup of computing components, such that computing components in the first subgroup do not depend on other computing components not in the first subgroup and computing components in the second subgroup of computing components do not depend on the second subgroup of computing components. as well as The plurality of computing components are verified in sequence by at least the following operations: Verify the first subgroup of the computing components; and After validating the first subgroup of the computing components, validate the second subgroup of the computing components.
6. The non-transient medium as described in claim 1, wherein the operation further comprises: After resupplying the bare-metal system, attempts were made to verify the multiple computing components; In response to the failure to verify the second component, a notification corresponding to at least one of the first component configuration or the second component configuration is presented.
7. The non-transient medium of claim 1, wherein resupplying the first component and the second component comprises: A dynamic state machine is generated based on the dependency graph, the first set of retrieved component configuration directives, and the second set of component configuration directives. as well as Execute the dynamic state machine.
8. The non-transient medium as described in claim 1, wherein the operation further comprises: Retrieve a third component configuration for a third computing component among the plurality of computing components, the third component configuration identifying that the third computing component has no dependency on the first computing component or the second computing component; The first computing component and the second computing component are grouped into the first component group, and the third computing component is grouped into the second component group; as well as Generate a second dependency graph between the first component group and the second component group.
9. The non-transient medium as described in claim 1, further comprising: Retrieve a third component configuration for a third computing component among the plurality of computing components, the third component configuration identifying a second dependency of the third computing component on the first computing component and a third dependency of the third computing component on the second computing component; Generate a second dependency graph, which includes the first dependency, second dependency, and third dependency of the second computing component on the first computing component; It is determined that the third computing component does not have a corresponding third set of component configuration instructions; Identify the fourth compatible computing component from the third component configuration; Retrieve the fourth set of component configuration instructions for the fourth compatible computing component; as well as Based on the first set of component configuration instructions, the second set of component configuration instructions, the fourth set of component configuration instructions, and the dependency graph, a second system configuration instruction is generated. as well as The bare metal system is re-provisioned by executing the second system configuration command.
10. The non-transient medium of claim 1, wherein generating the dependency graph programmatically comprises: The code to be executed is: Iterate through multiple configurations, including the first component configuration and the second component configuration; Generate a first node corresponding to the first computing component, a second node corresponding to the second computing component, and a directed edge indicating the first dependency connecting the first node to the second node.
11. A method comprising the operation as described in any one of claims 1-10.
12. A system comprising: At least one device, including a hardware processor; The system is configured to perform the operations described in any one of claims 1-10.