基础设施即代码服务的制作方法

未命名 08-29 阅读:94 评论:0

基础设施即代码服务


背景技术:

1.可以期望公共或私有云服务提供方支持基础设施的基础设施即代码(infrastructure as code,iac)管理。iac通过代码启用供应过程的自动化,并且以可重复且可扩展的方式促进了云基础设施的管理和配置。通过iac,可以创建包含基础设施规范的配置文件,使得编辑和分发配置更加容易,并且允许云消费者避免手动或交互式过程,否则可能导致部署中的人为错误或不一致。
2.iac标准已以工具的形式出现,其允许云服务提供方向其客户提供iac的上述益处。例如,针对特定云服务的复杂复合部署可以被描述为列出要被构建的资源的声明性配置,其依赖于对应的iac工具引擎以处理依赖解析。
附图说明
3.本文中所描述的方面以示例方式而非限制方式在附图中进行说明,其中相同的附图标记表示相似的元件。
4.图1示出了根据示例的具有基础设施即代码(iac)服务的iac架构的框图。
5.图2示出了说明根据示例的由iac架构执行的处理的流程图。
6.图3示出了根据示例的iac交互的各种模式的框图。
7.图4示出了说明根据示例的在私有云平台中实现的iac服务的框图。
8.图5示出了根据示例的计算机系统的框图。
具体实施方式
9.本文中所描述的示例涉及通过云平台向iac服务提供简化的接口。从云服务提供方的角度来看,在支持iac用例上存在挑战,包括iac工具的数目和复杂性以及由iac工具创建的部署状态的管理。现在市场上有相当多的iac或配置管理工具(例如生产的terraform、pulumi公司生产的pulumi、red hat公司生产的progress software公司生产的以及puppet公司生产的)。云提供方可能必须实现插件和/或为这些工具中的每个工具提供编码示例,以预测消费者可能采用的工具。对于由不同工程团队提供的多种服务组成的大型云平台而言,这是特别值得关注的问题,并且可能给这些工程团队带来压力,要求他们获得在显著不同的iac方法的专业知识。
10.iac工具的复杂性通常足以导致云消费者在培训和采用方面的大量投资。此外,工具的范围和行为也在不断改变。云的消费者将他们自己绑定到单个iac工具并不罕见,这反过来会限制他们可用的云服务的集合。除了云服务提供方面临的挑战以外,iac工具的复杂性也会给云消费者带来附加的负担。通常,经由iac工具创建的部署状态被认为是由用户管理的。例如,terraform提供了terraform命令行接口(cli),通过该terraform cli可以将状态保存到terraform状态文件中以用于对资源的持续管理。
11.鉴于前述,本文中所描述的示例旨在提供一种简化的iac接口,云消费者可以通过
该简化的iac接口以抽象云平台所采用的特定内部iac工具的方式利用iac工具。所提出的方法允许云服务工程师根据所选择的适当iac工具来编码与他们的相应云平台服务的标准交互库,并且经由iac服务使得这些模板可用,同时将iac服务的消费者与iac工具的细节(包括复杂性,如状态管理)进行隔离。在一个示例中,云服务用户可以通过简单地向iac服务发出所选择的iac模板的请求并提供与所选择的iac模板相关联的输入参数来创建部署。如在下面进一步描述的,在一个示例中,可以通过提供iac服务的应用编程接口(api)来抽象与云平台所采用的多个iac工具相关联的操作细节,通过该iac服务,多个iac模板可用于针对云平台内的多个服务部署工作负载。每个iac模板根据iac工具描述工作负载,并且为该工作负载指定输入参数。经由api接收基于特定iac模板来创建部署的请求。通过基于为针对特定工作负载指定的输入参数而提供的参数值内部地执行(例如,由与iac服务相关联的iac代理)与特定模板相关联的iac工具,来满足该请求。
12.虽然在本文中所描述的各种示例的上下文中,所提出的iac服务驱动私有云平台(例如,可以从hewlett packard enterprise公司可获得的hpe greenlake边缘到云平台)内的工作负载,但是应当理解,本文中所描述的方法广泛适用于用例,其中iac服务用于驱动任何私有云、公共云或混合云内的工作负载。
13.在以下描述中,阐述了许多具体细节,以便提供对本文中所公开的主题的透彻理解。然而,对于本领域技术人员而言,将显而易见的是,可以在没有这些具体细节中的一些具体细节的情况下实践本文中所描述的方面的实现。
14.术语
15.术语“连接”或“耦接”及相关术语用于操作意义,不一定限于直接连接或耦接。因此,例如,两个设备可以直接耦接,或者经由一个或多个中间介质或设备耦接。作为另一示例,设备可以以这样的方式耦接,信息可以在它们之间传递,同时彼此不共享任何物理连接。基于本文中所提供的公开内容,本领域普通技术人员将理解根据前述定义存在连接或耦接的多种方式。
16.如果说明书规定组件或特征“可以”、“可能”、“能够”或“可能会”被包括或具有特性,则不要求该特定组件或特征被包括或具有该特性。
17.如本文中的描述且贯穿所附的权利要求书中所使用的,“一”、“一个”和“该”的含义包括复数,除非上下文另有明确规定。而且,如本文中的描述中所使用的,“在”的含义包括“在
……
中”和“在
……
上”,除非上下文另有明确规定。
18.短语“在示例中”、“根据示例”等通常表示该短语后的特定特性、结构或特性被包括在本发明的至少一个示例中,并且可以包括在本发明的一个以上的示例中。重要的是,这样的短语不一定指代同一示例。
19.短语“基础设施即代码”或缩写“iac”通常指代使用代码来定义基础设施。虽然iac传统上涉及使用定制语言或iac工具的领域特定语言(dsl)(例如,terraform的声明性配置语言、hashicorp配置语言(hcl))或javascript对象符号(json),但是被称为“基础设施即软件”(ias)的最近趋势允许使用传统编程语言(例如,python或golang)来定义基础设施。如本文中所使用的,iac意在指iac和/或ias。
20.示例基础设施即代码(iac)架构
21.图1示出了根据示例的基础设施即代码(iac)架构100的框图。在本示例的上下文
中,iac架构100包括iac服务130、iac数据库140、以及一个或多个iac代理150a-b。iac架构100还可以包括版本控制系统120(例如,git,被设计为处理可以分布在多个储存库(例如,储存库121a-n)上的非常大的项目的开源版本控制系统),或者以其他方式与版本控制系统120耦接。取决于特定的用例,iac代理150a-b可以部署在公共云(例如,云110)内或数据中心或托管地的内部部署(on-premise)160内。
22.iac服务130可以在云平台内实现(例如,为数据中心和其他位置(诸如,卫星和远程办公室)带来类似云的灵活性的“即服务”产品)。在一些实现中,云平台所利用的基础设施(未示出)可以由用户(例如,服务用户113)或用户的组织拥有或占有,并且由基础设施提供方(用户或用户的组织是其客户)管理。在一些实现中,基础设施可以由云平台供应方或基础设施提供方交付给用户或用户的组织(例如,安装在用户或用户的组织的数据中心或托管地处),以用于按使用付费的财务模型中的消费即服务。在一些实现中,在下面描述的iac服务130可以由云平台提供,作为消费即服务的管理的一部分。
23.云平台可以以即服务方式提供一种或多种云服务(例如,容器即服务(caas)、虚拟机即服务(vmaas)和/或裸机即服务(bmaas))。如在下面进一步描述的,iac服务130可被服务用户113用来发出配置主机的集合的部署请求等。例如,基于terraform模板(例如,iac数据库140内的服务模板),裸机主机的集合可以配置有操作系统和一些基本网络配置。
24.版本控制系统120可以负责跟踪对相应专用模板储存库(例如,储存库121a-n)内由云平台提供的各种云服务的配置模板(根据特定iac工具或配置管理工具定义)的改变。由云平台提供的云服务可以由开发和维护具有api端点的相应云服务的相应服务团队来支持。每个云服务团队可以在专用模板储存库中维护配置模板的集合。例如,服务a(例如,caas服务)的云服务团队可以使用储存库121a,服务b(例如,vmaas服务)的云服务团队可以使用另一储存库,以及服务n(例如,bmaas服务)的云服务团队可以使用储存库121n。在一个示例中,与特定云服务相关联的每个模板定义了要使用特定iac工具针对特定云服务部署的工作负载。当新模板被提交给储存库(例如,储存库121a-n)时,它可以通过自动测试过程,随后合并到储存库(假设测试结果成功)并发布包括新模板的模板储存库的新版本来安置。
25.iac服务130可以负责提供api 131,以允许服务用户113基于存储在iac数据库140中的服务模板(例如,服务模板141)来做出与部署相关的各种请求(例如,创建、应用、更新、获取状态和销毁)。在一个示例中,通过调用iac服务130的api来添加新版本的模板,可以向iac服务130发布该新版本的模板(例如,来自储存库121a-n),该新版本的模板又可以反过来保存在iac数据库140中。作为备选方案,响应于iac观察器服务观察到模板储存库的改变,可以从版本控制系统120中提取新版本的模板,iac监视器服务内部地使用iac服务130来存储新模板。
26.所保存的模板记录(例如,服务模板141)可以包括对源储存库(例如,储存库121a-b中的一个储存库)的引用、版本控制系统引用(例如,git引用),当同一模板存在多个修订时,标识特定修订,以及标识该模板的路径或名称。在每个模板中包括版本控制系统引用提供了灵活性。例如,可以请求相同工作负载的不同版本(例如,引用相同模板的不同修订版的不同部署)。另外,包括版本控制系统引用有助于创建基于模板发展分支的工作负载(通常在非生产环境中)。
27.如在下面进一步所述,作为从服务用户113接收请求的结果,iac服务130可以向iac数据库发布新的部署请求(例如,创建、应用、更新获取状态和销毁)。
28.iac代理150a-b可以负责监视iac数据库140中当前部署的集合中的改变,并且检测和获取因服务用户113向iac服务130发出请求而保存在iac数据库140中的新的部署请求。iac代理150a-b的监视可以以多种方式实现,并且并不意味着iac代理150a-b可以直接访问iac数据库140。在一个示例中,iac服务130可以向预定义的队列或主题发布新请求的通知,并且代理进程的某个部分可以被配置为等待关于该队列或主题的通知。
29.在本示例的上下文中,iac代理150a-b被示出为包括变值器151a-b。变值器151a-b可以负责管理特定iac工具(例如,terraform、pulumi、ansible、chef或puppet)的启动和协调,解析该工具的输出以确定结果或状态,并且保存部署的状态(例如,至iac数据库140),以促进经由api 131的未来更新和/或允许终端用户确定部署何时完成。
30.如以下参考图2所描述的,响应于观察到或以其他方式意识到当前部署的集合中的改变,iac代理150a可以从源储存库(例如,储存库121a)检索与部署请求相关联的模板代码,并且相关的变值器组件(例如,变值器151a)可以产生新容器,以使用模板和服务用户113所提供的输入部署参数来执行对应的iac工具。
31.在上面参考图1所描述的iac架构100的各种组件(例如,版本控制系统120、iac服务130、iac数据库140和iac代理150a-b)以及在下面参考图2的流程图所描述的处理可以以存储在非暂态机器可读介质(例如,随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、闪存、磁盘驱动器等)上、并且由基于硬件的处理资源(例如,微控制器、微处理器、(多个)中央处理单元核心、专用集成电路(asic)、现场可编程门阵列(fpga)等)执行的可执行指令的形式实现和/或以其他类型的电子电路的形式实现。例如,该处理可以由各种形式的一个或多个计算机系统(例如,服务器、刀片、台式计算机、膝上型计算机)执行,例如在下面参考图5所描述的计算机系统。
32.iac架构进行的示例处理
33.图2示出了说明根据示例的由iac架构执行的处理的流程图。在本示例的上下文中,假设云平台(例如,提供诸如caas服务、vmaas服务和/或bmaas服务之类的即服务云服务产品的云平台)实现iac服务(例如,iac服务130)来处理由云平台的终端用户(例如,服务用户113)所发出的部署请求。
34.在框210处,为iac服务提供api(例如,api 131)。api可以实现用于创建、应用、更新获取状态和/或销毁部署的方法。在一个示例中,被称为模板的示例基础设施配置的目录可以根据特定的iac工具来编码(例如,不同组的terraform配置文件的目录、基于一些定制配置工具的不同组的ansible行动手册或模板)。每个模板可以伴随有参数文件,该参数文件定义了一个或多个输入参数,这些输入参数可以由终端用户设置,以便实现特定模板的实例。在一个示例中,可以经由api查询可用模板的集合。例如,api可以提供用于列出适用于由云平台提供的云服务的可用模板(例如,服务模板141)的方法。
35.例如,假设云平台提供bmaas服务,终端用户可以从可用模板列表中选择模板,以基于所选择的模板来创建部署。所选择的模板可以表示与bmaas产品相关联的terraform模板,用于配置一组裸机主机的操作系统和网络配置。虽然可用模板可以包括信息(例如,引用将用于基于模板的部署的相关联的iac工具的类型字段)以便于由适当的变值器(例如,
变值器151a-b)进行处理,但是取决于特定实现,终端用户可能知道或者可能不知道相关联的iac工具,并且在任何情况下都可能从云平台所采用的iac工具的操作细节中抽象出来。以这种方式,终端用户不需要关心特定iac工具的复杂性,而是可以关注要针对特定云平台服务部署的工作负载以及与针对所定义的工作负载的模板相关联的输入参数。
36.应当理解,与给定模板相关联的输入参数可以基于模板所定义的工作负载以及在发出时的云平台服务而变化。针对vmaas工作负载的输入参数的非限制性示例可以包括虚拟机(vm)的名称和位置、将运行vm的服务器或服务器资源集群、资源池、数据存储(与vm相关联的文件的位置)、硬件机器版本、客户操作系统(os)、vm中虚拟处理器(例如,cpu)的数目、与vm一起使用的scsi适配器的类型以及与vm一起使用的磁盘。针对caas工作负载的输入参数的非限制性示例可以包括运行服务的启动类型、任务定义、平台os、平台版本、集群、服务名称、调度策略(例如,副本或守护程序)、在集群上放置并保持运行的指定任务定义的实例的数目、部署配置(例如,控制运行部署的任务数目以及停止和开启任务的顺序的部署参数)、用于服务的部署控制器,任务放置、标签(例如,要应用于服务以便于分类和/或组织的元数据)、以及服务的网络配置。针对bmaas工作负载的输入参数的非限制性示例可以包括服务器名称、类型模板(例如,cpu、存储器、内部磁盘、raid控制器、电源、nic)、os映像、ssh密钥对、裸机服务器的ip地址、磁盘分区、raid级别、元数据和引导模式、远程控制台访问和个性(例如,配置文件)。
37.在框220处,经由api接收基于特定iac模板(例如,所选择的模板)来创建部署的请求。例如,终端用户可以经由云平台客户端、代表性状态转移(rest)客户端或云平台的cli调用api的方法。虽然在该示例中,终端用户被描述为调用iac服务的api的方法来基于不同类型的模板(例如,terraform、pulumi、ansible、chef或puppet)创建部署,但是应当理解,可以实现iac交互的各种其他模式。例如,终端用户可以编写配置(例如,基于云平台的terraform提供器的terraform配置),并且自己执行terraform命令行和/或直接调用云平台的api,如在下面参考图3所描述的。
38.在框230处,通过基于为针对特定工作负载指定的输入参数提供的参数值内部地执行与特定模板相关联的iac工具,来满足请求。例如,假设iac交互的模式,其中终端用户调用api的方法(例如,经由云平台的客户端、代表性状态转移(rest)客户端或云平台的cli),该方法的执行可以将新的部署请求(例如,视情况而定,创建、应用、更新获取状态或销毁)保存到iac数据库(例如,iac数据库140)。
39.在一个示例中,响应于iac代理(例如,iac代理150a)检测和获取新的部署请求,iac代理可以从源储存库(例如,储存库121a)检索与部署请求相关联的模板代码,并且可使相关的变值器组件(例如,变值器151a)产生新容器,以使用模板和终端用户提供的输入部署参数执行对应的iac工具。容器的执行可能导致对云服务(例如,caas服务、vmaas服务或bmaas服务,视情况而定)的一个或多个调用,该云服务被模板用来部署它所描述的工作负载。在一个示例中,部署的状态被保存,以便于将来经由api进行更新。例如,iac代理可以报告正在进行的部署的状态,包括其完成后的最终状态,并且将该状态保存到iac数据库中。终端用户可以调用api来检索其所请求的部署的当前状态,并且使用调用的结果来确定部署何时完成。
40.在一个示例中,iac服务还可提供完整的审计跟踪(audit trail),其将经认证的
用户与特定部署的状态改变的全部或预定义或可配置子集联系起来。如果需要,也可以记录不会导致状态改变的检索请求。以这种方式,iac服务可以支持对所采取的iac动作进行审计,例如,以确定改变的顺序和负责这些改变的用户。
41.虽然在本示例的上下文中,在iac代理代表云(例如,云110)内的托管云服务的场景的上下文中描述了iac处理,但是应当理解,iac代理(例如,iac代理150b)备选地托管在内部部署环境(例如,内部部署160)中,内部地部署环境中,iac代理与托管iac服务进行交互,以检索部署请求(针对内部部署站点)并更新进行中的部署。iac代理的这种表现可能与变值器(例如,变值器151a-b中的一个变值器)利用对本地网络的访问(例如,经由安全外壳协议(ssh)访问私有网络上的主机的ansible行动手册)的用例有关。
42.虽然在参考图2所描述的示例的上下文中,包括了多个所列举的框,但是应当理解,其他示例可以在所列举的框之前、之后和/或之间包括附加框。类似地,在一些示例中,一个或多个所列举的框可以被省略或以不同的顺序执行。
43.iac交互的示例模式
44.图3示出了根据示例的iac交互的各种模式的框图。虽然图1所图示的iac架构假设了涉及使用由与在下面所描述的模式#3相对应的iac服务(例如,iac服务130)展示的api(例如,api 131)的iac交互的特定模式,但是应当理解,可以支持iac交互的其他模式,并且图1的示例可以被修改以用另一模式操作。在本示例的上下文中,图示了iac交互的三种模式,包括(模式#1)云平台api 370的直接调用,(模式#2)与提供器的直接交互,以及(模式#3)与由iac服务330展示的api(例如,api 131)的交互,iac服务330可以类似于图1的iac服务130。
45.根据模式#1,终端用户(例如,服务用户313)可以直接调用针对相应云平台服务的云平台api 370(例如,caas api、vmaas api和/或bmaas api)。在一个示例中,终端用户可以经由云平台客户端、rest客户端和/或云平台cli使用由云平台供应方提供的语言绑定(例如,python或golang)、具有curl请求的脚本等。
46.根据模式#2,终端用户可以基于由云平台供应方发布的iac工具的提供器来编写iac工具配置。例如,在本示例的上下文中,终端用户可以基于所发布的云平台iac工具提供器360(例如,terraform提供器)来编写terraform配置,并且自己执行terraform命令行。在该示例中,该模式具有对第一模式的云平台api 370和客户端的依赖。
47.根据模式#3,终端用户可以调用iac服务330的api(例如,与图1的iac服务130相对应),以基于不同类型的模板(例如,terraform或ansible)来创建部署。iac交互的这种模式可以涉及iac数据库340(例如,与图1的iac数据库140相对应)、iac代理350(例如,与图1的iac代理150a或150b中的一个iac代理相对应)和iac模板储存库321(例如,与图1的储存库121a-n中的一个储存库相对应)的使用。模式#3通过允许用户选择期望的模板并且指定相关联输入参数的值,而不是让终端用户参与底层iac工具的配置文件的创建和/或编辑,来提供用于跨各种云平台服务创建工作负载的一致的简化的接口,并且抽象了云平台所采用的iac工具的操作细节。如图3所图示的,模式#3还从iac工具提供器接口(例如,云平台terraform提供器360的接口)和云平台api 370中抽象出终端用户。
48.在上面参考图3所描述的iac服务300的各种组件(例如,云平台iac工具提供器360、iac服务330和iac代理350)可以以存储在非暂态机器可读介质(例如,随机存取存储器
(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、闪存、磁盘驱动器,等等)并且由基于硬件的处理资源(例如,微控制器、微处理器、(多个)中央处理单元核心、专用集成电路(asic)、现场可编程门阵列(fpga)等等)执行的可执行指令的形式实现和/或以其他类型的电子电路的形式实现。例如,该处理可以由各种形式的一个或多个计算机系统(例如,服务器、刀片、台式计算机、膝上型计算机)执行,例如下面参考图5描述的计算机系统。
49.示例iac服务用例
50.图4示出了说明根据示例的在私有云平台400中实现的iac服务的框图。在本示例的上下文中,私有云平台400被示为包括运行时环境480和云平台网关490。在一个示例中,运行时环境480是软件即服务(saas)/托管运行时环境,诸如托管的kubernetes集群(例如,内部部署kubernetes环境、亚马逊elastic kubernetes服务(eks)、azure kubernetes服务(aks)或谷歌kubernetes引擎(gke))。
51.在本示例的上下文中,iac服务430(例如,类似于图1的iac服务130)和iac数据库440(例如,类似于图1的iac数据库140)可托管在运行时环境480上,而iac代理450(例如,类似于图1的iac代理150a或150b)托管在云平台网关490上,并且根据所请求的模板(例如,在本示例的上下文中的terraform模板)驱动云平台api 370。在备选实现中,iac代理350也可以被托管在运行时环境480内。
52.为便于说明,现将参照图4描述非限制性用例。出于以下用例的目的,假设服务团队用户(未示出)是vmaas团队的成员,其熟悉特定iac标准(例如,terraform(iac标准)),并且已经编写了一些样本terraform配置来在vmaas服务实例上创建工作负载。服务团队用户可以通过iac服务430的api(例如,api 131)使那些样本terraform配置对终端用户(例如,服务用户413)可用,而终端用户不必知道如何操作terraform。类似地,bmaas团队的成员可能已经编写了样本terraform配置来部署一组裸机主机,并且编写了ansible行动手册来在这些已供应的主机上部署特定的应用程序配置。通过经由iac服务430的api使terraform和ansible模板可用(并且通过使用链接来允许一个部署被链接到另一个部署,如下面进一步描述的),该部署序列可以对终端用户可用。
53.在一些示例中,精通特定iac工具标准的终端用户也可具备上传其自己的模板的能力。例如,终端用户可以针对caas服务编写他们自己的terraform配置,将该配置提交给版本控制系统(例如,版本控制系统120),然后经由iac服务(例如,iac服务130)的api(例如,api 131)创建模板(例如,terraform类型的模板),其中该模板指向terraform配置的版本控制系统引用。然后,该模板在目录中针对该终端用户或同一客户租户中的其他终端用户可用。
54.为上面的用例提供附加的细节的非限制性逐步流程包括终端用户发出对基于tf#1模板(多个可用服务模板441中的一个多个可用服务模板,其可各自提供不同工作负载的部署)创建部署的api请求(在401处)、提供该模板的参数值。该部署反过来又保存在iac数据库440中。
55.终端用户然后可以发出应用先前创建的部署的api请求(在402处),这导致iac服务430在iac数据库440中保存应用操作(ops)请求。
56.内部部署iac代理(例如,iac代理450)可以定期地轮询(在403处)对于该站点/位置的ops请求,或者事件驱动机制可通知iac代理存在新的ops请求(部署请求)。
57.响应于iac代理确定(或被通知)新ops请求的存在,iac代理检索针对部署的相关联的terraform配置(在404处)。
58.在本示例的上下文中,部署是terraform类型的,iac代理的terraform变值器组件(例如,图1的变值器151a-b中的一个变值器)启动容器(在405处)以执行检索到的terraform配置。
59.例如,在406处,容器基于云平台terraform提供器(例如,云平台iac工具提供器360)运行terraform,这导致caas api调用以供应caas租户集群。
60.iac代理经由回调托管的iac服务430(例如,经由api)设置部署状态(在407处)。与该部署相关联的terraform状态也可以由iac服务430保存在iac数据库中。
61.终端用户进行api调用(在408处)以检索部署的当前状态(例如,查看所请求的caas工作负载的进度)。
62.终端用户可以使用bmaas terraform模板(例如,iac模板储存库421内的tf#2)重复上述步骤,以供应一组裸机主机。
63.链接部署
64.如在上面所指出的,iac服务(例如,图1的iac服务130)还可允许用户链接一个或多个部署请求,从而将一个已完成部署的输出用作后续部署的输入。例如,不同的iac工具可以链接在一起(例如,terraform或pulumi可以用于部署基础设施,ansible或chef或puppet随后可以用于运行部署后配置任务。更具体地,链的第一部署可以基于terraform模板来配置一组具有操作系统和一些基本网络配置的裸机主机。然后,第一部署的输出(包括为每个主机分配的ip地址)可以用作基于ansible行动手册的后续部署的输入,以在供应的裸机主机上安装和配置应用软件(因为ansible行动手册可以利用ip地址以ssh到节点上)。此外,第一部署可以已经经由具有terraform变值器的云托管iac代理(例如,图1的iac代理150a)来管理,而第二部署可以经由具有ansible变值器的内部部署iac代理(例如,图1的iac代理150b)来管理。
65.通用服务模板
66.在上述示例中,描述了标准模板的定义,其中给定模板描述了基于由云服务api提供的资源的某个子集的特定工作负载。这种模板的相关联的参数列表建立了工作负载描述的约束,并且为iac服务消费者提供了简化的工作负载部署方式。
67.本文中所描述的示例的进一步增强可涉及通用服务模板的使用。通用服务模板是在单个模板中展示云服务的所有可用资源的模板。也就是说,相关联的参数文件跨云服务api的所有可调设置的详尽列表。因此,每个云服务应该只有一个通用服务模板(特定类型的)。这种通用模板的目的是支持希望在工作负载创建方面具有更大灵活性的专家用户。可以理解,根据定义,从上述标准(或具体)模板创建的任何部署也可以经由通用服务模板机制来创建;但是,增加的灵活性可能通过指定无效的工作负载组合使用户面临遇到错误的可能性,因此根据特定实现的目标,支持一种或两种操作的模式是有好处的。在一个示例中,假设云服务api是以诸如openapi规范(以前称为swagger)的标准规范语言定义的,则可以自动生成通用服务模板。
68.示例计算机系统
69.图5示出了根据示例的计算机系统的框图。在图5所图示的示例中,计算机系统500
包括处理资源510,处理资源510耦接到用指令编码的非暂态机器可读介质520,以执行本文中所描述的一个或多个过程。计算机系统500可以是服务器、服务器集群、计算机设备、工作站、融合系统、超融合系统等。计算机系统500可代表可执行本文中所描述的一种或多种方法的计算设备的示例,和/或可代表由本文中所描述的iac服务供应、配置和/或管理的基础设施的示例。取决于特定实现,系统500可以在云中(例如,云110)并且与要被供应、配置和/或管理的基础设施通信,或者可以是与要被管理的基础设施在同一数据中心内的管理服务器。
70.处理资源510可以包括微控制器、微处理器、(多个)cpu内核、(多个)gpu内核、asic、fpga和/或适于从机器可读介质520检索和/或执行指令以执行与本文中所描述各种示例相关的功能的其他硬件设备。附加地或备选地,处理资源510可以包括用于执行本文中所描述的指令的功能的电子电路。
71.机器可读介质520可为适用于存储可执行指令的任何介质。机器可读介质520的非限制性示例包括ram、rom、eeprom、闪存、硬盘驱动器、光盘等。机器可读介质520可以是非暂态介质,其中术语“非暂态”不包括暂态传播信号。如图5所示,机器可读介质520可被置于计算机系统500内,在这种情况下,可执行指令可被视为“安装”或“嵌入”在计算机系统500上。或者,机器可读介质520可以是便携式(例如,外部)存储介质,并且可以是“安装包”的一部分。存储在机器可读介质520上的指令可以用于实现本文中所描述的一个或多个方法的至少一部分。
72.在本示例的上下文中,机器可读介质520编码有一组可执行指令530-550。应当理解,在替代实现中,包括在一个框中的部分或全部可执行指令和/或电子电路可以包括在图中所示的不同框中或者未示出的不同框中。
73.指令530在执行时,可使处理资源510提供iac服务(例如,iac服务130)的api(例如,api 131),通过该iac服务,多个iac模板可用于针对云平台内的服务部署工作负载。每个iac模板根据多个iac工具中的一个iac工具来描述工作负载,并且为该工作负载指定输入参数。api因此抽象出与多个iac工具相关联的操作细节。在一个示例中,指令530可以用于执行图2的框210。
74.指令540在执行时,可以使处理资源510经由api接收基于特定iac模板创建部署的请求。在一个示例中,指令540可以用于执行图2的框220。
75.指令550在执行时,可以使处理资源510通过基于为针对特定工作负载指定的输入参数而提供的参数值内部地执行与特定模板相关联的iac工具,来满足该请求。在一个示例中,指令550可以用于执行图2的框230。
76.在前述说明中,阐述了许多细节,以提供对本文中所公开主题的理解。然而,可以在没有一些或全部的这些细节的情况下实践实现。其他实现可以包括对上述细节的修改和变化。所附的权利要求旨在覆盖这些修改和变化。

技术特征:
1.一种方法,包括:通过提供基础设施即代码iac服务的应用编程接口api来抽象与多个iac工具相关联的操作细节,通过所述iac服务,多个iac模板可用于针对云平台内的多个服务部署工作负载,其中所述多个iac模板中的每个iac模板根据所述多个iac工具中的iac工具来描述工作负载,并且针对所述工作负载指定输入参数;经由所述api接收基于所述多个iac模板中的特定iac模板来创建部署的请求;以及通过基于为针对特定工作负载指定的输入参数而提供的参数值内部地执行与特定模板相关联的iac工具,来满足所述请求。2.根据权利要求1所述的方法,还包括:在所述经由所述api接收创建所述部署的所述请求之前:经由所述api接收列出多个模板的列表请求;以及经由所述api接收对所述特定iac模板的选择。3.根据权利要求1所述的方法,其中所述满足还包括:由所述iac服务的iac代理从储存库检索与所述特定模板相关联的模板代码;以及通过由所述iac代理基于所述模板代码和所述参数值使所述iac工具在所述云平台的容器内被执行,产生对所述多个服务中的服务的api的一个或多个调用。4.根据权利要求1所述的方法,还包括:内部地保存与所述部署相关联的状态信息。5.根据权利要求1所述的方法,还包括:经由所述api接收创建包括与所述多个模板中的iac模板相关联的模板代码的所述iac模板的创建请求;以及响应于所述创建请求,将所述iac模板插入到储存库中。6.根据权利要求1所述的方法,其中所述多个iac工具具有不同的供应方。7.根据权利要求1所述的方法,其中所述多个服务包括虚拟机即服务vmaas、容器即服务caas或裸机即服务bmaas。8.一种系统,包括:处理资源;以及非暂态计算机可读介质,所述非暂态计算机可读介质被耦接到所述处理资源,所述非暂态计算机可读介质其上存储有指令,所述指令在由所述处理资源执行时使所述处理资源:通过提供基础设施即代码iac服务的应用编程接口api来抽象与多个iac工具相关联的操作细节,通过所述iac服务,多个iac模板可用于针对云平台内的多个服务部署工作负载,其中所述多个iac模板中的每个iac模板根据所述多个iac工具中的iac工具来描述工作负载,并且针对所述工作负载指定输入参数;经由所述api接收基于所述多个iac模板中的特定iac模板来创建部署的请求;以及通过基于为针对特定工作负载指定的输入参数而提供的参数值内部地执行与特定模板相关联的iac工具,来满足所述请求。9.根据权利要求8所述的系统,其中所述指令还使所述处理资源:经由所述api接收列出多个模板的列表请求;以及经由所述api接收对所述特定iac模板的选择。
10.根据权利要求8所述的系统,其中满足所述请求还包括:由所述iac服务的iac代理从储存库检索与所述特定模板相关联的模板代码;以及通过由所述iac代理基于所述模板代码和所述参数值使所述iac工具在所述云平台的容器内被执行,产生对所述多个服务中的服务的api的一个或多个调用。11.根据权利要求8所述的系统,其中所述指令还使所述处理资源内部地保存与所述部署相关联的状态信息。12.根据权利要求8所述的方法,其中所述指令还使所述处理资源:经由所述api接收创建包括与所述多个模板中的iac模板相关联的模板代码的所述iac模板的创建请求;以及响应于所述创建请求,将所述iac模板插入到储存库中。13.根据权利要求8所述的系统,其中所述多个iac工具具有不同的供应方。14.根据权利要求8所述的系统,其中所述多个服务包括虚拟机即服务vmaas、容器即服务caas或裸机即服务bmaas。15.一种非暂态机器可读介质,所述非暂态机器可读介质存储指令,所述指令在由计算机系统的处理资源执行时使所述处理资源:通过提供基础设施即代码iac服务的应用编程接口api来抽象与多个iac工具相关联的操作细节,通过所述iac服务,多个iac模板可用于针对云平台内的多个服务部署工作负载,其中所述多个iac模板中的每个iac模板根据所述多个iac工具中的iac工具来描述工作负载,并且针对所述工作负载指定输入参数;经由所述api接收基于所述多个iac模板中的特定iac模板来创建部署的请求;以及通过基于为针对特定工作负载指定的输入参数而提供的参数值执行与特定模板相关联的iac工具,来满足所述请求。16.根据权利要求15所述的非暂态机器可读介质,其中所述指令还使所述处理资源:经由所述api接收列出多个模板的列表请求;以及经由所述api接收对所述特定iac模板的选择。17.根据权利要求16所述的非暂态机器可读介质,其中满足所述请求还包括:由所述iac服务的iac代理从储存库检索与所述特定模板相关联的模板代码;以及通过由所述iac代理基于所述模板代码和所述参数值使所述iac工具在所述云平台的容器内被执行,产生对所述多个服务中的服务的api的一个或多个调用。18.根据权利要求16所述的非暂态机器可读媒体,其中所述指令还使所述处理资源内部地保存与所述部署相关联的状态信息。19.根据权利要求16所述的非暂态机器可读介质,其中所述指令还使所述处理资源:经由所述api接收创建包括与所述多个模板中的iac模板相关联的模板代码的所述iac模板的创建请求;以及响应于所述创建请求,将所述iac模板插入到储存库中。20.根据权利要求16所述的非暂态机器可读介质,其中所述多个服务包括虚拟机即服务vmaas、容器即服务caas或裸机即服务bmaas。

技术总结
本公开的实施例涉及基础设施即代码服务。本文中所描述的示例涉及由云平台向IaC服务提供简化的接口。根据示例,通过提供基础设施即代码(IaC)服务的应用编程接口(API)来抽象与多个IaC工具相关联的操作细节,通过该IaC服务,多个IaC模板可用于针对云平台内的多个服务部署工作负载。每个IaC模板根据IaC工具来描述工作负载,并且针对该工作负载指定输入参数。经由API接收基于特定IaC模板来创建部署的请求。通过基于为针对特定工作负载指定的输入参数而提供的参数值内部地执行与特定模板相关联的IaC工具,来满足该请求。来满足该请求。来满足该请求。


技术研发人员:T
受保护的技术使用者:慧与发展有限责任合伙企业
技术研发日:2022.04.25
技术公布日:2023/8/28
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐