CN111936974A - 将现有虚拟计算资源采纳到用于管理操作的逻辑容器中 - Google Patents
将现有虚拟计算资源采纳到用于管理操作的逻辑容器中 Download PDFInfo
- Publication number
- CN111936974A CN111936974A CN201980020972.8A CN201980020972A CN111936974A CN 111936974 A CN111936974 A CN 111936974A CN 201980020972 A CN201980020972 A CN 201980020972A CN 111936974 A CN111936974 A CN 111936974A
- Authority
- CN
- China
- Prior art keywords
- resource
- virtual
- instance
- template
- logical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000006978 adaptation Effects 0.000 title description 2
- 238000007726 management method Methods 0.000 claims description 145
- 238000000034 method Methods 0.000 claims description 81
- 238000013468 resource allocation Methods 0.000 claims description 39
- 230000015654 memory Effects 0.000 claims description 22
- 238000012545 processing Methods 0.000 description 28
- 230000008569 process Effects 0.000 description 27
- 238000004891 communication Methods 0.000 description 25
- 101710181757 1,2-dihydroxy-3-keto-5-methylthiopentene dioxygenase Proteins 0.000 description 20
- 101710094863 Acireductone dioxygenase Proteins 0.000 description 20
- 230000009466 transformation Effects 0.000 description 19
- 230000009471 action Effects 0.000 description 17
- 238000010586 diagram Methods 0.000 description 12
- 230000004044 response Effects 0.000 description 11
- 238000013500 data storage Methods 0.000 description 9
- 230000008859 change Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000002452 interceptive effect Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012544 monitoring process Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000000926 separation method Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 230000001131 transforming effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000010348 incorporation Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 239000000126 substance Substances 0.000 description 2
- 230000032258 transport Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000003936 working memory Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5072—Grid computing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5011—Pool
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/084—Configuration by using pre-existing information, e.g. using templates or copying from other elements
- H04L41/0843—Configuration by using pre-existing information, e.g. using templates or copying from other elements based on generic templates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
计算资源服务提供者的资源管理系统执行将未实例化为逻辑容器的成员的虚拟资源实例(诸如虚拟机实例和虚拟数据存储库实例)采纳到用于作为组来管理逻辑容器的成员的逻辑容器中。采纳不是从可编程基础设施模板生成的这种“候选”资源允许连同从这样的模板生成的资源一起根据基础设施即代码框架来管理资源。可以修改用于启动基础设施实例的模板,以包括描述采纳的资源的配置的采纳资源定义,以便能够与容器的其它成员一起对采纳的资源执行管理操作。系统能够从采纳的资源的元数据中生成采纳资源定义,以将其包括在模板中或验证该模板。
Description
相关申请的交叉引用
本申请要求于2018年3月22日提交的美国专利申请No.15/933,184的优先权的权益,该申请通过引用整体并入本文并且被依赖。
背景技术
一般而言,计算设备利用通信网络或一系列通信网络来交换数据。公司和组织运营将许多计算设备互连在一起的计算机网络,以支持操作或向第三方提供服务。计算系统可以位于单个地理位置或位于多个不同的地理位置(例如,经由私有或公共通信网络互连)。具体而言,数据中心或数据处理中心(在本文中一般称为“数据中心”)可以包括多个互连的计算系统,以向数据中心的用户提供计算资源。数据中心可以是代表组织运营的私有数据中心,或者是代表公众或为公众利益运营的公共数据中心。
为了促进数据中心资源的更多利用,虚拟化技术可以允许单个物理计算设备托管虚拟计算资源的一个或多个实例,诸如作为独立计算设备呈现给数据中心的用户并操作的虚拟机。单个物理计算设备可以以动态方式创建、维护、删除或以其它方式管理虚拟资源。在一些场景中,各种虚拟机可以与操作系统或操作系统配置、虚拟化的硬件和联网资源以及软件应用的不同组合相关联,以使物理计算设备能够提供不同的期望的功能,或者更高效地提供相似的功能。
进而,用户可以从数据中心请求计算机资源,包括单个计算设备或联网计算设备的配置,并为用户提供不同数量的虚拟机资源。虚拟化还可以从虚拟机向上扩展;整个数据中心以及甚至多个数据中心可以实现具有变化容量的计算环境,诸如虚拟私有网络和虚拟私有“云”计算环境。硬件计算设备的网络可以协作使用虚拟化技术,以向计算资源服务提供者的用户提供虚拟计算资源和计算服务。对资源和数据的访问可以由用户账户所有者、管理员、组、服务或计算资源服务提供者本身紧密控制;访问可以基于许多不同的参数,诸如用户凭证、资源属性、网络配置等。
将虚拟计算资源作为离散实例提供被称为基础设施即服务(IaaS),这些离散实例被配置为好像它们是典型的数据中心硬件组件(诸如服务器、盘存储装置和网络适配器卡)一样使用。IaaS提供者还可以提供实现计算资源和服务的后端计算体系架构,用于计费和账户管理、联网支持(诸如监视和负载平衡)、安全性、备份和冗余性以及资源配置和互操作性框架等等。用户可以调用这些资源和服务来创建工作流、使任务自动化、监视和更新部署的基础设施,以及以其它方式管理其计算资源。IaaS框架可以使用户以编程方式管理其基础设施,这一概念被称为基础设施即代码(IaC)。IaC中的“代码”是机器可读指令,该指令被组织为用于每个基础设施组件的离散定义;提供者的虚拟资源管理服务执行指令以快速供给、配置和部署虚拟计算资源的实例。IaC通过使虚拟资源实例符合对应的定义来将基础设施部署自动化并减轻配置漂移。
附图说明
将参考附图描述各种技术,其中:
图1是计算资源服务提供者的计算环境的图,其中可以根据本公开实现本系统和方法的各种实施例;
图2A-2E是根据本公开的可以由资源采纳服务执行的各种资源采纳功能的图;
图3是用于供给和部署虚拟计算资源的示例模板的图;
图4A是根据本公开的将现有虚拟计算资源采纳到新逻辑容器中的示例方法的流程图;
图4B是结合图4A和4C的方法处理栈部署故障的示例方法的流程图;
图4C是根据本公开的将现有虚拟计算资源采纳到现有逻辑容器中的示例方法的流程图;
图5A-5C是根据本公开的另一个示例计算环境的图,该计算环境实现验证资源采纳模板、将资源采纳到现有逻辑容器中以及从逻辑容器分离先前采纳的资源的示例方法的进展;
图6A是根据本公开的验证栈模板的采纳的资源定义的示例方法的流程图;
图6B是根据本公开的如图6A中所示经由用户接口来识别栈模板和目标资源以供采纳的示例方法的流程图;
图7A-7D是表示根据本公开的提示用户输入用于执行资源采纳的信息的图形用户界面的屏幕截图的图;
图8是根据本公开的为虚拟计算资源生成采纳的资源定义的示例方法的图;以及
图9是实现本公开的系统和方法的硬件计算设备的图。
具体实施方式
在计算资源服务提供者的上下文中,客户端发出分配计算资源服务提供者的计算资源以供客户端使用的请求。计算资源服务提供者的一个或多个服务接收请求并向客户端分配物理计算资源,诸如计算机处理器、存储器、存储驱动器、计算机网络接口和硬件计算设备的其它组件的使用。在一些计算系统中,计算系统的虚拟化层生成“虚拟”计算资源的实例,这些实例表示对应物理计算资源的分配的部分。在这个基础设施即服务(IaaS)环境中,客户端可以作为其自己的计算基础设施来操作和控制虚拟计算资源的实例,包括但不限于:虚拟机实例,每个虚拟机实例模拟具有操作系统、处理能力、存储容量和网络连接的完整计算设备;用于执行具体处理的虚拟机实例或其它容器;虚拟网络接口,每个虚拟网络接口使一个或多个虚拟机实例能够彼此隔离地使用底层网络接口控制器;虚拟数据存储库(store),像硬盘驱动器或数据库一样操作;等等。计算资源服务提供者可以在客户端自己的虚拟计算环境中向客户端供给虚拟计算资源,该虚拟计算环境可以与其它客户端的环境通信隔离(或限制,例如经由安全策略)。计算资源服务提供者可以允许客户端配置其虚拟计算资源,以便它们可以接收来自最终用户的计算设备的连接;客户端的虚拟计算资源可以为最终用户提供软件应用、web服务和其它计算服务。
计算资源服务提供者的一个或多个服务,如下文进一步所述,可以负责分配虚拟计算资源、配置虚拟计算资源以及将虚拟计算资源部署到客户端的虚拟计算环境中。实现基础设施即代码(IaC)概念的IaaS环境使得这个资源管理服务能够获得包括程序代码的资源定义,并解释和执行该资源定义以识别资源类型,为对应类型的虚拟资源实例分配适当的虚拟化的物理资源,将定义的配置应用于虚拟资源实例,然后将虚拟资源实例部署到虚拟计算环境中。通过在分配给环境的对应资源内创建实例并将该实例连接到其它虚拟计算资源并且有时还连接到与最终用户设备对接的计算网络,虚拟计算资源被部署到客户端的虚拟计算环境中。在一种实施方式中,计算系统的虚拟化层(例如,包含一个或多个管理程序)在环境内生成一个或多个虚拟网络,并且新实例在虚拟网络上接收地址(例如,IPv4地址)并且然后可以与虚拟网络上的其它组件通信。虚拟网络可以由物理或虚拟联网组件(诸如网络接口、防火墙、负载平衡器等)参与,这些组件实现组件之间和与外部通信网络(例如,互联网和其它广域网)的连接、地址空间以及通信协议。在各种实施方式中,客户端可以配置虚拟网络及其附带组件的各个方面。
客户端可以创建包括一个或多个IaC资源定义的配置模板。模板可以被用于标准化资源定义,诸如通过格式化要由资源管理服务读取的定义;格式规范可以包括编程语言、模式、库、应用编程接口(API)和其它要使用的数据源,以使资源管理服务能够执行资源定义的程序代码。模板可以定义特定类别的虚拟计算资源。例如,“web服务器”配置模板可以包括具有默认和/或可定制值的参数;虚拟机实例采纳这些参数在客户端的虚拟计算环境内作为web服务器工作。客户端可以配置将该类别的虚拟机实例指定为“web服务器”的请求,并且处理该请求的资源分配系统可以将web服务器配置模板解释为将新的虚拟机实例“上旋(spin up)”为具有相同参数的web服务器。
附加地或可替代地,可以使用模板来定义逻辑容器,该逻辑容器在本文中可互换地称为“栈(stack)”,包含客户端想要经受一些共同管理操作的多个虚拟计算资源的资源定义。在各种实施例中,逻辑容器可以包括针对多种不同类型的资源、和/或针对同一类型的资源的多个配置、和/或针对资源的相同配置的多个实例的定义;可以将同一栈中的资源配置为相互对接,但这不是必需的。在各种示例中,栈中的资源进行协作以提供用于端到端计算解决方案的基础设施,诸如服务器或数据库应用。在一个特定示例中,栈定义可以包括用于以下的资源定义:要被配置为其上安装了流行的博客软件应用的web服务器的虚拟机;将作为本地存储装置安装到web服务器的SQL数据库;以及将应用于web服务器的安全组,以允许通过端口80的公共设备连接和通过端口22的安全连接,并拒绝所有其它连接。模板可以被用于完全相同的资源栈的自动部署,从而使应用可缩放且用户体验一致。
在逻辑容器内实例化资源允许用户和其它提供商服务将对应的资源实例作为单个单元进行管理。在各种实施例中,可以通过创建、更新或删除栈实例来创建、更新和/或删除虚拟资源实例。在一些实施例中,必须成功创建或删除所有虚拟资源实例,才能创建或删除栈;例如,如果无法创建虚拟资源实例,那么系统可以通过自动删除已创建的任何栈资源并撤消与创建栈相关联的任何其它动作来“回滚”栈。使用栈可以高效地执行其它实例生命周期管理操作,下面将进一步描述其中的一些。
在一些计算环境中,可以启用IaC设计,但没有强制要求。客户端的虚拟计算环境可以演变为碎片状态,其中一些虚拟资源实例属于从IaC资源定义实例化的栈,并且一些虚拟资源实例(在本文中称为“候选”或“目标”资源)是使用其它配置工具配置和部署的并且不属于栈。这种状态一般是不利的,由于其独特的配置以及使用不同的管理控制台,因此可能要求重复努力、对候选资源的特别注意;此外,可缩放性和更新的分发受到不利影响。出于至少这些原因,一旦将IaC设计用于客户端的基础设施中的一些,对所有基础设施都使用IaC是优选的。
在IaC中,包含资源定义的模板是栈的“真相来源”:创建、更新和删除操作都是通过执行模板的程序指令来执行的。不幸地,因此,现有的候选资源不能简单地被“采纳”到新的或现有的栈中,因为它在栈模板中没有对应的资源定义。假设可以使用栈模板的编程语言和模式来描述候选资源,那么可以创建对应的资源定义并将其添加到栈模板。这有两个主要问题。首先,随着候选资源的配置的复杂性增加,对应的资源定义的复杂性和编码错误的可能性也增加。在尝试基于得到的栈模板的管理操作之前验证得到的资源定义是至关重要的。
而且,即使通过栈模板中采纳的资源定义准确地捕获了候选资源,执行栈操作也不会将候选资源采纳到栈中。代替地,创建或更新操作根据采纳的资源定义在栈中创建新的资源实例。新实例不能具有与候选资源相同的标识符,因此无法创建与其它资源的完全相同的连接。最后,对于以前的系统,用户只能通过删除原始实例并使用栈创建或更新操作将候选资源重新创建为采纳的资源来将候选资源采纳到栈中。对于一些资源,这是可以接受的,但是其它资源可能是难以重新创建的,可能遭受数据丢失的风险高,或者对于支持进行中的实况流量流至关重要。这些不能被删除,并且在一些情况下不能以任何方式被修改或干扰,但是将它们采纳到栈中会是有利的。
本公开提供了用于执行将虚拟计算环境(VCE)的目标候选资源采纳到新的或现有的逻辑容器中的系统和方法,以便将采纳的资源作为单元与逻辑容器中的其它虚拟计算资源一起管理。为了描述的清晰,本系统中的逻辑容器将被称为“栈”,但是术语“栈”并不旨在暗示栈内资源之间的任何结构关系,该术语也不需要资源之间超出它们在逻辑上被分组在一起的任何关系(如下面描述的示例中)以便将资源作为单元进行控制。在一些情况下,通过启动栈来启动属于栈的虚拟计算资源的实例。栈可以具有相关联的配置模板,并且资源管理系统使用识别出的模板为栈的每个虚拟计算资源设置新实例的初始配置,并准备该新实例用于部署。因此,执行中的栈可以包括在用户的VCE的执行环境中执行的一个或多个虚拟资源实例。可以通过改变栈模板然后执行更新命令来进行对现有栈的改变,从而使资源管理系统确定已进行的改变,并且更新或重新创建(通过执行经修改的模板)仅受该改变影响的那些虚拟资源实例。
实例可以各自具有与虚拟计算资源、操作资源、安全组、安全策略或任何其它资源相关联的资源类型,所述其它资源具有在VCE内和/或由提供VCE的计算资源服务提供者的资源管理系统理解的类型。资源类型的参数与栈模板的格式化要求(例如,编程语言、模式)一起确定栈模板中包含并与栈的资源之一对应的每个资源定义的形式和实质(substance)。在各种实施例中,要被采纳到栈中的每个候选资源还可以具有由VCE和/或资源管理系统理解的资源类型。照此,候选资源可以由与栈模板兼容的资源定义来描述。根据本公开,可以配置这种采纳的资源定义(ARD),使得当与栈模板的其余部分一起执行时,对应的程序指令使资源管理系统将候选资源与栈逻辑上相关联,从而将候选资源有效地采纳到栈中,而无需对候选资源进行任何改变。
可以将ARD合并到栈模板中以产生过继(adoptive)模板,该过继模板使系统创建或更新栈以包括目标(现在采纳的)资源。在一些实施例中,与VCE相关联的用户账户的用户或用户的代理可以为要被采纳到栈中的每个目标资源创建ARD,和/或可以将ARD集成到栈模板中。用户可以自己产生ARD,或者可以调用系统的变换服务以产生ARD和/或修改栈模板。在一个实施例中,ARD可以包括逻辑标识符(即,名称),该逻辑标识符识别过继模板内的对应目标资源;ARD还可以包括物理标识符,该物理标识符与在VCE内识别候选资源的候选资源的主标识符(例如,虚拟机实例的实例标识符)对应。ARD还可以包括描述候选资源与栈的关联的采纳数据,以及描述候选资源的配置所需的所有参数(例如,特性、输出)。
假设授予了适当的许可,系统可以与目标资源进行通信以促进采纳处理。在一些实施例中,作为模板验证处理的一部分,系统可以与目标资源通信,由此系统确定对应的ARD是否准确地描述了目标资源。附加地或可替代地,作为模板创建处理的一部分,系统(例如,其变换服务)可以与目标资源通信,由此系统生成对应的ARD并将其结合到栈模板中。在一个示例中,系统可以使用与候选资源的资源类型对应的API来访问候选资源并获得描述候选资源的数据。数据可以包括元数据,包括用于候选资源的配置参数中的一些或全部的键/值对;系统可以在不中断候选资源的操作或不对候选资源进行改变的情况下获得这个元数据。
系统可以将收集的数据解析为产生对应ARD所需的键/值对,并且可以将识别出的对作为候选资源参数的“快照”存储在数据存储库中。在创建快照之后,系统可以获得快照并解释其键/值对,例如,使用资源类型的API来识别定义的变量,并使用栈模板的格式化规则将键/值对变换成形成ARD的程序指令。如果系统正在验证已经在模板中的ARD,那么系统可以将其生成的定义与模板中存储的定义进行比较,以识别任何差异;没有差异指示模板的ARD有效,而如果存在差异,那么系统可以回滚栈的启动并向用户通知输入错误。附加地或可替代地,系统可以将其生成的ARD递送给用户,并带有让用户将ARD结合到栈模板中的指令,或者可以自动地自己将ARD结合到栈模板中,以产生过继模板。
描述了用于使用本文描述的IaC资源定义和其它模板修改来执行资源采纳和反采纳的若干变化的系统和方法。系统可以将一个或多个目标资源添加到新栈(即,具有带有新定义的计算资源的栈模板,该计算资源将作为栈的成员被启动–供给、配置和部署),或添加到现有(即,正在执行的)栈。系统可以创建仅包括目标资源的新栈。系统可以接收目标资源的标识符或目标资源的多个标识符,或者系统可以“发现”候选资源(例如,通过确定哪些执行实例不与栈相关联)并选择它们的全部或子集,或将它们呈现给用户(即,经由用户界面)以供选择。系统可以从栈中分离先前采纳的资源,从而它们是“孤立的”并且不属于任何栈,或者系统可以通过将分离的资源添加到另一个栈来重新堆叠这些资源。
在前面和下面的描述中,描述了各种技术。为了解释的目的,阐述了具体的配置和细节,以便提供对实现这些技术的可能方式的透彻理解。但是,将显而易见的是,以下描述的技术可以在没有具体细节的情况下以不同的配置来实践。此外,众所周知的特征可以被省略或简化,以避免使所描述的技术模糊。
参考图1,本公开的实施例可以在计算资源服务提供者199的计算系统内或之上操作,所述计算系统可由用户计算设备102、103的用户经由计算机网络104(诸如互联网)访问。特别地,“客户端”或要部署的虚拟计算资源的管理员可以使用计算设备102访问计算资源服务提供者199的计算系统(例如,使用客户端的用户账户凭证),以连接到第一用户接口108;最终用户可以使用计算设备103访问客户端的虚拟计算资源,以连接到第二用户接口110或连接到计算机网络104的另一个端点。用户接口108、110可以是网站、web应用、命令控制台等,如下面进一步描述的。
计算资源服务提供者199实现至少一个虚拟计算环境100,用户可以在其中获得虚拟计算资源,这些虚拟计算资源使用户能够运行程序、存储、检索和处理数据、访问计算资源服务提供者199的服务等。虚拟计算环境100可以是在一个或多个物理计算设备上实现的计算资源虚拟化平台的任何合适类型和/或配置之一。虚拟计算环境100的非限制性示例包括数据中心、组织成区或区域的数据中心的集群、公共或私有云环境等。虚拟计算环境100可以与客户端相关联并由客户端控制和管理(例如,经由用户接口108)。在一些实施例中,特定客户端的虚拟计算环境100可以专用于该客户端,并且除非根据该客户端所授予的访问许可,否则禁止由计算资源服务提供者199的任何其它用户对其进行访问,如本文详细描述的。
计算资源服务提供者199可以包括实现在任何特定虚拟计算环境“外部”操作并执行各种功能的系统和服务的数据处理体系架构,所述功能诸如管理与虚拟计算环境的通信,提供电子数据存储,以及执行安全性评估和其它数据分析功能。这些系统和服务可以彼此通信、与计算资源服务提供者199外部的设备和服务通信、和/或与计算环境通信。将理解的是,附图中描绘为在特定虚拟计算环境100内部或在所有虚拟计算环境外部的服务可以被适当地修改,以便以与所描绘的方式不同的方式在数据处理体系架构中操作。
一般而言,用户计算设备102、103可以是任何计算设备,诸如台式机、膝上型计算机、移动电话(或智能电话)、平板电脑、信息亭、无线设备和其它电子设备。此外,用户计算设备102、103可以包括在相同或不同数据中心上运行的web服务,其中,例如,不同的web服务可以以编程方式彼此通信以执行本文描述的一种或多种技术。另外,用户计算设备102、103可以包括物联网(IoT)设备,诸如互联网家电和连接的设备。这样的系统、服务和资源可以具有其自己的接口,用于连接到其它组件,其中一些组件将在下面描述。虽然本文中可以将一个或多个实施例描述为使用用户接口,但是应当理解,这些实施例可以附加地或可替代地使用任何CLI、API或其它编程接口。
将用户设备102连接到计算资源服务提供者199的网络104可以是任何有线网络、无线网络或其组合。此外,网络104可以是个人域网、局域网、广域网、空中广播网络(例如,用于收音机或电视)、线缆网络、卫星网络、蜂窝电话网络或其组合。在一些实施例中,网络104可以是私有或半私有网络,诸如公司或大学的内部网。网络104可以包括一个或多个无线网络,诸如全球移动通信系统(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其它类型的无线网络。网络104可以使用协议和组件来经由互联网或任何其它上面提到的类型的网络进行通信。例如,由网络104使用的协议可以包括超文本传输协议(HTTP)、HTTP安全(HTTPS)、消息队列遥测传输(MQTT)、受约束的应用协议(CoAP)等。用于经由互联网或任何其它上面提到的类型的通信网络进行通信的协议和组件对于本领域技术人员而言是众所周知的,因此本文不再详细描述。
因而,用户设备102、103的用户可以经由用户接口108、110访问计算资源服务提供者199,该用户接口可以是与用户设备102、103和网络104兼容的任何合适的用户接口,诸如API、web应用、web服务或由用户设备102、103使用web浏览器或另一个软件应用可访问的其它接口、命令行界面等。在一些实施例中,用户接口108、110可以包括用于使用例如标记语言和其它常用web技术在用户设备102、103上生成图形控制台的代码和/或指令。第一或管理接口108可以经由连接设备102向用户呈现用于在一个或多个计算环境100中配置、请求、启动以及以其它方式操作虚拟计算资源的各种选项。第二或最终用户接口110可以经由连接设备103向用户呈现经由在客户端的虚拟计算环境100中执行的虚拟计算资源132、142处理和提供的静态、动态和/或交互式内容。由用户输入到用户接口108、110中的用户输入(例如,文本、计算机文件、从列表或菜单中选择的元素、按钮上的鼠标点击以及其它交互)可以由计算资源服务提供者199的一个或多个组件(诸如资源管理系统106、数据存储服务166)和/或计算环境100中的一个或多个组件(诸如资源分配系统120)接收和处理。
例如,客户端可以使用用户接口108来配置虚拟网络、配置和启动(例如,从命令行)虚拟计算资源142、创建用于实例化逻辑容器130和虚拟计算资源132并将它们连接到虚拟网络和/或外部通信网络104的模板114、124、以及请求目标资源142配置的快照126,如下所述。这样的处理可以生成描述客户端和/或最终用户的用户账户的记录,并将用户账户记录存储在用户数据存储库180中。记录可以包括指示与用户账户相关联的最终用户被授权或被批准请求和使用计算环境100中的虚拟计算资源的信息。该信息可以描述对最终用户使用虚拟计算资源的能力的限制。例如,用户账户信息可以指定最终用户被允许请求的虚拟计算资源的类型和/或最终用户被允许执行的动作(例如,读取、写入、复制)。在一些实施例中,可以将包含用于启动可编程计算基础设施(例如,IaC)资源的程序代码的模板114(包括如下所述被修改以将目标资源142采纳到相关联的栈130中的栈模板124)存储在用户存储库180中。在一些实施例中,包括从目标资源142获得并且被用于生成包括在栈模板124中的资源定义的元数据的快照126可以存储在用户数据存储库180中。计算资源服务提供者的数据存储服务166可以管理对用户数据存储库180中的记录的查询、数据传送和其它数据处理。
计算环境100可以被配置为向被授权使用计算环境100的全部或部分的用户提供计算资源。计算资源可以包括例如任何硬件计算设备资源,诸如处理器计算能力/容量、只读和/或随机存取存储器、数据存储和检索系统、设备接口(诸如网络或外围设备连接和端口)等。在一些实施例中,这些资源可以分散在多个分立的硬件计算设备(例如,服务器150)之中;这些硬件计算设备可以实现虚拟化层和对应的虚拟化系统(例如,服务器上的管理程序)或与之通信,由此计算资源由虚拟计算资源表示并且可以作为虚拟计算资源来访问。虚拟计算资源可以是与某些计算资源对应的逻辑构造,例如数据卷、数据结构、文件系统等。虚拟计算资源的非限制性示例包括虚拟机和容器(如下所述)、能够存储文件和其它数据的逻辑数据存储卷、软件程序、数据处理服务等。
计算环境100可以被配置为通过虚拟化那些资源以产生固定或可变数量的可用虚拟计算资源来分配对应硬件计算设备的计算资源。可以以有限的方式将可用资源提供给一个或多个用户,这些用户提交对计算环境100内的虚拟计算资源的请求;分配给特定用户和/或由特定用户使用的虚拟计算资源由栈资源132和目标资源142表示。根据本系统与处理使用虚拟资源的请求、以其它方式管理可用资源和已分配虚拟资源的分配和配置以及限制分配给特定用户的虚拟资源的量相关的各种功能可以由在计算环境100内和/或其外部(即,在计算资源服务提供者199的数据处理体系架构中)执行的一个或多个服务执行。
在一些实施例中,如图1中所示,在计算环境100内操作的资源分配系统120可以与在计算环境100外部实现的资源管理系统106协作,以管理虚拟资源的分配以及虚拟资源的配置和部署作为虚拟资源实例。在一些实施例中,资源分配系统120接收至少包含请求、命令、指令等(在本文中统称为“请求”)的通信,以分配、启动、执行、运行或以其它方式提供计算环境100中的一个或多个虚拟计算资源以供可识别的用户(例如,发出请求的用户或另一个指定用户)使用。在各种实施例中,这些通信被任何用户或资源管理系统106发送到资源分配系统120。由资源管理系统106接收的请求可以由客户端直接生成(例如,使用用户接口108)或由资源分配系统120生成,或者请求可以作为计算资源服务提供者199的另一个组件或外部设备的输出(例如,触发事件消息)或响应于该输出而被生成。
资源分配系统120可以包括以软件或硬件设备实现的用于执行相关任务的一项或多项服务。在一些实施例中,资源分配系统120可以包括请求处理器170,其由可执行程序指令配置为接收对虚拟计算资源的请求、将请求解析为递送和其它参数、基于可用资源、请求者的凭证以及其它参数来确定是否可以满足请求,并且如果可以满足请求,那么提供被配置用于根据请求的参数使用的虚拟计算资源。请求处理器170可以附加地被配置为向资源管理系统106发送请求或者包含在请求中或描述请求的数据中的一些或全部,以进行如本文所述的相关联的处理。请求处理器170或资源分配系统120的另一个组件可以被配置为向用户接口108发送与处理请求相关的信息,诸如错误、完成和其它状态消息。
资源分配系统120可以附加地收集和/或生成描述在虚拟计算环境100中执行的虚拟计算资源132、142的各方面的使用数据。这样的使用数据的非限制性示例可以包括:在启动或启动失败时目标资源142的配置和/或状态参数;与处理使用虚拟计算资源的请求相关的信息;监视通过监视目标资源142的操作(例如,网络通信、数据存储和检索以及其它盘访问操作、软件程序的执行等)收集的数据;以及状态数据,诸如虚拟计算资源142在被供给、部署、终止、失败或生成错误时或在任何其它时间的状态快照。可以将使用数据发送到资源管理系统106,或者资源管理系统106可以默认地或通过用户授权从资源分配系统120或从数据存储库获得使用数据。
除其它操作外,资源管理系统106根据所请求的采纳操作来执行资源采纳任务。资源管理系统106还可以通过将管理操作应用于识别出的逻辑容器(例如,虚拟计算环境100中的栈130)的成员(例如,栈资源132)来对逻辑容器执行管理操作。在一些情况下,管理操作和对资源采纳的请求可以被组合或以其它方式彼此关联,诸如当请求资源管理系统更新栈130以包括目标资源142时。在一些实施例中,资源管理系统106可以是全局(即,与计算资源服务提供者199的所有计算环境通信)的系统,并且可以在计算资源服务提供者199的数据处理体系架构中实现。例如,资源管理系统106可以是控制平面的一部分,该控制平面处理进入和离开计算环境的网络通信中的一些或全部。在其它实施例中,资源管理系统106可以包括分布在计算环境内或跨计算环境分布的一个或多个组件,诸如服务。以软件或硬件实现的一个或多个组件服务可以执行本文所述的各种分立的任务,或者在一些实施例中可以使它们由其它服务执行。例如,在一些实施例中,资源管理系统106本身可以创建快照126或变换模板114,而在其它实施例中,资源管理系统106可以将请求发送到资源管理系统106外部的另一个服务以执行这些任务。附加地或可替代地,资源分配系统120可以执行资源管理系统106的任务中的一些或全部,如本文进一步所描述的。
资源管理系统106可以包括实例库存160,该实例库存160存储由资源管理系统106管理的每个虚拟资源实例的记录。实例库存160的一个示例是数据库或其它结构化数据存储库,其可以包含在资源管理系统106的存储器(例如,实现资源管理系统106的服务器的存储器模块)中或由其引用。记录可以是数据库记录、元数据记录、文件、表中的行等。记录中的信息可以包括相关联的虚拟资源实例的参数,诸如实例的实例标识符(即,虚拟计算环境100内的物理标识符)、实例所属的栈的栈标识符、用于启动或引用实例的模板的模板标识符等。在一个实施例中,实例库存160可以是跟踪在计算资源服务提供者199的所有虚拟计算环境中执行的虚拟资源实例的“主”库存,而在其它实施例中,实例库存160可以仅跟踪特定用户或用户组的VCE或仅单个VCE 100中的实例。
资源管理系统106可以包括资源采纳服务162,其执行与将一个或多个虚拟资源实例采纳到逻辑容器中和/或从逻辑容器分离一个或多个虚拟资源实例相关联的任务。响应于识别针对逻辑容器(诸如栈130)的采纳/分离动作的请求,资源采纳服务162可以识别栈130和目标资源142(例如,经由动作中包含的标识符)。栈130可能尚未在VCE 100中创建(即,采纳动作是用于创建栈130的管理操作的一部分),或者栈130可能已经存在于VCE 100中,并且可以具有一个或多个栈资源132作为其成员(即,采纳动作是用于更新栈130的管理操作的一部分)。资源采纳服务162可以在采纳动作之后获得请求者提交以用作栈130的“真相来源”的模板124。
栈模板124可以使用可以由资源管理系统106和/或资源分配系统120解释的程序代码来定义栈130,以创建和配置栈130。类似地,栈模板124可以包括定义在创建新栈130时总是从程序代码中实例化的栈资源132作为栈130的成员的一个或多个资源定义;用于栈资源132的资源定义还可以被用于执行对应实例的更新,如下面进一步所述。此外,栈模板124可以包括与目标资源142相关联的采纳的资源定义。在一些实施例中,采纳的资源定义可以包括用于识别模板124和栈130内的目标资源142的逻辑标识符,以及与逻辑标识符相关联的用于识别VCE 100内的目标资源142的物理标识符。采纳的资源定义还可以包括描述目标资源142的配置的信息。采纳的资源定义可以以模板的其余部分的格式来格式化,如下文进一步所述。模板114、124中的任何一个以及采纳的资源定义可以由客户端或另一个实体编写和上传,但是下面描述一些用于模板的程序代码生成工具。
如果尚未创建栈130,或者如果栈130存在并且是从主模板或栈模板124的较早版本创建的,那么栈模板124可能永远不会被执行或甚至被测试。一般而言,可以对模板114进行改变,模板114是诸如逻辑容器及其成员的资源的真相来源,然后资源管理系统106可以接收测试这些改变的请求,并且如果改变被接受,那么更新或重新创建被改变的资源。因此,如果栈130的创建或更新操作成功,那么资源采纳服务162将如下所述将目标资源142与栈130相关联,并将栈模板124保存为栈130的新真相来源。资源采纳服务162还可以验证采纳的资源定义,该资源定义被添加(例如,通过客户端的手动输入)到栈模板124。在一个实施例中,资源采纳服务162可以获得目标资源142的快照126、将快照126变换成模板程序代码,并且将模板程序代码与采纳的资源定义进行比较,以识别指示模板124中的错误的任何差异。
在一些实施例中,资源管理系统106可以使用用于由对应用户账户的客户端或管理员供应的管理操作参数的值。例如,诸如管理员用户接口108的API可以呈现提示(例如,在用户设备102上以图形方式),以供管理员输入任何合适参数的值;管理员可以输入值,并且资源管理系统106可以接收所述值并立即使用它们或将其存储,诸如存储在模板114或用户数据存储库180中的另一个记录中。这样的参数及其相关联的值可以被用于识别例如用于采纳或分离的目标资源142,或接收目标资源142的逻辑容器。
资源管理系统106还可以包括变换服务112,用于取决于所执行或请求的采纳动作将识别出的模板114、124从其原始形式变换成结合或消除了采纳信息的修订形式。模板114、124可以是可以在虚拟计算环境100中被实例化的虚拟资源的逻辑表示。模板114、124可以符合对应系统被配置为解释的模板语言。例如,模板114、124可以是以诸如JavaScriptObject Notation(JSON)或YAML的面向对象的编程语言编写的结构化文档。可以调用变换服务112以向模板114、124添加程序代码或从模板114、124删除程序代码。例如,变换服务112可以将栈模板124变换成包括用于被采纳到栈130中的目标资源142的虚拟资源定义、以及诸如将栈模板124的逻辑标识符与目标资源142的物理标识符相关联的程序代码的其它采纳信息。在另一个示例中,请求从栈130分离采纳的目标资源142,并且变换服务112从栈模板124移除采纳信息和虚拟资源定义。
在一些实施例中,变换服务112还可以为目标资源142创建虚拟资源定义。变换服务112可以开始从目标资源142收集元数据,该元数据包括描述目标资源142的配置的键/值对。从元数据收集的参数可以是描述栈模板124中的目标资源142所需的任何资源特性,包括但不限于:资源类型;虚拟化类型;计算体系架构;安全组和其它安全信息;以及特定于资源类型的信息。变换服务112可以访问计算资源服务提供者199的服务所理解的资源类型中的一些或所有的资源类型定义190。通过知道资源类型,变换服务112可以使用相关联的资源类型定义190来获得特定于资源类型的参数。例如,虚拟机实例可以提供其操作系统、逻辑卷的尺寸和位置、安装在其上的应用等。变换服务112可以附加地或可替代地访问与资源类型相关联的一个或多个API 192;变换服务112可以识别用于目标资源142的API 192,并使用API 192向目标资源142提交正确的请求,以获得配置参数并将其流传输到快照126中。
然后,变换服务112可以将快照126变换成孤立模板或格式化为用于插入到模板中的虚拟资源定义。可以以独立于语言的格式(诸如JSON或YAML)来表达得到的虚拟资源定义。本公开中讨论的示例可以是JSON格式或类似于JSON的格式,并且作为可以被实现的各种实施例的说明。当然,可以以结合JSON和类似JSON的格式描述的方式被利用的各种其它格式也是可以想到的并且在本公开的范围内。在各种实施例中,目标资源142配置的表达与栈模板124的格式化和程序代码兼容。可以将虚拟资源定义返回给客户端或进行存储,以供以后检索和手动结合到栈模板124中。可替代地,变换服务112可以自动地将虚拟资源定义结合到栈模板124中。
除了配置、部署和管理虚拟网络以及虚拟计算环境100的计算资源之外或者作为替代,客户端可以使用管理员用户接口108来发起本文所述的各种资源采纳和/或分离过程。以下是用户接口108可以是或包括以执行这样的过程的API的非限制性示例。模板创建API可以使客户端能够提交或编程一个或多个模板114,该模板114包括虚拟计算资源定义和资源分配系统120和/或计算资源服务提供者199的其它系统用来分配、配置并将虚拟计算资源实例部署到虚拟计算环境100中的其它参数。在一些实施例中,模板创建API可以使客户端能够基于当时在虚拟计算环境100中执行的虚拟计算实例的配置来生成模板114。下面关于图3讨论示例模板。
类似地,快照创建API可以使客户端能够发起快照126的创建。客户端可以为目标资源142提供实例标识符或另一个物理标识符,并且还可以提供操作参数,诸如要用于栈模板124中的虚拟资源定义的相关联的逻辑标识符、和/或目标资源142的资源类型190。客户端可以能够使用API请求快照126的状态,例如,该状态可以是“进行中”、“失败”或“完成”。模板构成API可以使客户端能够将快照126变换成模板和/或变换成格式化成类似于模板的虚拟资源定义,并准备好将其结合到模板中。可以将虚拟资源定义返回给客户端或进行存储,以供以后检索和手动结合到栈模板124中。可替代地,模板构成API或资源管理系统106的另一个组件可以自动地将虚拟资源定义结合到栈模板124中。
图2A-2F呈现了与用于栈管理操作的请求一起和/或分开从客户端(经由客户端计算设备202)接收执行对与客户端的VCE 200相关联的虚拟计算资源的资源采纳动作的请求的资源采纳服务204的示例操作(其可以与图1的资源采纳服务162完全相同或相似,或者可以完全不同)。图2A图示了当首先在VCE 200中创建栈230时将候选资源242采纳到栈230中的示例动作。在一些实施例中,可以存在多个不属于VCE 200内的逻辑容器(例如,栈230)(即,不是其成员)的“候选”资源。请求可以使用实例标识符、物理标识符或其它数据元素来识别与另一个候选资源244不同的候选资源242。例如,候选资源242和候选资源244可以具有相同的物理标识符,并且请求可以识别一个或多个上下文键以消除候选资源242、244的歧义。
在一些实施例中,可以仅创建用于栈230的模板以包括候选资源242的虚拟资源定义。但是,如图所示,模板可以附加地包括用于一个或多个栈资源232的虚拟资源定义或其它程序代码,这些栈资源是使用模板的程序代码实例化的可编程基础设施资源。相反,候选资源242可能尚未从模板实例化,但是模板被修改为包括将候选资源242采纳到栈230中而不删除、改变或干扰候选资源242的虚拟资源定义,同时使栈资源232能够启动。如图所示,在栈230的模板中未引用的候选资源244保留在栈230的外部。
图2B图示了在VCE 200中已经创建栈230之后将候选资源242采纳到栈230中的示例动作;资源采纳服务204可以例如接收对动作的请求以及更新栈230的管理操作。用于目标242的虚拟资源定义被添加先前被用于启动VCE 200中的栈230和栈资源232的模板。在采纳之后,将栈230上的管理操作作为单元应用于候选资源242以及栈资源232。
图2C图示了示例“套索(lasso)”动作,其中识别在VCE 200中执行的所有候选资源244、246、248,并且创建用于包括所有候选资源244-248的新栈的模板。资源采纳服务204执行该新模板以启动VCE 200中的栈250,包括作为其成员的新采纳的候选资源244、246、248。在采纳之后,将栈250上的管理操作作为单元应用于候选资源244-248。
图2D图示了从其过继栈260分离先前采纳的候选资源242的示例动作。在一个实施例中,用于栈260的模板可以指示哪个逻辑标识符与候选资源242的物理标识符相关联;系统可以简单地移除与逻辑标识符相关联的虚拟资源定义,但是可以采取其它步骤来分离候选资源242而不扰乱候选资源242或栈资源232。例如,当候选资源242的物理标识符未存储在模板中时,系统可以在模板中获得与候选资源242的ARD对应的逻辑标识符,并可以使用该逻辑标识符查找数据库或元数据记录中(诸如在实例库存中)的物理标识符,如下所述。在另一个示例中,系统可以被配置为当在VCE 200中实例化栈260时为栈260中的每个资源生成状态消息;用于采纳的资源(诸如候选资源242)的状态消息可以指示该资源被采纳。系统可以获得状态消息,然后获得与指示采纳的状态消息相关联的任何资源的物理标识符。在图2E中,“重新堆叠”候选资源242的示例动作包括如上面关于图2D所描述的那样从第一栈270分离候选资源242,然后如上面关于图2B所描述的那样将候选资源242采纳到第二栈280中。
图3图示了两个示例模板300、350。在模板300被更新为包括用于采纳资源的信息之前,第一模板300可以是图1的模板124的示例;此外,在采纳的资源已经从相关联的栈分离之后,模板300表示图1的栈模板124。模板可以具有比所示模板300更多或更少的信息;以下的描述提供了可以使用模板定义和启动的资源的一些示例。模板300可以包括报头信息,诸如模板标识符、拥有模板的用户(即,客户端)的用户标识符、以及一个或多个包含描述性信息(诸如版本和描述模板300的用途的文本)的字段。一个或多个定义302、304、306可以被包括在模板中,并且每个定义可以提供要被包括在从模板300创建和/或启动的资源的配置中的参数。资源定义的非限制性示例包括:操作资源定义302,包括名称、资源类型(例如,逻辑容器;组缩放策略)和访问策略;计算资源定义304,包括用于识别从定义304启动的虚拟资源实例的名称、资源类型(例如,虚拟机、数据存储库、消息队列等)、识别一个或多个用户及其被授予的访问许可的一个或多个访问控制列表或其它安全子策略,以及对应虚拟资源实例的一个或多个特性;以及安全策略定义306,包括策略名称、策略类型、安全策略附加到的计算资源的名称以及安全策略本身或对其的引用(例如,文件名)。
如上所述的资源分配系统可以被配置为根据模板300中的定义来创建和配置虚拟资源实例。在一个示例中,资源分配系统可以读取用于虚拟机的计算资源定义304,以确定要为虚拟机的实例分配的物理和/或虚拟资源的类型和量。这个信息可以根据定义304的特性(诸如虚拟机映像文件或识别文件系统、操作系统、运行时环境、容器的数量和构成、要执行的软件程序等的多个参数)来确定。特性还可以识别相关联的实例应当如何连接到虚拟网络和/或被配置为连接到外部通信网络的端点。在另一个示例中,资源分配系统可以读取安全策略定义306以创建安全策略并将该安全策略附加到示例虚拟机实例。
第二模板350可以包括第一模板300,该第一模板300用执行资源采纳所需的信息扩增。在一些实施例中,第二模板350可以以相同的方式实例化第一模板300实例化的所有资源。因此,如图所示,第二模板350包括操作资源定义302、计算资源定义304和安全策略定义306,以及第一模板300的参数(诸如模板和/或栈ID)。第二模板350可以附加地具有作为一个或多个参数添加的采纳数据352。可替代地,如图所示,采纳数据352可以不固定在模板内,而是可以代替地是用于执行采纳的模板元数据;当采纳完成时,采纳数据352可以被删除或丢弃。采纳数据352可以包括使系统能够使用第二模板350将采纳的资源与栈相关联的信息,诸如将用于指代模板350中采纳的资源的名称或另一个逻辑标识符(例如,在虚拟资源定义354中识别的)与采纳的资源的物理标识符(例如,来自VCE)相关联的记录。第二模板350可以包括采纳的资源的虚拟资源定义354。虚拟资源定义354可以包括将采纳的资源的配置编码为服务器的模板语言所需的相关参数。采纳的资源的准确虚拟资源定义354使被配置为执行模板语言的程序代码的一个或多个服务器将采纳的资源与对应的栈相关联,对采纳的资源与其它栈成员一起作为单元执行管理操作,并通过执行虚拟资源定义354来执行配置检查以确定是否采纳的资源的任何参数以及哪些参数已改变。虚拟资源定义354可以是手动创建的定义和/或从相关联的采纳的资源的元数据获得的,如下文进一步所述。
图4A图示了示例方法400,例如,图1的系统可以执行该示例方法以将虚拟资源采纳到逻辑容器(诸如可以在VCE中实例化的栈)中。在步骤402处,系统可以接收创建新栈的请求。新栈可以包括最初由栈模板中的计算资源定义所定义并从中启动的新虚拟资源;新栈可以附加地或可替代地包括要被采纳到新栈中的现有虚拟资源。例如,创建新栈的请求可以包括资源采纳请求。该请求可以来自与虚拟资源相关联的用户(诸如经由管理员API),或者系统可以经由最终用户API从连接到系统的最终用户接收请求,或者系统中发生的另一个事件可以触发请求。请求可以包括允许系统在步骤404处识别模板的信息,该模板包含针对采纳的资源和/或将从模板新启动的栈资源的计算资源定义。例如,请求可以包括栈标识符,系统可以使用该栈标识符来访问模板数据库并获得与该栈标识符相关联的模板。
在步骤406处,系统可以从模板识别第一计算资源定义。计算资源定义可以是针对新资源的,或者可以是采纳的资源定义(ARD)。例如,系统可以将模板与模板的紧邻先前“主”版本进行比较,并且可以确定第一ARD是模板的新材料。如果计算资源定义是ARD,那么在步骤408处,系统可以获得与ARD相关联的目标资源的物理标识符。例如,ARD可以包括目标资源的配置,目标资源是在客户端的虚拟计算环境中执行的虚拟资源实例;该配置可以包括识别VCE内的目标资源的实例标识符,并且可以获得该实例标识符作为物理标识符。在另一个示例中,系统可以在客户端计算设备上呈现用户接口,从而使客户端能够提供物理ID作为用户输入。
在步骤410处,系统可以确认由物理标识符识别的目标资源存在,即,正在客户端的VCE中执行。如果系统不能核实物理标识符与有效目标资源相关联,那么系统可以发起执行采纳请求和/或与采纳请求相关联的管理操作失败的处理(步骤440)。如果目标资源确实存在(例如,系统向物理标识符发送测试消息并接收答复),那么在步骤412处,系统可以验证ARD。在一个实施例中,ARD可以包括描述目标资源的配置的信息;这个信息和/或ARD本身可以由不可靠的源(诸如通过客户端手动输入相关联的模板)提供给系统。验证ARD可以包括由系统从目标资源本身、或从实例库存、或从监视服务或正在跟踪关于目标资源的信息的另一个数据源获得目标资源的实际配置。下面关于图6A提供以这种方式验证ARD的示例方法。在一些实施例中,系统可以要求获得配置信息的许可,并且例如可以使用与客户端的用户账户相关联的凭证的集合,或者可以使用与由客户端识别的安全组相关联的凭证来尝试访问信息。
在步骤414处,系统确定它是否能够验证ARD。如果系统无法访问必要的信息,或者系统获得了目标资源的实际配置并且,通过比较,确定模板的ARD包含错误,那么系统可以发起执行采纳请求和/或与采纳请求相关联的管理操作失败的处理(步骤440)。如果ARD有效,并且还有更多计算资源定义要检查,那么系统可以返回到步骤406以处理下一个计算资源定义。如果没有更多的定义要处理,那么所有ARD均有效,并且所有新栈资源均已部署,并且在步骤430处,系统可以为每个虚拟资源实例添加或更新记录以指示它们是栈的成员,诸如通过更新由系统维护的实例库存,如下面进一步所述。
处理栈资源定义的步骤420-430中的任何步骤都可能无法针对任何栈资源定义完成,在这种情况下,发起失败处理440以回滚在执行方法400期间所做的任何改变。如果在步骤406处识别出的计算资源定义是针对新的栈资源,那么在步骤420处,系统可以在VCE中供给虚拟计算资源,以从栈资源定义启动新的虚拟资源实例。在步骤422处,系统可以使用在模板的栈资源定义中识别的配置来配置新的虚拟资源实例。在步骤424处,系统可以将新的虚拟资源实例部署到VCE中。在一个实施例中,可以执行所有栈资源定义以创建相关联的新实例。在步骤430处,系统可以在实例库存中添加或修改记录以包括新实例和/或反映对目标资源的采纳。例如,系统可以将栈标识符添加到用于目标资源的元数据记录,和/或可以将目标资源的逻辑和/或物理标识符添加到栈的元数据记录。
图4B图示了在当前描述的系统中在包括资源采纳的管理操作期间处理执行步骤失败的示例方法440。在步骤442处,系统可以获得描述失败的管理操作的信息。在步骤444处,系统可以释放已经分配并且与请求相关联的任何物理和/或虚拟计算资源。例如,在有多个与栈相关联的虚拟资源实例并且已经供给和/或部署了一个或多个虚拟资源实例的情况下,系统可以识别与请求相关联的任何供给和/或部署的实例,终止这样的实例,以及移除或破坏针对请求的任何数据链路,使得资源被返回给可用资源池。在步骤446处,系统可以删除或以其它方式回滚已经响应于请求而被执行的对资源的元数据的任何改变。例如,系统可能已经将栈标识符存储在目标资源的实例库存记录中,或者可能已经将目标资源的实例标识符存储在栈的记录中;这些添加可以被删除。在步骤448处,系统可以创建包含所获得的与执行请求失败相关的任何信息的通知,并且在步骤450处,系统可以将该通知递送给客户端用户,诸如通过将通知存储在使用日志中或者向客户端用户设备发送电子邮件、推送通知或其它包含该通知的提醒。随后,客户端用户可以访问系统(例如,经由管理员用户接口),并改正通知中所报告的错误。
图4C图示了示例方法460,例如,图1的系统可以执行该示例方法以将采纳的虚拟资源添加为现有逻辑容器(诸如可以在VCE中实例化的栈)的成员。在步骤462处,系统可以接收更新现有栈的请求。栈可以包括最初由栈模板中的计算资源定义所定义并从中启动的虚拟资源;这些虚拟资源实例可以正在VCE中执行(作为栈的成员)。栈可以被更新以改变、删除或添加栈资源,和/或包括要被采纳到栈中的现有虚拟资源。例如,更新栈的请求可以包括资源采纳请求。该请求可以来自与虚拟资源相关联的用户(诸如经由管理员API),或者系统可以经由最终用户API从连接到系统的最终用户接收请求,或者系统中发生的另一个事件可以触发请求。该请求可以包括允许系统在步骤464处识别模板的信息,该模板包含针对采纳的资源和栈资源的计算资源定义。例如,该请求可以包括栈标识符,系统可以使用该栈标识符来访问模板数据库并获得与该栈标识符相关联的模板。
在步骤466处,系统可以从模板识别第一计算资源定义。计算资源定义可以是针对栈资源的,或者可以是ARD。例如,系统可以将模板与模板的紧邻先前“主”版本进行比较,并且可以确定第一ARD是模板的新材料。如果计算资源定义是ARD,那么在步骤468处,系统可以获得与ARD相关联的目标资源的物理标识符。例如,ARD可以包括目标资源的配置,目标资源是在客户端的虚拟计算环境中执行的虚拟资源实例;该配置可以包括识别VCE内的目标资源的实例标识符,并且可以获得该实例标识符作为物理标识符。在另一个示例中,系统可以在客户端计算设备上呈现用户接口,从而使客户端能够提供物理ID作为用户输入。
在步骤470处,系统可以确认由物理标识符识别的目标资源存在,即,正在客户端的VCE中执行。如果系统不能核实物理标识符与有效目标资源相关联,那么系统可以发起执行采纳请求和/或与采纳请求相关联的管理操作失败的处理(步骤440)。如果目标资源确实存在(例如,系统向物理标识符发送测试消息并接收到答复),那么在步骤472处,系统可以如本文所述地验证ARD。在步骤474处,系统确定它是否能够验证ARD。如果系统无法访问必要的信息,或者系统获得了目标资源的实际配置并且,通过比较,确定模板的ARD包含错误,那么系统可以发起执行采纳请求和/或与采纳请求相关联的管理操作失败的处理(步骤440)。如果ARD有效,并且还有更多计算资源定义要检查,那么系统可以返回到步骤466以处理下一个计算资源定义。如果没有更多的定义要处理,那么所有ARD有效,并且所有受影响的栈资源已被更新。
处理栈资源定义的步骤480-492中的任何步骤都可能无法针对任何栈资源定义完成,在这种情况下,发起失败处理440以回滚在执行方法460期间所做的任何改变。如果在步骤406处识别出的计算资源定义是针对栈资源的,那么在步骤480,系统可以确定栈更新操作是否包括对识别出的资源定义的任何改变。例如,系统可以将更新后的栈模板与用于启动或更新与识别出的资源定义相关联的虚拟资源实例的先前栈模板进行比较。如果没有改变,那么系统可以识别下一个计算资源定义(步骤466)。如果存在改变,那么在步骤482处,系统可以确定对资源定义的改变是否要求启动新的虚拟资源实例,或者来自新的计算资源定义或者来自要求重启和/或重制相关联的实例的更新后的定义。例如,对现有虚拟机定义的更新可以包括操作系统的新版本,从而要求系统取消供给执行中的实例并用启动具有新配置的新实例。
如果需要新实例,那么在步骤484处,系统可以在VCE中供给虚拟计算资源,以从更新后的栈资源定义启动新的虚拟资源实例。如果不需要新实例,或者在已供给新实例之后,那么在步骤486处,系统可以使用在模板的更新后的栈资源定义中识别的配置来配置虚拟资源实例。在步骤488处,系统可以将新的和/或重新配置的虚拟资源实例部署到VCE中。在步骤490处,系统可以执行清理操作,诸如破坏被替换的虚拟资源实例,以及以其它方式释放不再需要的资源的分配。在步骤492处,系统为每个虚拟资源实例添加或更新记录以指示它们是栈的成员,诸如通过更新由系统维护的实例库存,如下面进一步所述。
图5A-5C呈现了计算资源服务提供者599(其可以与图1的计算资源服务提供者199完全相同或相似,或者可以是完全不同类型的系统)内的示例操作,资源管理系统506(如上面关于图1的资源管理系统106所述)通过该示例操作对在VCE 500或类似计算环境中执行的虚拟计算资源执行资源采纳动作。图5A-5C的示例针对采纳和分离在特定网络可访问服务系统510内启动和执行的虚拟资源实例,该服务系统510在虚拟计算环境500内执行并且与计算资源服务提供者599的特定用户相关联。以虚拟机实例544和数据存储库实例546为例进行说明;可以想到的是,所描述的操作可以在没有过度实验的情况下适用于在任何类型的虚拟资源实例上使用,包括但不限于消息排队服务、通知服务、最终用户虚拟计算环境、负载平衡器、无服务器执行环境和/或虚拟机实例及其容器实例、机器学习服务、搜索引擎、分析引擎、数据加密管理服务等。
虚拟计算环境500的资源分配系统502可以执行上面关于图1的资源分配系统120描述的任何操作。特别地,资源分配系统502可以接收启动虚拟计算环境500内的虚拟机实例的请求。除了向资源管理系统506发送请求或将请求解析为参数并将参数的一些或全部发送给资源管理系统506之外,资源分配系统502还将请求发送到与和请求相关联的用户对应的网络可访问服务系统510的前端520。资源分配系统502还可以从资源管理系统506接收消息,该消息包含所请求和/或自动化的资源采纳和/或模板变换动作的结果。
网络可访问服务系统510或其各种组件可以实现各种Web服务组件、托管的或“云”计算环境和/或对等网络配置,以实现本文所述的处理的至少一部分。网络可访问服务系统510可以在分布式计算环境中操作,该分布式计算环境包括使用一个或多个计算机网络互连的若干计算机系统(例如,图1的服务器150)。网络可访问服务系统510还可以在具有比图1中所示的更少或更多数量的设备的计算环境内操作。此外,可以存在与用户相关联的多个网络可访问服务系统,其可以全部具有相同的配置,或全部不同的配置,或它们的组合。因此,网络可访问服务系统510的描绘应当被视为说明性的并且不限于本公开。
另外,网络可访问服务系统510可以以硬件和/或软件来实现,并且可以例如包括在被配置为执行用于执行本文将描述的各种特征的计算机可执行指令的物理计算机硬件上实现的一个或多个物理或虚拟服务器。一个或多个服务器502可以在地理上分散于或共同位于例如一个或多个数据中心中。在一些实施例中,网络可访问服务系统510可以部署在与计算资源服务提供者599的其它计算环境(未示出)通信隔离的计算环境500中。例如,在一些实施例中,隔离的计算环境(包括虚拟计算环境500)可以是由计算资源服务提供者599实现的首要计算资源网络的“区域”;这些区域可以彼此独立,并且可以表示首要计算资源网络的地理区域(例如,美国东部、美国西部和欧洲都可以是区域)。这种独立性可以意味着在特定区域中可用的计算资源专用于那个区域并由网络可访问服务系统的区域实例控制,以便将该区域与其它区域隔离。一种效果可以是,一个区域的网络可访问服务系统510中虚拟资源实例的采纳不一定在其它区域中发生。
网络可访问服务系统510可以连接到由计算环境500或在其内部实现的通信网络504。网络504可以例如是虚拟专用网络或另一个虚拟网络,或者可以包括物理和虚拟组件。在一些实施例中,网络可访问服务系统510内的任何组件可以经由网络504与计算环境500的其它组件通信。在其它实施例中,并非网络可访问服务系统510的所有组件都能够与计算环境500的其它组件进行通信。在一个示例中,仅前端520可以被连接到网络504,并且网络可访问服务系统510的其它组件可以经由前端520与计算环境500的其它组件进行通信。此外,网络504可以被用于与计算环境500内的系统和资源(诸如资源分配系统502和任何本地(即,在虚拟计算环境500内实例化的)数据存储库)和/或在计算环境500外部的系统和资源(诸如资源管理系统506和计算资源服务提供者599的数据处理体系架构中的其它系统和资源)进行通信。
前端520可以提供用于与外部资源和设备交换数据的接口,包括用于在通信网络上发送和接收数据以例如与资源管理系统506通信的网络接口524。在一个实施例中,前端520用作由网络可访问服务系统510提供的所有其它服务的前门。前端520可以接收和处理(例如,使用请求处理模块522)用于启动网络可访问服务系统510内的虚拟机实例的所有请求。如上面所讨论的,前端520可以使用任何合适的协议(包括例如HTTP、MQTT和CoAP)来接收这样的请求。请求中包括的任何元数据或其它信息(例如,报头和参数)也可以用于处理请求。
此外,前端520可以处理来自资源管理系统506和/或资源分配系统502的消息。可替代地,前端520可以处理并响应来自请求诸如与用户相关联并在网络可访问服务系统510上并发执行的虚拟机实例的数量的信息的资源分配系统502和/或资源管理系统506的消息。前端520还可以处理并响应来自请求其它信息(诸如描述特定虚拟机实例的执行的使用数据)的资源分配系统502和/或资源管理系统506的消息;或者,前端520可以被配置为诸如在特定时间或响应于事件而自动地将这种信息发送到资源分配系统502、资源管理系统506(例如,以维护实例库存554)或数据存储服务。
前端520可以与网络可访问服务系统510的其它组件进行通信,以便启动和管理与用户/用户账户相关联并且已经被启动并且正在网络可访问服务系统510的执行环境540内并发执行的实例。执行环境540可以与用于控制虚拟资源实例的执行的各种配置参数相关联,诸如对虚拟资源实例的数量或并发执行的特定类型的资源的限制、底层计算资源的使用情况等。在一些实施例中,前端520和/或资源管理系统506可以在执行环境540中维护实例的列表。实例的列表可以包括包含每个实例的元数据的记录。在一个实施例中,实例的列表可以是或者包括实例库存554,该实例库存554维护描述与在执行环境540中实例化的栈530相关联的虚拟资源实例的记录,诸如元数据记录或数据库记录。对于与栈相关联的每个实例,实例库存554可以包括物理标识符(对于一些资源类型,其可以是实例标识符)、资源类型、用于启动实例的模板的模板标识符、用于识别模板中实例的相关联资源定义的逻辑标识符、以及对该实例与之通信或以其它方式与之相关联的其它虚拟资源实例的引用的数组。记录的其它元素还可以指定实例的配置(例如,类型、OS等)。一些记录可以没有全部元素,或者如果值不适用或未设置,那么可以缺少某些元素的值。例如,如图5A中所示,不是从模板启动并且不属于栈的虚拟机实例542和数据存储库实例546可以不出现在实例库存554中。
前端520和/或资源分配系统502和/或资源管理系统506可以访问这个列表,并且可以使用它来管理执行中的实例。例如,该列表可以被用于识别应当对其应用栈530上的管理操作的栈530的成员(即,虚拟机实例532和计算资源实例534)。在另一个示例中,该列表可以被用于将采纳的资源的实例标识符与采纳该资源的栈相关联,从而采纳的资源变为栈的成员,而不删除、改变或干扰采纳的资源。前端520可以跟踪栈530和/或部署在VCE 500中的其它逻辑容器,就好像栈530本身是在执行环境540中执行的资源一样;可替代地,前端520可以简单地保持栈530创建的记录以及被包含为栈530的成员的虚拟资源实例的列表(例如,所示的实例库存554)。
在所描绘的示例中,出于说明性目的,图5A中所示的第一系统状态包括已经在执行环境540中执行的虚拟机实例542和数据存储库实例546。虚拟机实例可以在其上加载操作系统(OS)和/或语言运行时。例如,实例542具有OS 542A、运行时542B和容器542C。容器是在虚拟机实例内使用在那个实例上可用的资源创建的逻辑单元。在一个实施例中,这样的容器被实现为Linux容器。虚拟机实例可以在其上创建一个或多个容器并且在其上加载与用户相关联的一个或多个程序代码(例如,在该实例的容器之一中或者本地高速缓存中)。在一些实施例中,可以用其它虚拟资源实例(例如,在实例库存554中)跟踪容器;容器可以被单独采纳到栈中,或者虚拟机实例的容器可以与VM实例一起被采纳到栈中。每个容器可以具有在其中可用的凭证信息,以便在容器上执行的用户代码可以访问对应的凭证信息允许他们访问的任何内容。
类似地,除了默认数据存储参数(诸如存储数据库546B、C、文件系统等的一个或多个存储卷)之外,数据存储库实例546还可以具有使得在其中可用的凭证和其它访问信息。VM实例542和数据存储库实例546以及任何虚拟资源实例可以具有与其相关联的元数据542D、546A。元数据可以包括与实例配置的参数、执行细节(诸如启动时间和监视数据、状态信息等)相关联的键/值对。因此,元数据可以取决于实例的资源类型、以及实例的执行历史。VM实例542的示例元数据542D可以包括但不限于操作系统542A、运行时环境542B、容器542C的标识符和其它元数据(其可以附加地或可替代地具有它们自己的元数据)、资源类型(例如,虚拟机)和子类型(例如,联网优化的VM)、虚拟化的类型、计算体系架构的类型、与虚拟网络接口和其它虚拟资源的连接、安全组、用于启动VM实例542的机器映像的映像标识符、IP地址、逻辑设备和/或块设备映射等。数据存储库实例546的示例元数据546A可以包括但不限于用于所连接的数据库546B、C、安全组、实例化的区域、与通知流的连接和/或其它虚拟计算资源等的标识符和元数据。
网络可访问服务系统510内的各个组件的说明在性质上是逻辑的,并且这些组件中的一个或多个可以由单个计算设备或多个计算设备实现。在一些实施例中,网络可访问服务系统510可以包括多个前端、多个活动池以及用于各种类型的虚拟资源的其它执行空间。本文描述的实施例不受所示的部署和请求的资源量的限制,并且本领域的技术人员将认识到,网络可访问服务系统510可以包括使用任意数量的物理计算设备502实现的任意数量的虚拟资源实例。
根据图1中描绘的示例系统,图5A-5C图示了若干类型的系统数据,这些数据可以由资源管理系统506接收或使得对于资源管理系统506可用,以便执行资源采纳任务。实例库存554可以包括在VCE 500中执行并与一个或多个栈中的特定栈相关联的虚拟资源实例的记录,如上所述。用户数据556可以包括用户账户数据、用户简档信息、用户提交的和/或导出的用户偏好、用户提交的配置设置、凭证和其它安全设置等。资源类型定义558可以包括资源管理系统506识别虚拟资源实例的资源类型并解释实例的元数据所需的所有信息。资源API 560可以包括使资源管理系统506能够与任何资源类型的实例通信(例如,发送被所述实例理解的命令,并且理解从所述实例接收的响应)所需的所有信息。
在一些实施例中,资源管理系统506可以接收模板512、570,模板512、570包括用于虚拟资源定义的程序代码以及与栈相关联的其它数据元素。可以从数据存储服务或者直接从用户输入接收模板512、570。在一些实施例中,资源管理系统506可以创建或修改模板512、570。例如,资源管理系统506可以接收用于启动栈530及其相关联的资源532、534的原始或主模板512,并可以从目标资源542、546的快照562构成ARD,以用于采纳以产生过继模板570,该过继模板570包括先前的栈定义514和用于栈资源532、534的资源定义516、518,以及用于VM实例542和数据存储库实例546的ARD574、576。
在以上系统的上下文中,图5A-5C图示了示例数据处理流程,借助该流程可以将未从模板512、570实例化的虚拟资源实例添加到逻辑容器或从逻辑容器中删除,而不删除、修改或干扰虚拟资源实例。参考图5A,由系统接收采纳不属于逻辑容器的“候选”资源的请求。请求可以源于来自最终用户的用户输入,或者来自由客户端发出的命令,或者来自另一个触发事件,并且可以由资源管理系统506接收。请求可以是用于采纳VCE 500中的单个虚拟资源实例、一个虚拟资源类型的多个实例、多个资源类型的多个实例或所有候选资源实例,其中实例可以或可以不以某种方式互连。例如,并且如所例示的,请求可以是更新多个资源(具体而言是虚拟机实例532和另一个计算资源534)的栈530,以包括VM实例542和数据存储库实例546作为成员。在一些实施例中,请求可以识别当前用作栈530的“真相来源”(即,准确地识别作为成员的所有资源)的模板512。在所示的示例中,模板512先前曾被用于将栈530和栈资源532、534启动到VCE500中,如实例库存554的相关联记录中所示。在其它实施例中,识别出的模板可以是过继模板570,其可以具有与主模板512相同的标识符或不同的标识符。
在图5A的状态下,过继模板570是先前创建的,并且资源管理系统506在将过继模板570采纳作为真相来源(即,替换主模板512)之前验证过继模板570。验证可以包括收集目标资源542、546的一个或多个快照562,以及使用快照562为目标资源542、546中的每一个构成实际资源定义。然后,资源管理系统506可以将其生成的定义与过继模板570的ARD 574、576进行比较,以确认ARD 574、576准确地描述了对应的目标资源542、546。在另一个实施例中,资源管理系统506可以直接获得目标资源542、546的元数据542D、546A、提取与配置参数相关联的键/值对,并将所述键/值对与ARD574、576进行比较以确定后者的准确性。
参考图5B,假设过继模板570通过了验证,过继模板570可以代替主模板512。在一些实施例中,资源管理系统506可以更新实例库存554中引用主模板512的记录,以替代地引用过继模板570。为了将实例542、546采纳到栈530中,资源管理系统506可以将实例542、546的记录添加到实例库存554中;用于新采纳的资源的记录可以引用栈530的栈标识符和/或过继模板570的模板标识符和/或用于定义过继模板570中的实例542、546的ARD 574、576的逻辑标识符。附加地或可替代地,资源管理系统506可以更新用于栈530的记录以包括对现在是栈530的成员的实例542、546(例如,其实例标识符)的引用。附加地或可替代地,资源管理系统506可以修改在执行环境540中执行的栈530的资源实例。例如,栈实例可以包括为其每个成员存储数据对象的数据结构;资源管理系统506可以从其对应的ADR 574、576为实例542、546中的每一个创建数据对象并将数据对象存储在栈实例的该数据结构中。
参考图5C,先前采纳的资源可以从其过继栈530中分离并留作候选资源或添加到另一个栈。在一些实施例中,资源管理系统506可以接收分离或重新堆叠栈530的采纳的资源实例542、546的请求;附加地或可替代地,资源管理系统506可以接收对栈530执行栈管理操作的请求,并且可以确定该请求包括指示采纳的资源实例542、546中的一者或两者将从栈530中分离的命令或元数据。在一些实施例中,这样的元数据可以被用于区分用于删除识别出的资源的指令和用于分离识别出的资源的指令。例如,资源管理系统506可以(例如,从用户)接收修订的栈模板,该模板是移除了ARD 574、576的过继模板570;资源管理系统506可以使用请求中的元数据来确定应当从栈530中移除对应的虚拟资源实例542、546,而不是删除或销毁它们。在其它实施例中,资源管理系统506可以接收过继模板570并移除先前存储在其中的ARD 574、576。如果不需要ARD 574、576来重新堆叠实例542、546,则可以销毁ARD 574、576,或者可以被存储以用于以后在实例542、546中的任一个被再次采纳的情况下的检索。如果要立即重新堆叠实例542、546,那么系统可以使用新的过继栈的模板中的ARD574、576返回到图5A的状态。然后,资源管理系统506可以更新实例库存554的记录,诸如通过移除分离的实例542、546的记录和/或从栈530的记录中移除对实例542、546的引用。
参考图6A,例如,示例方法600可以由系统在图5A-C的计算环境500中执行,以验证模板中提供的用于启动虚拟资源的栈的ARD,如上所述。在步骤602处,系统可以接收选择将现有虚拟资源实例采纳到栈中的选项的用户输入。例如,系统可以使用户接口被呈现在栈和资源的所有者的计算设备处,并且用户接口可以使所有者能够选择资源采纳并提供包含用户生成的ARD的栈模板。在步骤604处,系统可以识别要验证的栈模板。在步骤606处,系统可以从栈模板获得ARD。例如,可以通过用户输入中的逻辑或物理ID来识别ARD。
在步骤608处,系统可以经由ARD获得要采纳的目标资源的物理标识符。在一些实施例中,用户可以将物理标识符输入到用户接口中,如下面关于图6B进一步所述。在另一个示例中,栈模板所有者可以将物理标识符硬编码到栈模板中,诸如通过将物理标识符包括为ARD的特性。在步骤610处,系统可以将物理标识符与其在模板中的逻辑标识符相关。在一些实施例中,每个ARD具有逻辑标识符,并且目标资源之一的物理标识符旨在与该逻辑标识符相关联。在一些实施例中,用户可以提供这些关联,诸如通过在用户接口中或直接在模板中输入它们。但是,如果物理标识符不能与不匹配的逻辑标识符匹配,那么可以发起指示模板或用户输入无效的失败处理(步骤640)。
在步骤612处,系统可以从与步骤610中的目标资源匹配的ARD确定目标资源的资源类型,并且可以获得与该资源类型对应的API。例如,计算资源服务提供者可以被配置为一定数量的定义的资源类型,每个定义的资源类型可以具有命令集,该命令集可以使用资源API发布给实例类型的虚拟资源实例;假定请求者具有适当的许可,那么该API使得能够进行改变和/或从实例获得信息(例如,配置参数)。在步骤614处,系统可以使用识别出的API和栈所有者的凭证来尝试读取目标资源的元数据。如果该请求被拒绝或以其它方式失败(例如,证书未被授权),那么系统可以发起失败处理(步骤640)。如果系统可以访问目标资源的元数据,那么系统可以获得描述目标资源的配置参数的键/值对的集合。在一个示例中,为了验证值的目的,获得在ARD中引用的每个参数。在另一个示例中,检索所有配置参数。
在步骤616处,系统可以将所述键/值对构成为可以与ARD比较的数据结构。例如,系统可以以服务器的模板语言生成ARD。在另一个示例中,系统可以简单地存储所述键/值对,诸如存储在XML文件中。在步骤620处,系统可以将构成的定义与ARD进行比较,以确定在ARD中描述的配置是否是目标资源的准确配置。例如,系统可以将ARD解析为列出对应的键/值对的XML文件,并且可以将该XML文件与在步骤616处构成的对应XML文件进行比较。如果不匹配,那么可以发起失败处理(步骤640)以指示模板的ARD无效。如果构成的定义和ARD确实匹配,那么系统检查(步骤622)是否必须验证更多的ARD;如果是,那么系统可以返回到步骤610,如果不是,那么确定所有ARD都是有效的(步骤630)。
图6B图示了用于与用户交互以发起如本文所述的资源采纳处理的示例方法650。在步骤652处,系统可以接收用户登录凭证,诸如与用户在计算资源服务提供者的用户账户相关联的用户名和密码。在用户登录的情况下,在步骤654处,系统可以使栈管理界面显示在用户设备上。栈管理界面可以使用户能够查看和改变栈模板、监视实例化的栈的状态、创建和更新栈,以及作为单元执行可以应用于作为栈的成员的所有虚拟资源的其它栈管理操作。栈管理界面还可以使用户能够选择用于采纳候选资源的选项并输入必要的信息以执行采纳。将理解的是,栈管理界面还可以使用户能够发起对本文所述的采纳的资源的取消采纳或分离。示例栈管理界面在图7A-7D中被描绘为web用户接口700,但是可以附加地或可替代地被呈现为控制台、仪表板、命令行、专用软件应用以及任何其它合适的用户接口。
在步骤656处,系统可以接收识别包含要被实例化的栈的定义的栈模板的用户输入。例如,用户可以输入模板文件名或从文件系统对话框中选择模板文件名。在步骤658处,如上所述,系统可以获得栈模板,然后识别模板内的ARD。在确定栈模板包括至少一个ARD后,在步骤660处,系统可以更新栈管理界面以启用用户可选择的资源采纳选项。资源采纳选项可以包括数据字段、下拉菜单和允许用户输入候选资源的识别信息的其它交互式元素。例如,用户可以至少输入要采纳的候选资源的物理标识符,并且在步骤662处,系统可以接收包括物理标识符的用户输入。在一些实施例中,用户可以输入附加信息,诸如一个或多个上下文键,用于消除目标候选资源与另一个虚拟资源的歧义。例如,在不同容器中执行的两个虚拟资源可能具有相同的物理标识符;用户可以包括目标资源正在其中执行的容器的容器标识符作为上下文键。在栈管理用户接口700中用于输入上下文键作为键/值对的示例提示在图7C中示出。在另一个示例中,系统可以识别在用户的VCE中执行的候选资源,并且可以更新栈管理界面以使用户能够查看候选资源的表示并输入要被采纳到栈中的目标候选资源的选择。
在步骤664处,系统可以如上所述将物理标识符与ARD的逻辑标识符相关。在一些实施例中,用户可以输入逻辑标识符以促进这种相关。例如,系统可以更新栈管理界面以显示成对的逻辑标识符和物理标识符字段。如果已经选择了物理标识符,那么它们可以被显示,并且用户可以将对应的逻辑标识符键入适当的字段中。在一些实施例中,栈管理界面可以允许用户仅在逻辑标识符字段中输入第一模板中的有效逻辑标识符之一;物理标识符字段可以类似地受到限制。图7A-7B图示了用户接口700的这种实施例。一旦所有逻辑标识符都与物理标识符匹配,在步骤670处,系统就可以更新栈管理界面以显示“细节和确认”屏幕,诸如图7D的用户接口700中所描绘的,从而使用户能够执行栈管理/资源采纳操作和/或改变用户供应的设置。如果系统未能将逻辑标识符与物理标识符匹配,那么在步骤680处,系统可以更新栈管理界面以向用户指示模板和/或用户输入无效。
图8图示了用于为在用户的VCE中执行的候选虚拟资源自动生成ARD的示例方法800;可以以由负责虚拟资源分配和/或管理的计算资源服务提供者的服务器所使用的模板语言或格式(诸如JSON或YAML)生成ARD。特别地,模板语言或格式可以符合用于在计算资源服务提供者的计算环境中实现IaC资源的模式或其它框架。示例方法800产生与包括VM实例850和数据存储库实例854的示例虚拟资源实例对应的模板870、874。示例实例850、854可以具有如上所述的计算资源分配和配置。VM实例850可以具有用于在VM实例850正在其中执行的VCE或其它计算环境内识别资源本身的物理标识符850A;VM实例850的计算资源可以包括操作系统850B、一个或多个容器实例850C(诸如用于执行软件程序的软件容器实例)、以及其它计算资源。VM实例850可以包括用于建立网络通信的虚拟网络接口,或者可以附接到或被附接到专用或共享的虚拟网络接口。数据存储库实例854可以具有用于在数据存储库实例854正在其中执行的VCE或其它计算环境内识别资源本身的物理标识符854A;数据存储库实例854的计算资源可以包括一个或多个数据库854C和/或其它逻辑存储卷。
实例850、854中的每一个包括存储在实例850、854中或以其它方式与之相关联的对应元数据850D、854B。元数据850D、854B可以在启动实例时和/或在实例的运行时期间生成,并且可以基于资源类型、启动和/或执行参数以及资源的配置等等。至少,元数据850D、854B包括描述对应实例850、854的配置的信息,该信息可以由系统获得,以生成如本文所述的ARD。在所示的示例中,所述信息是键/值对的形式,每个键/值对表示资源配置的参数,但是可以想到其它形式的元数据。此外,诸如VM实例850的实例的计算资源本身可以具有系统获得以描述资源配置的元数据。而且,在一些实施例中,这样的计算资源可以具有它们自己的ARD。例如,容器实例850C可以由根据方法800生成的ARD表示。
在步骤802处,系统可以获得目标候选资源之一的物理标识符。上面关于图6A-6B提供了获得物理标识符的示例。在另一个示例中,系统可以接收包括输入到命令行界面中的命令的用户输入;命令可以包括目标资源中的一个或多个的物理标识符850A、854A作为自变量。在一些实施例中,命令可以是API调用,诸如执行用于生成标识符虚拟资源实例的快照的快照API的请求。在步骤804处,系统确定目标资源的资源类型。例如,系统可以使用在步骤802处获得的物理标识符来查询实例本身或在VCE中执行的实例记录的数据库或列表。在另一个示例中,用户可以在用户接口或API调用中提供资源类型。在步骤806处,系统可以获得针对资源类型的适当资源API,并使用该API来访问目标资源。在一些实施例中,如上所述,系统可以附加地需要凭证或其它安全许可来访问目标资源。
在步骤808处,系统获得描述目标资源的资源配置所需的元数据。例如,系统可以使用资源API向目标资源提交请求,目标资源在响应消息中描述其自身;目标资源可以用结构化或非结构化的文档或数据流进行响应,该文档或数据流在其元数据中包括目标资源被配置为响应于请求而提供的键/值对。当收集目标资源数据的其余部分时,系统可以将这个数据存储在数据存储库中或临时存储器中,或者系统可以通过以快照格式存储键/值对来开始生成快照(步骤812)。在步骤810处,系统可以确定是否有更多资源要包括在快照中,并且如果有,那么可以返回到步骤802。
如果没有更多资源要包括,那么在步骤812处,系统可以创建目标资源的快照。在一些实施例中,快照是包含描述每个目标资源的配置参数的原始(即,从对应的虚拟资源实例获得并且不加修改地存储)键/值对的结构化数据文件。对于每个目标资源,快照可以附加地包括与逻辑标识符相关联的目标资源的物理标识符,该逻辑标识符将被用于在模板内识别目标资源。逻辑标识符可以由系统生成或由用户提供(例如,在调用快照API时作为命令行自变量)。快照可以存储在与用户相关联的数据存储库中,直到快照被用于生成一个或多个模板或被删除或被替换为止。在步骤814处,系统可以将快照变换成一个或多个模板870、874,所述模板被格式化以供适当的服务器使用并且包含目标资源的ARD。在一些实施例中,一旦创建了快照,系统就可以自动变换快照。在其它实施例中,系统可以响应于对要创建的模板的请求而变换快照。例如,用户可以(例如,从控制台或命令行界面)调用(例如,使用为快照生成的快照标识符)识别快照的“构成模板”API。
在一些实施例中,生成的ARD可以是数据库中的结构化数据文件或记录,其可以由用户导入到用于对应栈的主模板中。在其它实施例中,诸如所例示的,系统可以在程序代码中生成可以由适当的服务器执行的完整模板870、874。系统可以为目标资源850、854中的每一个生成单独的模板870、874,或者可以生成包含所有目标资源850、854的ARD 870A、874A的单个模板。系统可以附加地产生采纳数据872,其可以是临时结构化元数据,其包括将每个ARD 870A、874A的对应逻辑标识符870B、874B与每个虚拟资源实例850、854的对应物理标识符850A、854A相关联的记录,以及可选地包括其它数据。可替代地,模板870、874可以包括针对其采纳的资源的采纳数据(即,逻辑/物理标识符关联)。如上所述,ARD 870A、874A包括用于识别模板870、874中的目标资源850、854的逻辑标识符870B、874B,并且还包括从快照中识别出的配置参数,诸如资源类型、目标资源的特性、目标资源的输出、到逻辑卷和/或块设备的映射、描述性参数等。在一些实施例中,ARD 870A、874A的特性之一可以包括目标资源850、854的物理标识符850A、854A。这里提供了从VM实例的快照(例如,响应于构成模板API调用)以JSON格式生成的示例采纳数据对象和模板对象:
用于ARD 870A的模板870可以是自己执行或者在主模板中被引用的孤立文件,或者可以将模板870结合到主模板中。例如,系统可以在用户接口(例如,上述栈管理界面)中以程序代码形式呈现模板870,并且可以使用户能够复制程序代码并将整个模板870粘贴到主模板中。在另一个示例中,系统可以自动地或响应于请求(例如,对采纳资源API的控制台或命令行调用)而将模板870插入主模板或将模板870附加到主模板,或者可以将对模板870文件的引用添加到主模板中。在一些实施例中,用户或系统可以将采纳数据872与模板870的其余部分复制到主模板中,并且系统可以被配置为使用采纳数据872来执行采纳,然后从主模板删除采纳数据872,从而主模板不包含采纳特定的数据。
图9描绘了计算系统(称为服务器900)的一般体系架构,该计算系统如上所述处理在计算环境中向用户分配虚拟计算资源的请求。服务器900的一般体系架构包括可以被用于实现本公开的各方面的计算机硬件和软件模块的布置。硬件模块可以用物理电子设备来实现,如下文更详细地讨论的。服务器900可以包括比图9所示更多(或更少)的元件。但是,不必示出所有这些一般常规的元件以便提供可行的公开。此外,图9中所示的一般体系架构可以被用于实现先前附图中所示的其它组件中的一个或多个,包括资源分配系统、安全性评估系统和网络可访问服务系统,它们中的每一个可以在与其它组件相同或分离的体系架构中实现。
如所例示的,服务器900包括处理单元990、网络接口992、计算机可读介质驱动器994、输入/输出设备接口996,所有这些都可以通过通信总线彼此通信。网络接口992可以提供到一个或多个网络或计算系统的连接性。因此,处理单元990可以经由通信网络从其它计算系统或服务接收信息和指令。处理单元990还可以与存储器980进行通信,并且还经由输入/输出设备接口996提供用于可选的显示器(未示出)的输出信息。输入/输出设备接口996还可以接受来自可选的输入设备(未示出)的输入。
存储器980可以包含处理单元990执行以便实现本公开的一个或多个方面的计算机程序指令(在一些实施例中被分组为模块)。存储器980一般包括RAM、ROM和/或其它持久的、辅助的或非暂态计算机可读介质。存储器980可以包括用于实现本公开的各方面的计算机程序指令和其它信息。例如,在一个实施例中,存储器980实现资源管理系统950、资源分配系统962和计算环境API 960,其可以由处理单元990执行以使资源管理系统950能够访问并以其它方式与上述网络可访问服务系统通信。此外,存储器980可以包括和/或与一个或多个数据储存库(未示出)通信,例如,以访问使用数据、用户数据、安全模型、安全策略等。
资源管理系统950可以包括以硬件、软件或其组合实现的若干服务,并与各种其它服务以及与物理(例如,硬盘驱动器)或虚拟资源(例如,逻辑驱动器)通信,以获得和分析根据被执行的安全性检查或其它安全性评估的数据。在一些实施例中,不同的服务970-974可以分析执行采纳任务所需的每种不同类型的数据,但是在其它实施例中,如果没有收集或分析对应类型的数据,那么服务可以被整合或未使用。客户端可以授权服务来访问与客户端的用户账户相关联的虚拟资源,以便服务可以获得私有和/或远程数据。
在各个示例中,快照服务970可以如上所述创建目标资源配置的快照。变换服务972可以修改用于启动可编程计算基础设施的模板,以包括用于采纳的虚拟资源的资源定义。在一些实施例中,变换服务972可以调用快照服务970以生成快照,变换服务972使用该快照以便以可以结合到模板中的格式来构成资源定义。资源采纳服务974可以执行采纳和分离任务,诸如通过修改执行中资源(包括栈和/或一个或多个采纳的资源)的元数据和其它数据。
根据以上描述,在示例实施例中,本公开提供一种计算系统,该计算系统具有一个或多个处理器和存储由这种计算系统执行的计算机可执行指令或计算机实现的方法(例如,经由所述一个或多个处理器执行指令,以使系统执行该方法)的存储器。该方法包括接收或获得对逻辑容器执行管理操作的请求,该系统作为单元来管理被识别为逻辑容器的成员的虚拟计算资源。该方法还包括获得第一模板,该第一模板包括由一个或多个处理器可读的程序代码,用以在与计算资源服务提供者的用户相关联的虚拟计算环境中定义逻辑容器,该第一模板还包括第一资源定义,该第一资源定义包括逻辑标识符并描述在虚拟计算环境中执行的第一虚拟资源实例的配置。该方法还包括基于所述请求和第一模板中的一者或两者来确定执行管理操作包括执行将第一虚拟资源实例采纳到所述逻辑容器中。该方法还包括确定逻辑标识符与第一虚拟资源实例的物理标识符相关联;获得识别虚拟计算环境中的逻辑容器的主标识符;以及使用该主标识符从包含描述虚拟计算环境中的逻辑容器的多个元数据记录的电子数据存储库中获得第一元数据记录,该第一元数据记录识别在虚拟计算环境中执行的一个或多个栈资源实例作为逻辑容器的成员。该方法还包括通过修改第一元数据记录以将第一虚拟资源实例识别为逻辑容器的成员之一,将第一虚拟资源实例采纳到逻辑容器中而不修改或删除第一虚拟资源实例。
在一些这样的实施例中,第一模板的程序代码还可以由一个或多个处理器读取,以在虚拟计算环境中实例化可编程计算基础设施资源。在这样的实施例中,该方法还可以包括确定管理操作是逻辑容器的更新;获得主模板;确定第一模板包含与第一资源定义组合的主模板;以及在将第一虚拟资源实例采纳到逻辑容器中之后,将主模板替换为第一模板。在这样的实施例中,不从第一模板或主模板实例化第一虚拟资源实例。主模板包括一个或多个处理器可读并且先前用于使逻辑容器和一个或多个栈资源实例在虚拟计算环境中被创建的程序代码。
在一些这样的实施例中,该方法还可以包括:确定管理操作是根据第一模板在虚拟计算环境中创建逻辑容器;与虚拟计算环境的资源分配系统通信以在虚拟计算环境中创建逻辑容器;创建多个元数据记录中的第一元数据记录;以及在确定第一资源定义的逻辑标识符与第一虚拟资源实例的物理标识符相关联之后,在逻辑容器的数据结构中的一个或多个数据对象中的第一数据对象中存储所述逻辑标识符、所述物理标识符和来自在第一资源定义中描述的配置的一个或多个参数。逻辑容器与主标识符相关联,并且包括被配置为包含一个或多个数据对象的数据结构,每个数据对象描述逻辑容器的对应成员。第一元数据记录包括主标识符。
在一些这样的实施例中,该方法还可以包括:从请求中获得逻辑标识符和物理标识符;确定第一虚拟资源实例的资源类型;至少基于第一虚拟资源实例的资源类型来识别能用于从第一虚拟资源实例获得描述第一虚拟资源实例的配置的元数据的应用编程接口(API);使用该API,读取元数据并从元数据中编译多个键/值对,以产生第一虚拟资源实例的配置的快照;以及使用基础设施即代码框架变换所述快照以产生第一模板格式的第一资源定义。
在一些这样的实施例中,该方法还可以包括,在将第一虚拟资源实例采纳到逻辑容器中之后:接收或获得分离逻辑容器的采纳的资源的请求;获得第一模板;基于分离请求中的信息和第一模板中的信息中的任一者或两者,确定逻辑标识符与要分离的采纳的资源相关联;获得与逻辑标识符相关联的物理标识符;使用主标识符从电子数据存储库获得第一元数据记录;以及为了在不修改或删除第一虚拟资源实例的情况下从逻辑容器分离第一虚拟资源实例,修改第一元数据记录以移除作为逻辑容器的成员之一的第一虚拟资源实例。
其它示例实施例包括一种系统,该系统包括一个或多个处理器和存储计算机可执行指令的存储器。在一个这样的实施例中,指令在由一个或多个处理器执行时使系统:接收或获得对逻辑容器执行管理操作的请求;接收或获得定义逻辑容器和一个或多个虚拟计算资源作为该逻辑容器的成员的第一模板,第一模板包括第一逻辑标识符;基于该请求和第一模板中的一者或两者,确定第一逻辑标识符与未从第一模板实例化的第一虚拟资源实例的第一实例标识符相关联;以及将第一实例标识符与逻辑容器相关联,以将第一虚拟资源实例采纳到逻辑容器中,从而使得能够在不删除第一虚拟资源实例的情况下将第一虚拟资源实例作为一个或多个成员之一进行管理。
在一个这样的实施例中,执行指令可以使系统:确定管理操作是在其中部署了第一虚拟资源实例的虚拟计算环境中创建逻辑容器;确定第一模板包括由一个或多个处理器可读的程序代码,用以定义逻辑容器并在虚拟计算环境中创建和配置可编程计算基础设施资源;使用所述程序代码,与虚拟计算环境的资源分配系统通信以创建逻辑容器,并启动与该逻辑容器相关联并表示可编程计算基础设施资源的一个或多个计算资源实例;以及在将第一虚拟资源实例采纳到逻辑容器中之后,将请求的对虚拟计算环境中的逻辑容器的管理操作应用于第一虚拟资源实例和所述一个或多个计算资源实例。
在另一个实施例中,执行指令还可以使系统确定管理操作是要在其中部署了第一虚拟资源实例的虚拟计算环境中创建逻辑容器。指令在被执行时还可以使系统确定第一模板包括:由一个或多个处理器可读的程序代码,用以定义虚拟计算环境中的逻辑容器;以及多个逻辑标识符,每个逻辑标识符与一个或多个虚拟计算资源中的对应虚拟计算资源相关联。指令在被执行时还可以使系统基于所述请求和第一模板中的一者或两者来识别多个实例标识符,每个实例标识符与多个逻辑标识符中的对应逻辑标识符相关联;与虚拟计算环境的资源分配系统通信以创建逻辑容器;以及将所述多个实例标识符与逻辑容器相关联,以使得能够将多个目标资源实例作为一个或多个成员进行管理,而不删除所述多个目标资源实例中的任何一个。每个实例标识符识别在虚拟计算环境中执行并且不是从第一模板实例化的多个目标资源实例中的对应目标资源实例。所述多个目标资源实例包括第一虚拟资源实例。所述多个逻辑标识符包括与第一虚拟资源实例相关联的第一逻辑标识符。
指令在被执行时还可以使系统:接收或获得识别在虚拟计算环境中执行的每个虚拟资源实例的候选信息;以及接收或获得识别与现有逻辑容器之一相关联的每个虚拟资源实例的容器信息。指令在被执行时还可以使系统在识别多个实例标识符之前:将在候选信息中识别出但未在容器信息中识别出的每个虚拟资源实例识别为多个目标资源实例;以及修改第一模板,以将多个逻辑标识符中的每个逻辑标识符与所述多个目标资源实例中的对应目标资源实例相关联。
指令在被执行时还可以使系统:确定请求识别逻辑容器的一个或多个成员的目标资源类型;接收或获得识别在虚拟计算环境中执行的每个虚拟资源实例的候选信息;接收或获得识别与现有逻辑容器之一相关联的每个虚拟资源实例的容器信息;将在候选信息中识别出但未在容器信息中识别出的每个虚拟资源实例识别为一个或多个候选资源实例;以及确定所述一个或多个候选资源实例中的每一个的对应资源类型。执行指令还可以使系统在识别多个实例标识符之前:将其中对应的资源类型是目标资源类型的每个候选资源实例识别为多个目标资源实例;以及修改第一模板,以将多个逻辑标识符中的每个逻辑标识符与所述多个目标资源实例中的对应目标资源实例相关联。
在一个实施例中,指令在由一个或多个处理器执行时还使系统:确定管理操作是执行逻辑容器的更新,逻辑容器的一个或多个成员包括在其中部署了第一虚拟资源实例的虚拟计算环境中执行的第二虚拟资源实例;确定第一模板的程序代码还包括用于在虚拟计算环境中启动第二虚拟资源实例的虚拟资源定义;在虚拟计算环境中创建逻辑容器后,接收或获得由虚拟计算环境的资源分配系统生成的主标识符;以及将第一实例标识符与主标识符相关联,以将第一虚拟资源实例采纳到在虚拟计算环境中创建的逻辑容器中。
在另一个实施例中,指令在由一个或多个处理器执行时使系统在将第一虚拟资源实例采纳到逻辑容器中之后:接收或获得分离逻辑容器的采纳的资源的请求;基于分离请求、第一模板以及在其中部署了第一虚拟资源的虚拟计算环境中创建的逻辑容器的元数据中的一个或多个,确定第一虚拟资源实例要从逻辑容器分离;从第一模板中移除第一逻辑标识符;以及为了在不删除第一虚拟资源实例的情况下将第一虚拟资源实例与逻辑容器分离,解除第一实例标识符和逻辑容器的关联。
指令在由一个或多个处理器执行时还可以使系统:确定分离采纳的资源的请求包括将第一虚拟资源实例采纳到第二逻辑容器中的请求;以及在从所述逻辑容器分离第一虚拟资源实例之后:接收或获得定义第二逻辑容器并包括第二逻辑标识符的第二模板;以及将第一实例标识符与第二逻辑容器相关联,以将第一虚拟资源实例采纳到第二逻辑容器中,从而使得能够将第一虚拟资源实例作为第二逻辑容器的一个或多个成员之一进行管理,而无需删除第一虚拟实例资源实例。
在另一个实施例中,指令在由一个或多个处理器执行时使系统在将第一实例标识符与逻辑容器相关联之前:从第一模板接收或获得包括第一虚拟资源定义的程序代码,该第一虚拟资源定义与第一逻辑标识符相关联并描述第一虚拟资源实例的第一配置;使用第一实例标识符,接收或获得描述第一虚拟资源实例的实际配置的元数据;以及将第一配置与实际配置进行比较,以确定第一虚拟资源定义准确地定义第一虚拟资源实例。
在另一个实施例中,指令在由一个或多个处理器执行时使系统:在接收或获得执行栈操作的请求之前或与之一起,接收或获得第一实例标识符;并且为了接收或获得第一模板:获得与第一虚拟资源实例相关联的元数据;在元数据中识别具有相关联的值并定义第一虚拟资源实例的第一配置的多个参数;以及以第一模板的格式存储所述多个参数、第一逻辑标识符和第一实例标识符作为第一资源定义,该第一资源定义在系统接收或获得第一模板之前被结合到第一模板中。
在另一个示例系统实施例中,指令在由一个或多个处理器执行时使系统:从与一个或多个服务器计算设备通信的客户端计算设备接收或获得包括对逻辑容器执行管理操作的请求的用户输入;确定该用户输入包括要被采纳到逻辑容器中的第一虚拟资源实例的第一实例标识符;接收或获得定义逻辑容器和与逻辑容器相关联的一个或多个虚拟计算资源的第一模板,该第一模板包括与用于采纳资源的第一物理标识符相关联的第一逻辑标识符;将第一实例标识符存储在第一模板中作为第一物理标识符;以及在不删除第一虚拟资源实例的情况下执行管理操作,以使第一虚拟资源实例被采纳到逻辑容器中。
在一个这样的实施例中,为了接收或获得包括所述请求的用户输入,指令在由一个或多个处理器执行时使系统:从与客户端计算设备的用户相关联的多个虚拟资源实例中识别与逻辑容器不相关联的一个或多个候选资源;使用户界面显示在客户端计算设备上;以及接收或获得包括所述请求和包括第一实例标识符的选择的用户输入。所述一个或多个候选资源包括第一虚拟资源实例。所述用户界面使用户能够查看所述一个或多个候选资源的表示并且输入要采纳到逻辑容器中的所述一个或多个候选资源的选择。
在另一个这样的实施例中,指令在由一个或多个处理器执行时使系统通过以下操作来接收或获得包括请求的用户输入:使用户界面显示在客户端计算设备上;以及接收或获得包括所述请求、所选择的逻辑标识符和所选择的物理标识符的用户输入。所述用户界面使用户能够选择将目标资源采纳到逻辑容器中的选项以及提供所选择的逻辑标识符和所选择的物理标识符。指令在由一个或多个处理器执行时还使系统:确定所选择的逻辑标识符是第一逻辑标识符;以及确定所选择的物理标识为第一实例标识符。
指令在由一个或多个处理器执行时还可以使系统使用户界面使用户能够在第一字段中提供所选择的逻辑标识符并在第二字段中提供所选择的物理标识符,该用户界面允许用户仅在第一字段中输入第一模板中的一个或多个逻辑标识符之一,并且仅在第二字段中输入与用户相关联的多个虚拟资源实例之一的对应实例标识符,所述一个或多个逻辑标识符包括第一逻辑标识符并且所述多个虚拟资源实例包括第一虚拟资源实例。
在另一个这样的实施例中,指令在由一个或多个处理器执行时还使系统:确定用户输入包括获得第一虚拟资源实例的快照的第一请求;获得与第一虚拟资源实例相关联的元数据;在元数据中识别具有相关联的值并定义第一虚拟资源实例的第一配置的多个参数;创建包括第一逻辑标识符、第一实例标识符以及所述多个参数和相关联的值的快照;确定用户输入包括使用快照为第一虚拟资源实例构成虚拟资源定义的第二请求;以及将快照变换成第一模板的格式的第一资源定义,该第一资源定义在系统接收或获得第一模板之前被结合到第一模板中。
各种实施例还可以在多种操作环境中实现,在一些情况下,所述操作环境可以包括一个或多个用户计算机、计算设备或处理设备,其可以被用于操作许多应用中的任何一个。用户或客户端设备可以包括多个计算机中的任何一个,诸如运行标准操作系统的台式计算机、膝上型计算机或平板计算机,以及运行移动软件并能够支持多种联网和消息传递协议的蜂窝、无线和手持设备。这样的系统还可以包括多个工作站,这些工作站运行各种可商业获得的操作系统中的任何一种以及其它已知的应用,以用于诸如开发和数据库管理。这些设备还可以包括其它电子设备,诸如虚设终端、瘦客户端、游戏系统和能够经由网络进行通信的其它设备。这些设备还可以包括虚拟设备,诸如虚拟机、管理程序和能够经由网络进行通信的其它虚拟设备。
本公开的各种实施例利用本领域技术人员将熟悉的至少一种网络来支持使用各种商业上可用的协议中的任何一种进行通信,诸如传输控制协议/互联网协议(“TCP/IP”)、用户数据报协议(“UDP”)、在开放系统互连(“OSI”)模型的各个层中工作的协议、文件传输协议(“FTP”)、通用即插即用(“UpnP”)、网络文件系统(“NFS”)、通用互联网文件系统(“CIFS”)和AppleTalk。该网络可以是例如局域网、广域网、虚拟专用网、互联网、内联网、外联网、公共交换电话网、红外网、无线网、卫星网、及其任意组合。在一些实施例中,可以使用面向连接的协议在网络端点之间进行通信。面向连接的协议(有时称为基于连接的协议)能够在有序流中传输数据。面向连接的协议可以是可靠的或者不可靠的。例如,TCP协议是可靠的面向连接的协议。异步传输模式(“ATM”)和帧中继是不可靠的面向连接的协议。面向连接的协议与诸如以不保证次序地传输分组的UDP的面向分组的协议形成对比。
在利用web服务器的实施例中,web服务器可以运行各种服务器或中间层应用中的任何一种,包括超文本传输协议(“HTTP”)服务器、FTP服务器、公共网关接口(“CGI”)服务器、数据服务器、Java服务器、Apache服务器和业务应用服务器。服务器也可以能够响应于来自用户设备的请求而执行程序或脚本,诸如通过执行可以被实现为用任何编程语言(诸如C、C#或C++)或任何脚本语言(诸如Ruby、PHP、Perl、Python或TCL)及其组合编写的一个或多个脚本或程序的一个或多个web应用。服务器还可以包括数据库服务器,包括但不限于可从和商购的那些数据库服务器,以及诸如MySQL、Postgres、SQLite、MongoDB的开源服务器,以及能够存储、检索和访问结构化或非结构化数据的任何其它服务器。数据库服务器可以包括基于表的服务器、基于文档的服务器、非结构化服务器、关系服务器、非关系服务器或这些和/或其它数据库服务器的组合。
如上面所讨论的,环境可以包括各种数据存储库以及其它存储器和存储介质。这些可以驻留在各种位置,诸如在一个或多个计算机本地(和/或驻留在其中)的或远离网络上的任何或所有计算机的存储介质上。在特定的一组实施例中,信息可以驻留在本领域技术人员熟悉的存储区域网络(“SAN”)中。类似地,可以适当地将用于执行归因于计算机、服务器或其它网络设备的功能的任何必要文件本地和/或远程地存储。在系统包括计算机化设备的情况下,每个这样的设备可以包括可以经由总线电耦合的硬件元件,这些元件包括例如至少一个中央处理单元(“CPU”或“处理器”)、至少一个输入设备(例如,鼠标、键盘、控制器、触摸屏或小键盘)和至少一个输出设备(例如,显示设备、打印机或扬声器)。这样的系统还可以包括一个或多个存储设备,诸如磁盘驱动器、光存储设备以及固态存储设备(诸如随机存取存储器(“RAM”)或只读存储器(“ROM”)),以及可移动介质设备、存储卡、闪存卡等。
这样的设备还可以包括计算机可读存储介质读取器、通信设备(例如,调制解调器、网卡(无线或有线)、红外通信设备等)以及如上所述的工作存储器。计算机可读存储介质读取器可以与计算机可读存储介质连接或被配置为接收计算机可读存储介质,该计算机可读存储介质表示远程、本地、固定和/或可移动存储设备,以及用于临时和/或更永久地包含、存储、传输和检索计算机可读信息的存储介质。系统和各种设备通常还将包括位于至少一个工作存储器设备内的多个软件应用、模块、服务或其它元素,包括操作系统和应用程序,诸如客户端应用或web浏览器。此外,还可以使用定制的硬件和/或可以在硬件、软件(包括便携式软件,诸如小程序)或两者中实现特定元素。另外,可以采用到其它计算设备(诸如网络输入/输出设备)的连接。
用于包含代码或代码的部分的存储介质和计算机可读介质可以包括本领域已知或使用的任何适当介质,包括存储介质和通信介质,诸如但不限于以任何用于存储和/或传输信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的方法或技术实现的易失性和非易失性、可移动和不可移动介质,包括RAM、ROM、电可擦除可编程只读存储器(“EEPROM”)、闪存或其它存储器技术、压缩盘只读存储器(“CD-ROM”)、数字多功能盘(DVD)或其它光学存储装置、磁带盒、磁带、磁盘存储装置或其它磁存储设备或任何其它可以被用于存储期望信息并可以由系统设备访问的介质。基于本文提供的公开和教导,本领域普通技术人员将认识到实现各种实施例的其它方式和/或方法。
因而,说明书和附图应被认为是说明性而不是限制性的。但是,很明显,在不脱离权利要求所阐述的本发明的更宽泛的精神和范围的情况下,可以对其做出各种修改和改变。
其它变型在本公开的精神内。因此,虽然所公开的技术易于进行各种修改和替代构造,但是其某些示出的实施例在附图中示出并且已经在上面进行了详细描述。但是,应当理解,无意将本发明限制到所公开的一种或多种具体形式,相反,本发明是要覆盖落入如所附权利要求所定义的本发明的精神和范围内的所有修改、替代构造和等同物。
在描述所公开的实施例的上下文中(尤其是在所附权利要求的上下文中)术语“一”、“一个”和“该”以及类似的指代的使用应该被解释为涵盖单数形式和复数形式,除非本文另有指示或明显与上下文矛盾。除非另有说明,否则术语“包括”、“具有”和“包含”应被解释为开放性术语(即,意思是“包括但不限于”)。术语“连接的”在未经修改并且指物理连接时应该被解释为部分或全部地包含在内、附接到或连接在一起,即使中间存在某物。除非本文另有指示,否则本文中数值范围的陈述仅旨在用作分别指代落入该范围内的每个单独值的简写方法,并且每个单独的值都被结合到说明书中,就好像其在本文中被单独陈述了一样。除非另外指出或与上下文矛盾,否则术语“集合”(例如,“项目的集合”)或“子集”的使用应该被解释为包括一个或多个成员的非空集合。另外,除非另外指出或与上下文矛盾,否则术语对应集合的“子集”不一定表示对应集合的真子集,而是子集和对应集合可以相等。
除非另有明确说明或以其它方式与上下文明显矛盾,否则连接性语言(诸如形式为“A、B和C中的至少一个”或“A、B和C中的至少一个”的短语)关于上下文一般被理解为表示项、术语等,可以是A或B或C或者是A和B和C的集合的任何非空子集。例如,在具有三个成员的集合的说明性示例中,连接性短语“A、B和C中的至少一个”和“A、B和C中的至少一个”是指以下集合中的任何一个:{A},{B},{C},{A,B},{A,C},{B,C},{A,B,C}。因此,这种连接性语言一般不意图暗示某些实施例要求各自存在至少一个A、至少一个B和至少一个C。此外,除非另有说明或与上下文矛盾,否则术语“多个”指示为复数的状态(例如,“多个项”指示多个项)。当明确地或者通过上下文这样指示时,多个项的数量至少为两个,但是可以更多。
除非本文另外指出或与上下文明显矛盾,否则本文描述的处理的操作可以以任何合适的次序执行。可以在配置有可执行指令的一个或多个计算机系统的控制下执行本文描述的处理(或其变型和/或组合),并且可以将其实现为在一个或多个处理器上共同执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、通过硬件或其组合实现。代码可以例如以包括可由一个或多个处理器执行的多个指令的计算机程序的形式存储在计算机可读存储介质上。计算机可读存储介质可以是非暂态的。在一些实施例中,代码被存储在其上存储有可执行指令的一个或多个非暂态计算机可读存储介质的集合上,所述可执行指令在被计算机系统的一个或多个处理器执行时(即,作为被执行的结果)使计算机系统执行本文描述的操作。非暂态计算机可读存储介质的集合可以包括多个非暂态计算机可读存储介质,并且多个非暂态计算机可读存储介质中的一个或多个单独的非暂态存储介质可以缺少所有代码,而所述多个非暂态计算机可读存储介质共同存储所有代码。另外,在一些示例中,可执行指令被执行,使得不同指令由不同处理器执行。作为说明性示例,非暂态计算机可读存储介质可以存储指令。主CPU可以执行一些指令,而图形处理器单元可以执行其它指令。一般而言,计算机系统的不同组件可以具有单独的处理器,并且不同的处理器可以执行指令的不同子集。
因而,在一些示例中,计算机系统被配置为实现单独地或共同地执行本文描述的处理的操作的一个或多个服务。这样的计算机系统可以例如配置有使得能够执行操作的适用的硬件和/或软件。另外,在一些示例中,实现本公开的各种实施例的计算机系统可以是单个设备,而在其它示例中,其可以是包括多个设备的分布式计算机系统,这多个设备以不同方式操作,使得分布式计算机系统执行本文描述的操作并且使得单个设备可以不执行所有操作。
本文提供的任何和所有示例或示例性语言(例如,“诸如”)的使用仅旨在更好地阐明本发明的实施例,并且不构成对本发明范围的限制,除非另外指明。说明书中的任何语言都不应当被解释为指示任何未要求保护的要素对于本发明的实践必不可少。
本文描述了本公开的实施例,包括发明人已知的用于执行本发明的最佳模式。通过阅读前述描述,那些实施例的变型对于本领域普通技术人员而言将变得显而易见。发明人预期熟练的技术人员适当地采用这些变型,并且发明人希望以不同于本文具体描述的方式来实践本公开的实施例。因而,本公开的范围包括适用法律所允许的所附权利要求中记载的主题的所有修改和等同物。而且,除非本文另外指出或与上下文明显矛盾,否则上述元素在其所有可能的变型中的任何组合均被本公开的范围涵盖。
本文所引用的所有参考文献(包括出版物、专利申请和专利)均以引用的方式并入本文,如同每个参考文献被单独且具体地指示为通过引用并入并在本文中全文阐述一样。
Claims (15)
1.一种由计算机系统执行的计算机实现的方法,该计算机系统具有一个或多个处理器和存储计算机可执行指令的存储器,该方法包括:
接收对逻辑容器执行管理操作的请求,该系统作为单元来管理被识别为所述逻辑容器的成员的虚拟计算资源;
获得第一模板,该第一模板包括由所述一个或多个处理器可读的程序代码,用以在与计算资源服务提供者的用户相关联的虚拟计算环境中定义所述逻辑容器,该第一模板还包括第一资源定义,该第一资源定义包括逻辑标识符并描述在所述虚拟计算环境中执行的第一虚拟资源实例的配置;
基于所述请求和第一模板中的一者或两者来确定执行所述管理操作包括执行将第一虚拟资源实例采纳到所述逻辑容器中;
确定所述逻辑标识符与第一虚拟资源实例的物理标识符相关联;
获得识别所述虚拟计算环境中的所述逻辑容器的主标识符;
使用该主标识符从包含描述所述虚拟计算环境中的所述逻辑容器的多个元数据记录的电子数据存储库中获得第一元数据记录,该第一元数据记录识别在所述虚拟计算环境中执行的一个或多个栈资源实例作为所述逻辑容器的成员;以及
通过修改第一元数据记录以将第一虚拟资源实例识别为所述逻辑容器的成员之一,将第一虚拟资源实例采纳到所述逻辑容器中而不修改或删除第一虚拟资源实例。
2.如权利要求1所述的方法,其中第一模板的程序代码还由所述一个或多个处理器读取以在所述虚拟计算环境中实例化可编程计算基础设施资源;并且其中该方法还包括:
确定所述管理操作是所述逻辑容器的更新;
获得主模板,该主模板包括由所述一个或多个处理器可读并且先前用于使所述逻辑容器和所述一个或多个栈资源实例在所述虚拟计算环境中被创建的程序代码;
确定第一模板包含与第一资源定义组合的主模板,其中第一虚拟资源实例不是从第一模板或主模板实例化的;以及
在将第一虚拟资源实例采纳到所述逻辑容器中之后,将主模板替换为第一模板。
3.如权利要求1所述的方法,该方法还包括:
确定所述管理操作是根据第一模板在所述虚拟计算环境中创建所述逻辑容器;
与所述虚拟计算环境的资源分配系统通信以在所述虚拟计算环境中创建所述逻辑容器,所述逻辑容器与所述主标识符相关联并且包括被配置为包含一个或多个数据对象的数据结构,每个所述数据对象描述所述逻辑容器的对应成员;
创建所述多个元数据记录中的第一元数据记录,该第一元数据记录包括所述主标识符;以及
在确定第一资源定义的所述逻辑标识符与第一虚拟资源实例的所述物理标识符相关联之后,在所述逻辑容器的所述数据结构中的所述一个或多个数据对象中的第一数据对象中存储所述逻辑标识符、所述物理标识符和来自在第一资源定义中描述的所述配置的一个或多个参数。
4.如权利要求1所述的方法,其中该方法还包括:
从所述请求获得所述逻辑标识符和所述物理标识符;
确定第一虚拟资源实例的资源类型;
至少基于第一虚拟资源实例的资源类型来识别能用于从第一虚拟资源实例获得描述第一虚拟资源实例的配置的元数据的应用编程接口(API);
使用该API,读取所述元数据并从所述元数据编译多个键/值对,以产生第一虚拟资源实例的配置的快照;以及
使用基础设施即代码框架变换所述快照以产生第一模板的格式的第一资源定义。
5.如权利要求1所述的方法,其中该方法还包括在将第一虚拟资源实例采纳到所述逻辑容器中之后:
接收分离所述逻辑容器的采纳的资源的请求;
获得第一模板;
基于用于分离的所述请求中的信息和第一模板中的信息中的任一者或两者,确定所述逻辑标识符与要分离的采纳的资源相关联;
获得与所述逻辑标识符相关联的物理标识符;
使用所述主标识符从所述电子数据存储库获得第一元数据记录;以及
为了在不修改或删除第一虚拟资源实例的情况下从所述逻辑容器分离第一虚拟资源实例,修改第一元数据记录以移除作为所述逻辑容器的成员之一的第一虚拟资源实例。
6.一种系统,包括一个或多个处理器和存储计算机可执行指令的存储器,所述指令在由所述一个或多个处理器执行时使所述系统:
接收对逻辑容器执行管理操作的请求;
接收定义所述逻辑容器和作为该逻辑容器的成员的一个或多个虚拟计算资源的第一模板,该第一模板包括第一逻辑标识符;
基于所述请求和第一模板中的一者或两者,确定第一逻辑标识符与不是从第一模板实例化的第一虚拟资源实例的第一实例标识符相关联;以及
将第一实例标识符与所述逻辑容器相关联,以将第一虚拟资源实例采纳到所述逻辑容器中,从而使得能够在不删除第一虚拟资源实例的情况下将第一虚拟资源实例作为所述一个或多个成员之一进行管理。
7.如权利要求6所述的系统,其中执行所述指令使所述系统:
确定所述管理操作是在其中部署了第一虚拟资源实例的虚拟计算环境中创建所述逻辑容器;
确定第一模板包括由所述一个或多个处理器可读的程序代码,用以定义所述逻辑容器并在所述虚拟计算环境中创建和配置可编程计算基础设施资源;
使用所述程序代码,与所述虚拟计算环境的资源分配系统通信以创建所述逻辑容器并启动与该逻辑容器相关联并表示所述可编程计算基础设施资源的一个或多个计算资源实例;以及
在将第一虚拟资源实例采纳到所述逻辑容器中之后,将所请求的对所述虚拟计算环境中的所述逻辑容器的管理操作应用于第一虚拟资源实例和所述一个或多个计算资源实例。
8.如权利要求6所述的系统,其中执行所述指令还使所述系统:
确定所述管理操作是要在其中部署了第一虚拟资源实例的虚拟计算环境中创建所述逻辑容器;
确定第一模板包括:
由所述一个或多个处理器可读的程序代码,用以定义所述虚拟计算环境中的所述逻辑容器;以及
多个逻辑标识符,每个逻辑标识符与所述一个或多个虚拟计算资源中的对应虚拟计算资源相关联,所述多个逻辑标识符包括与第一虚拟资源实例相关联的第一逻辑标识符;
基于所述请求和第一模板中的一者或两者来识别多个实例标识符,每个实例标识符与所述多个逻辑标识符中的对应逻辑标识符相关联,每个实例标识符识别在所述虚拟计算环境中执行并且不是从第一模板实例化的多个目标资源实例中的对应目标资源实例,所述多个目标资源实例包括第一虚拟资源实例;
与所述虚拟计算环境的资源分配系统通信以创建所述逻辑容器;以及
将所述多个实例标识符与所述逻辑容器相关联,以使得能够将所述多个目标资源实例作为所述一个或多个成员进行管理,而无需删除所述多个目标资源实例中的任何一个。
9.如权利要求8所述的系统,其中执行所述指令还使所述系统:
获得识别在所述虚拟计算环境中执行的每个虚拟资源实例的候选信息;
获得识别与现有逻辑容器之一相关联的每个虚拟资源实例的容器信息;以及
在识别所述多个实例标识符之前:
将在所述候选信息中识别出但未在所述容器信息中识别出的每个虚拟资源实例识别为所述多个目标资源实例;以及
修改第一模板以将所述多个逻辑标识符中的每个逻辑标识符与所述多个目标资源实例中的对应目标资源实例相关联。
10.如权利要求8所述的系统,其中执行所述指令还使所述系统:
确定所述请求识别所述逻辑容器的所述一个或多个成员的目标资源类型;
获得识别在所述虚拟计算环境中执行的每个虚拟资源实例的候选信息;
获得识别与现有逻辑容器之一相关联的每个虚拟资源实例的容器信息;
将在所述候选信息中识别出但未在所述容器信息中识别出的每个虚拟资源实例识别为一个或多个候选资源实例;
确定所述一个或多个候选资源实例中的每个的对应资源类型;以及
在识别所述多个实例标识符之前:
将对应资源类型是所述目标资源类型的每个候选资源实例识别为所述多个目标资源实例;以及
修改第一模板以将所述多个逻辑标识符中的每个逻辑标识符与所述多个目标资源实例中的对应目标资源实例相关联。
11.如权利要求6所述的系统,其中所述指令在由所述一个或多个处理器执行时还使所述系统:
确定所述管理操作是执行所述逻辑容器的更新,所述逻辑容器的所述一个或多个成员包括在其中部署了第一虚拟资源实例的虚拟计算环境中执行的第二虚拟资源实例;
确定第一模板的程序代码还包括用于在所述虚拟计算环境中启动第二虚拟资源实例的虚拟资源定义;
在所述虚拟计算环境中创建所述逻辑容器后,获得由所述虚拟计算环境的资源分配系统生成的主标识符;以及
将第一实例标识符与所述主标识符相关联,以将第一虚拟资源实例采纳到在所述虚拟计算环境中创建的所述逻辑容器中。
12.如权利要求6所述的系统,其中所述指令在由所述一个或多个处理器执行时使所述系统在将第一虚拟资源实例采纳到所述逻辑容器中之后:
接收分离所述逻辑容器的采纳的资源的请求;
基于用于分离的所述请求、第一模板以及在其中部署了第一虚拟资源的虚拟计算环境中创建的所述逻辑容器的元数据中的一者或多者,确定第一虚拟资源实例要从所述逻辑容器分离;
从第一模板移除第一逻辑标识符;以及
为了在不删除第一虚拟资源实例的情况下将第一虚拟资源实例从所述逻辑容器分离,解除第一实例标识符和所述逻辑容器的关联。
13.如权利要求12所述的系统,其中所述指令在由所述一个或多个处理器执行时使所述系统:
确定分离采纳的资源的所述请求包括将第一虚拟资源实例采纳到第二逻辑容器中的请求;以及
在从所述逻辑容器分离第一虚拟资源实例后:
接收定义第二逻辑容器并包括第二逻辑标识符的第二模板;以及
将第一实例标识符与第二逻辑容器相关联,以将第一虚拟资源实例采纳到第二逻辑容器中,从而使得能够将第一虚拟资源实例作为第二逻辑容器的一个或多个成员之一进行管理,而无需删除第一虚拟实例资源实例。
14.如权利要求6所述的系统,其中所述指令在由所述一个或多个处理器执行时使所述系统在将第一实例标识符与所述逻辑容器相关联之前:
从第一模板获得包括第一虚拟资源定义的程序代码,该第一虚拟资源定义与第一逻辑标识符相关联并描述第一虚拟资源实例的第一配置;
使用第一实例标识符,获得描述第一虚拟资源实例的实际配置的元数据;以及
将第一配置与所述实际配置进行比较,以确定第一虚拟资源定义准确地定义第一虚拟资源实例。
15.如权利要求6所述的系统,其中所述指令在由所述一个或多个处理器执行时使所述系统:
在接收执行栈操作的请求之前或与接收执行栈操作的请求一起,接收第一实例标识符;以及
为了接收第一模板:
获得与第一虚拟资源实例相关联的元数据;
在所述元数据中识别具有相关联的值并定义第一虚拟资源实例的第一配置的多个参数;以及
以第一模板的格式存储所述多个参数、第一逻辑标识符和第一实例标识符作为第一资源定义,该第一资源定义在所述系统接收第一模板之前被结合到第一模板中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/933,184 US11513864B2 (en) | 2018-03-22 | 2018-03-22 | Adoption of existing virtual computing resources into logical containers for management operations |
US15/933,184 | 2018-03-22 | ||
PCT/US2019/023388 WO2019183366A1 (en) | 2018-03-22 | 2019-03-21 | Adoption of existing virtual computing resources into logical containers for management operations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111936974A true CN111936974A (zh) | 2020-11-13 |
Family
ID=66041714
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980020972.8A Pending CN111936974A (zh) | 2018-03-22 | 2019-03-21 | 将现有虚拟计算资源采纳到用于管理操作的逻辑容器中 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11513864B2 (zh) |
CN (1) | CN111936974A (zh) |
WO (1) | WO2019183366A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11153224B2 (en) * | 2017-02-09 | 2021-10-19 | Radcom Ltd. | Method of providing cloud computing infrastructure |
Families Citing this family (44)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107666505B (zh) * | 2016-07-29 | 2020-09-15 | 京东方科技集团股份有限公司 | 对资源接入进行控制的方法和装置 |
US11003654B2 (en) * | 2017-09-20 | 2021-05-11 | AppExtremes, LLC | Systems and methods for requesting, tracking and reporting modifications to a record |
CN111742524B (zh) * | 2018-02-20 | 2021-12-14 | 华为技术有限公司 | 企业虚拟专用网络(vpn)与虚拟私有云(vpc)粘连 |
US11316857B2 (en) * | 2018-07-11 | 2022-04-26 | Cyber Ark Software Ltd. | Automated creation of dynamic privileged access resources |
US11366680B2 (en) | 2018-07-19 | 2022-06-21 | Twistlock, Ltd. | Cloud native virtual machine runtime protection |
US10872029B1 (en) * | 2018-11-21 | 2020-12-22 | Candid Partners, LLC | System, apparatus and method for deploying infrastructure to the cloud |
US11983544B2 (en) | 2018-12-06 | 2024-05-14 | HashiCorp | Lifecycle management for information technology infrastructure |
US11050613B2 (en) | 2018-12-06 | 2021-06-29 | HashiCorp | Generating configuration files for configuring an information technology infrastructure |
US11669364B2 (en) * | 2018-12-06 | 2023-06-06 | HashiCorp. Inc. | Validation of execution plan for configuring an information technology infrastructure |
US11050625B2 (en) | 2018-12-06 | 2021-06-29 | HashiCorp | Generating configuration files for configuring an information technology infrastructure |
US11455315B1 (en) * | 2018-12-11 | 2022-09-27 | Palantir Technologies Inc. | Central user interface for accessing and upgrading of dataset integrations |
US10963282B2 (en) | 2018-12-11 | 2021-03-30 | Amazon Technologies, Inc. | Computing service with configurable virtualization control levels and accelerated launches |
US10778539B1 (en) * | 2018-12-14 | 2020-09-15 | Amazon Technologies, Inc. | Resolving configuration drift for computing resource stacks |
US10884732B1 (en) * | 2019-08-29 | 2021-01-05 | International Business Machines Corporation | Automation utilizing infrastructure as code modules |
JP7231518B2 (ja) * | 2019-08-30 | 2023-03-01 | 株式会社日立製作所 | パッケージ化支援システムおよびパッケージ化支援方法 |
US11200157B1 (en) * | 2019-09-17 | 2021-12-14 | Amazon Technologies, Inc. | Automated execution reporting for container builds |
EP4022431A1 (en) * | 2019-10-29 | 2022-07-06 | Google LLC | Automated assistant architecture for preserving privacy of application content |
US11422844B1 (en) | 2019-11-27 | 2022-08-23 | Amazon Technologies, Inc. | Client-specified network interface configuration for serverless container management service |
US11392422B1 (en) * | 2019-11-27 | 2022-07-19 | Amazon Technologies, Inc. | Service-managed containers for container orchestration service |
WO2021102915A1 (zh) * | 2019-11-29 | 2021-06-03 | Oppo广东移动通信有限公司 | 物联网设备的配置方法、装置及存储介质 |
US11132226B2 (en) * | 2020-01-03 | 2021-09-28 | International Business Machines Corporation | Parallel resource provisioning |
US11403150B1 (en) | 2020-06-23 | 2022-08-02 | Amazon Technologies, Inc. | Replenishment-aware resource usage management |
US11573816B1 (en) | 2020-06-26 | 2023-02-07 | Amazon Technologies, Inc. | Prefetching and managing container images using cluster manifest |
US11487591B1 (en) | 2020-06-29 | 2022-11-01 | Amazon Technologies, Inc. | Automatically configuring execution of a containerized application |
CN112051988A (zh) * | 2020-09-15 | 2020-12-08 | 北京达佳互联信息技术有限公司 | 模块处理方法、装置及服务器 |
WO2022068796A1 (zh) * | 2020-09-30 | 2022-04-07 | 华为云计算技术有限公司 | 云平台及基于云平台的程序代码处理方法 |
US11853807B1 (en) | 2020-12-01 | 2023-12-26 | Amazon Technologies, Inc. | Cluster scaling based on task state information |
US11777799B2 (en) * | 2020-12-21 | 2023-10-03 | Cisco Technology, Inc. | Cloud portal system for managing networking and computing equipment by generating contextual guides specific to affected resource(s) |
US11645104B2 (en) * | 2020-12-22 | 2023-05-09 | Reliance Jio Infocomm Usa, Inc. | Intelligent data plane acceleration by offloading to distributed smart network interfaces |
CN112804100B (zh) * | 2021-01-08 | 2022-04-26 | 烽火通信科技股份有限公司 | 一种基于容器的io接口资源的控制方法和物联终端 |
US11797287B1 (en) | 2021-03-17 | 2023-10-24 | Amazon Technologies, Inc. | Automatically terminating deployment of containerized applications |
US11900173B2 (en) * | 2021-05-18 | 2024-02-13 | Kyndryl, Inc. | Container runtime optimization |
US11989586B1 (en) | 2021-06-30 | 2024-05-21 | Amazon Technologies, Inc. | Scaling up computing resource allocations for execution of containerized applications |
US11892418B1 (en) | 2021-06-30 | 2024-02-06 | Amazon Technologies, Inc. | Container image inspection and optimization |
US11995466B1 (en) | 2021-06-30 | 2024-05-28 | Amazon Technologies, Inc. | Scaling down computing resource allocations for execution of containerized applications |
CN113626189B (zh) * | 2021-08-03 | 2024-02-06 | 优刻得科技股份有限公司 | 资源管理模型的构建方法、设备和介质 |
US20230037416A1 (en) * | 2021-08-06 | 2023-02-09 | Pulumi Corporation | Reusable multi-language component for a desired state configuration system |
US20240037227A1 (en) * | 2022-07-27 | 2024-02-01 | Dazz, Inc. | Techniques for securing deployment of infrastructure as code |
US11711314B1 (en) * | 2022-04-22 | 2023-07-25 | Amazon Technologies, Inc. | Grouping resource metadata tags |
US11818055B1 (en) * | 2022-05-31 | 2023-11-14 | Walmart Apollo, Llc | Systems and methods for automating resource deployment |
US20240045770A1 (en) * | 2022-08-02 | 2024-02-08 | Rubrik, Inc. | Techniques for using data backup and disaster recovery configurations for application management |
CN115951974B (zh) * | 2023-03-10 | 2023-05-26 | 浙江宇视科技有限公司 | Gpu虚拟机的管理方法、系统、设备和介质 |
CN116028233B (zh) * | 2023-03-29 | 2023-06-09 | 北京大数据先进技术研究院 | 一种ai计算资源的数字对象组织与共享方法和装置 |
CN117240348B (zh) * | 2023-11-16 | 2024-01-26 | 天勰力(山东)卫星技术有限公司 | 基于软件定义卫星共享星座的虚拟卫星构建方法和系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320605A1 (en) * | 2010-06-28 | 2011-12-29 | Reto Kramer | Provisioning Multiple Network Resources |
US20130332920A1 (en) * | 2012-06-07 | 2013-12-12 | Red Hat Israel, Ltd. | Live virtual machine template creation |
US20140365668A1 (en) * | 2012-03-19 | 2014-12-11 | Amazon Technologies, Inc. | Using a template to update a stack of resources |
CN105190558A (zh) * | 2013-10-15 | 2015-12-23 | 思科技术公司 | 云资源的加速实例化 |
US20160004551A1 (en) * | 2013-10-04 | 2016-01-07 | Hitachi, Ltd. | Resource management system and resource management method |
CN106133688A (zh) * | 2014-03-28 | 2016-11-16 | 亚马逊技术有限公司 | 协调容器布置和执行的服务的实施 |
US20170339013A1 (en) * | 2016-05-20 | 2017-11-23 | CloudCoreo, Inc. | Deploying and monitoring multiplatform cloud-based infrastructures |
CN107667503A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 用于异构资源云的资源管理技术 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8327350B2 (en) * | 2007-01-02 | 2012-12-04 | International Business Machines Corporation | Virtual resource templates |
US9195936B1 (en) * | 2011-12-30 | 2015-11-24 | Pegasystems Inc. | System and method for updating or modifying an application without manual coding |
US9075664B2 (en) * | 2012-08-28 | 2015-07-07 | Vce Company, Llc | Application dependent data center integration |
GB2507261A (en) * | 2012-10-23 | 2014-04-30 | Ibm | Reverting to a snapshot of a VM by modifying metadata |
US9256452B1 (en) | 2012-11-14 | 2016-02-09 | Amazon Technologies, Inc. | Providing an instance availability estimate |
US9002997B2 (en) * | 2013-01-22 | 2015-04-07 | Amazon Technologies, Inc. | Instance host configuration |
US20140249927A1 (en) * | 2013-03-04 | 2014-09-04 | Michael De Angelo | System and method for cyclic recognition-primed notifications and responsive situational awareness in an advertising display network |
US9317410B2 (en) * | 2013-03-15 | 2016-04-19 | International Business Machines Corporation | Testing functional correctness and idempotence of software automation scripts |
US10592068B1 (en) * | 2014-03-27 | 2020-03-17 | Amazon Technologies, Inc. | Graphic composer for service integration |
US9749195B2 (en) | 2014-12-05 | 2017-08-29 | Accenture Global Services Limited | Technical component provisioning using metadata structural hierarchy |
US10255370B2 (en) * | 2015-07-24 | 2019-04-09 | Raytheon Company | Automated compliance checking through analysis of cloud infrastructure templates |
JP6673355B2 (ja) * | 2015-07-27 | 2020-03-25 | 日本電気株式会社 | 配備装置、配備方法、及び、プログラム |
IN2015CH04027A (zh) * | 2015-08-03 | 2015-08-14 | Wipro Ltd | |
US10686654B2 (en) * | 2017-04-24 | 2020-06-16 | Verizon Patent And Licensing Inc. | Configuration management as a service |
US10505832B2 (en) * | 2017-05-10 | 2019-12-10 | Sap Se | Resource coordinate system for data centers |
US10664320B2 (en) * | 2017-08-03 | 2020-05-26 | Red Hat, Inc. | Host specific containerized application configuration generation |
US10628147B2 (en) * | 2017-08-29 | 2020-04-21 | Red Hat Israel, Ltd. | Detach virtual machine from virtual machine template |
US10360025B2 (en) * | 2017-09-08 | 2019-07-23 | Accenture Global Solutions Limited | Infrastructure instantiation, collaboration, and validation architecture for serverless execution frameworks |
US10719311B2 (en) * | 2017-09-08 | 2020-07-21 | Accenture Global Solutions Limited | Function library build architecture for serverless execution frameworks |
US11023529B2 (en) * | 2018-01-04 | 2021-06-01 | Red Hat, Inc. | System and method for generating container image suggestions |
-
2018
- 2018-03-22 US US15/933,184 patent/US11513864B2/en active Active
-
2019
- 2019-03-21 CN CN201980020972.8A patent/CN111936974A/zh active Pending
- 2019-03-21 WO PCT/US2019/023388 patent/WO2019183366A1/en active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110320605A1 (en) * | 2010-06-28 | 2011-12-29 | Reto Kramer | Provisioning Multiple Network Resources |
US20140365668A1 (en) * | 2012-03-19 | 2014-12-11 | Amazon Technologies, Inc. | Using a template to update a stack of resources |
US20130332920A1 (en) * | 2012-06-07 | 2013-12-12 | Red Hat Israel, Ltd. | Live virtual machine template creation |
US20160004551A1 (en) * | 2013-10-04 | 2016-01-07 | Hitachi, Ltd. | Resource management system and resource management method |
CN105190558A (zh) * | 2013-10-15 | 2015-12-23 | 思科技术公司 | 云资源的加速实例化 |
CN106133688A (zh) * | 2014-03-28 | 2016-11-16 | 亚马逊技术有限公司 | 协调容器布置和执行的服务的实施 |
CN107667503A (zh) * | 2015-06-26 | 2018-02-06 | 英特尔公司 | 用于异构资源云的资源管理技术 |
US20170339013A1 (en) * | 2016-05-20 | 2017-11-23 | CloudCoreo, Inc. | Deploying and monitoring multiplatform cloud-based infrastructures |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11153224B2 (en) * | 2017-02-09 | 2021-10-19 | Radcom Ltd. | Method of providing cloud computing infrastructure |
Also Published As
Publication number | Publication date |
---|---|
US11513864B2 (en) | 2022-11-29 |
WO2019183366A1 (en) | 2019-09-26 |
US20190294477A1 (en) | 2019-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111936974A (zh) | 将现有虚拟计算资源采纳到用于管理操作的逻辑容器中 | |
US10977111B2 (en) | Constraint solver execution service and infrastructure therefor | |
US11017107B2 (en) | Pre-deployment security analyzer service for virtual computing resources | |
US20210042144A1 (en) | Virtual machine morphing for heterogeneous migration environments | |
US10505982B2 (en) | Managing security agents in a distributed environment | |
US9805202B2 (en) | Automated SDK ingestion | |
US10749985B2 (en) | Custom communication channels for application deployment | |
US11086685B1 (en) | Deployment of virtual computing resources with repeatable configuration as a resource set | |
US20130291121A1 (en) | Cloud Abstraction | |
US11586685B2 (en) | Systems and methods for generating data structures from browser data to determine and initiate actions based thereon | |
US20220182456A1 (en) | Methods and systems for managing applications of a multi-access edge computing environment | |
US11165783B1 (en) | Quantifying permissiveness of access control policies using model counting techniques and automated policy downscaling | |
US10621111B2 (en) | System and method for unified secure remote configuration and management of multiple applications on embedded device platform | |
CN116166278A (zh) | 一种应用管理方法及相关系统 | |
US11627123B2 (en) | Techniques for simultaneously accessing multiple isolated systems while maintaining security boundaries | |
US10705945B1 (en) | Computing system testing service | |
US11627206B2 (en) | System and methods for providing user analytics and performance feedback for web applications | |
US11252157B1 (en) | Permission management for electronic resources | |
EP4310693A1 (en) | Evaluating the quality of integrations for executing searches using application programming interfaces | |
US11588801B1 (en) | Application-centric validation for electronic resources | |
US11909720B2 (en) | Secure remote support of systems deployed in a private network | |
US20240168972A1 (en) | Data Distribution and Access within a Multi-Zone Computing Platform | |
US20240095099A1 (en) | Decentralized framework for providing application programming interface gateways |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |