1.本发明涉及数据管理技术领域,具体涉及一种云主机初始化方法、装置、电子设备及介质。
背景技术:2.当一款软件开发完成,准备部署时,基于稳定性,性能等方面的考虑,一般都会选择使用一台或多台linux服务器进行部署。而物理服务器安装完linux操作系统之后,一般都需要进行一些初始化的操作,例如修改时区,配置dns,配置包管理器镜像源,安装基础软件以及监控工具,修改ulimit,优化内核参数,关闭swap,安装java等。根据不同的应用场景,需要执行不同的初始化操作,一般都有相应的初始化脚本来完成。但随着公司业务的扩展,以及各种测试,开发环境的要求,需要维护的初始化脚本越来越多。而随着云计算的发展,不少企业都选择在企业内部部署openstack云平台,传统物理机的使用也逐渐转向了云平台上的云主机,同样,云主机创建完成后,也需要进行一系列的初始化操作。
3.目前,在openstack云平台上,现有技术中对openstack云平台的云主机进行初始化的方法多为在创建业务云主机的同时程序员手动编写初始化脚本。现有技术存在以下问题:云主机初始化速度较慢,且初始化易出错。
技术实现要素:4.有鉴于此,有必要提供一种云主机初始化方法、装置、电子设备及介质,用以解决现有技术中存在的云主机初始化速度较慢,且初始化易出错的技术问题。
5.为了解决上述技术问题,本发明提供了一种云主机初始化方法,包括:构建初始化脚本库,所述初始化脚本库包括多个初始化脚本;创建业务云主机,并在创建所述业务云主机时从所述多个初始化脚本中确定需要执行的多个目标初始化脚本;基于所述多个目标初始化脚本对所述业务云主机进行初始化。
6.在一些可能的实现方式中,在所述创建业务云主机之前,还包括:制作云主机镜像,并在所述云主机镜像中配置第一初始化组件;则所述基于所述多个目标初始化脚本对所述业务云主机进行初始化,包括:基于所述第一初始化组件以及所述多个目标初始化脚本对所述业务云主机进行初始化。
7.在一些可能的实现方式中,所述基于所述第一初始化组件和所述多个目标初始化脚本对所述业务云主机进行初始化,包括:将所述多个目标初始化脚本上传至元数据服务端;响应所述业务云主机的启动初始化信号,所述第一初始化组件从所述元数据服务端中获取所述多个目标初始化脚本,对所述业务云主机进行初始化。
8.在一些可能的实现方式中,所述基于所述第一初始化组件和所述多个目标初始化
脚本对所述业务云主机进行初始化,包括:将所述多个目标初始化脚本以预设格式上传至所述业务云主机;响应所述业务云主机的启动初始化信号,所述第一初始化组件从所述业务云主机中获取所述多个目标初始化脚本,并对所述业务云主机进行初始化。
9.在一些可能的实现方式中,在所述创建业务云主机之前,还包括:制作云主机镜像,并在所述云主机镜像中配置第二初始化组件;则所述基于所述多个目标初始化脚本对所述业务云主机进行初始化,包括:基于所述第二初始化组件以及所述多个目标初始化脚本对所述业务云主机进行初始化。
10.在一些可能的实现方式中,所述基于所述第二初始化组件以及所述多个目标初始化脚本对所述业务云主机进行初始化,包括:将所述多个目标初始化脚本上传至所述业务云主机;响应所述业务云主机的运行初始化信号,所述第二初始化组件从所述业务云主机中获取所述多个目标初始化脚本,并对所述业务云主机进行初始化。
11.在一些可能的实现方式中,所述构建初始化脚本库,包括:编写所述多个初始化脚本;根据预设的执行顺序配置所述多个初始化脚本的优先级;将配置完优先级后的所述多个初始化脚本进行存储,生成所述初始化脚本库。
12.另一方面,本发明还提供一种云主机初始化装置,包括:初始化脚本库构建单元,用于构建初始化脚本库,所述初始化脚本库包括多个初始化脚本;云主机创建单元,用于创建业务云主机,并在创建所述业务云主机时从所述多个初始化脚本中确定需要执行的多个目标初始化脚本;初始化单元,用于基于所述多个目标初始化脚本对所述业务云主机进行初始化。
13.另一方面,本发明还提供了一种电子设备,包括存储器和处理器,其中,所述存储器,用于存储程序;所述处理器,与所述存储器耦合,用于执行所述存储器中存储的所述程序,以实现上述任意一种可能的实现方式中的云主机初始化方法中的步骤。
14.另一方面,本发明还提供了一种计算机可读存储介质,其特征在于,用于存储计算机可读取的程序或指令,所述程序或指令被处理器执行时,能够实现上述任意一种可能的实现方式中的云主机初始化方法中的步骤。
15.采用上述实施例的有益效果是:本发明提供的云主机初始化方法,首先构建包括多个初始化脚本的初始化脚本库,然后在创建业务云主机时从多个初始化脚本中确定需要执行的多个目标初始化脚本,基于多个目标初始化脚本对业务云主机进行初始化。无需在创建业务云主机时程序员手动编写初始化脚本,在提高业务云主机初始化效率的同时降低初始化出错率。
附图说明
16.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使
用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明提供的云主机初始化方法的一个实施例流程示意图;图2为本发明图1中s103的一个实施例流程示意图;图3为本发明图1中s103的另一个实施例流程示意图;图4为本发明提供的业务云主机运行状态时进行初始化的一个实施例流程示意图;图5为本发明图1中s101的一个实施例结构示意图;图6为本发明提供的云主机初始化装置的一个实施例结构示意图;图7为本发明提供的电子设备的一个实施例结构示意图。
具体实施方式
18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.在本技术实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
20.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
21.本发明提供了一种云主机初始化方法、装置、电子设备及介质,以下分别进行说明。
22.在展示实施例前,先对下述专业术语进行简要阐述。
23.openstack:是由美国国家航空航天局(national aeronautics and space administration,简称nasa)和rackspace合作研发的为公有云及私有云提供软件的云计算或云存储平台,帮助服务商和企业内部实现基础设施即服务(infrastructure as a service,简称iaas)。openstack包括nova(计算),swift(对象存储服务),glance(镜像服务),keystone(认证服务),horizon(web ui服务),cinder(块存储服务),ceilometer(监控服务),ironic(裸金属服务)等模块,每个模块提供了相应的服务,并且openstack提供了业务应用编程接口(application programming interface,简称api),每种服务通过api集成。
24.脚本:脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合。
25.shell:shell是一个应用程序,它连接了用户和linux内核,让用户能够更加高效、安全、低成本地使用linux内核。
26.shell脚本:shell脚本是指通过shell编写的脚本。
27.cloud
‑
init:cloud
‑
init是专为云环境中虚拟机的初始化而开发的工具,它从各
种数据源读取相关数据并据此对云主机镜像进行配置。
28.qemu
‑
guest
‑
agent:qemu
‑
guest
‑
agent是一个运行在虚拟机内部的普通应用程序(可执行文件名称默认为qemu
‑
ga,服务名称默认为qemu
‑
guest
‑
agent),其目的是实现一种业务云主机和云主机镜像进行交互的方式,这种方式不依赖于网络,而是依赖于virtio
‑
serial或者isa
‑
serial。
29.virtio
‑
serial:virtio
‑
serial是业务云主机和云主机镜像之间进行信息传递的一种方式。
30.config drive:config drive是一个特殊的文件系统, openstack会将元数据(metadata)写到config drive,并将config drive制作成一个镜像(iso)文件,并在业务云主机启动时以cdrom的形式将镜像文件挂载给业务云主机。如果业务云主机安装了cloud
‑
init,镜像文件会被自动挂载(mount)并从中读取metadata,进而完成后续的初始化工作。
31.图1为本发明提供的云主机初始化方法的一个实施例流程示意图,如图1所示,云主机初始化方法包括:s101、构建初始化脚本库,初始化脚本库包括多个初始化脚本;s102、创建业务云主机,并在创建业务云主机时从多个初始化脚本中确定需要执行的多个目标初始化脚本;s103、基于多个目标初始化脚本对业务云主机进行初始化。
32.与现有技术相比,本发明实施例提供的云主机初始化方法,首先构建包括多个初始化脚本的初始化脚本库,然后在创建业务云主机时从多个初始化脚本中确定需要执行的多个目标初始化脚本,基于多个目标初始化脚本对业务云主机进行初始化。无需在创建业务云主机时程序员手动编写初始化脚本,在提高业务云主机初始化效率的同时降低初始化出错率。
33.在本发明的一些实施例中,步骤s101中的初始化脚本是shell脚本。
34.由于shell的语法和结构比较简单,且运行之前不需要编译,因此,通过设置初始化脚本为shell脚本,可提高初始化脚本库的构建效率,进而可进一步提高云主机的初始化效率。
35.在本发明的一些实施例中,初始化脚本可以包括优化内核参数脚本,修改ulimit脚本,配置包管理器镜像源脚本以及安装java脚本等。
36.在本发明的优选实施例中,多个初始化脚本中的每一个初始化脚本均为幂等性的脚本。
37.通过编写幂等性的初始化脚本,可确保用户对于同一初始化脚本发起的一次请求或者多次请求的结果是一致的,不会因为多次执行脚本而产生了副作用。即:通过编写幂等性的初始化脚本,可保证即使脚本被多次执行,最终结果不变,进一步提高云主机初始化方法的效率和可靠性。
38.应当理解的是:云主机可为openstack云平台中的云主机。当然,云主机也可以为其他云平台中的主机。
39.当云主机为openstack云平台中的云主机时,由于openstack云平台中的云主机的创建需要依赖于一个基础且通用的云主机镜像,因此,在本发明的一些实施例中,在步骤s102之前,还包括:
制作云主机镜像,并在云主机镜像中配置第一初始化组件;则步骤s103具体为:基于第一初始化组件以及多个目标初始化脚本对业务云主机进行初始化。
40.需要说明的是:当云主机为openstack云平台中的云主机时,第一初始化组件为cloud
‑
init。
41.在本发明的一些实施例中,如图2所示,步骤s103包括:s201、将多个目标初始化脚本上传至元数据服务端;s202、响应业务云主机的启动初始化信号,第一初始化组件从元数据服务端中获取多个目标初始化脚本,对业务云主机进行初始化。
42.需要说明的是:包括cloud
‑
init在内的第一初始化组件仅可以在业务云主机启动时对业务云主机进行初始化。则启动初始化信号即为业务云主机启动时的初始化信号。
43.由于从元数据服务端获取目标初始化脚本需要在创建业务云主机后,选择的网络配置为动态主机配置协议(dynamic host configuration protocol,dhcp),而当选择的网络配置不是dhcp时,通过元数据服务端无法获取目标初始化脚本,为了避免当网络配置不是dhcp时,造成业务云主机无法初始化,在本发明的一些实施例中,如图3所示,步骤s103包括:s301、将多个目标初始化脚本以预设格式上传至业务云主机;s302、响应业务云主机的启动初始化信号,第一初始化组件从业务云主机中获取多个目标初始化脚本,并对业务云主机进行初始化。
44.在本发明的一些实施例中,步骤s301中的预设格式为cdrom格式。
45.其中,步骤s301具体为:将目标初始化脚本上传至元数据服务端,并将元数据服务端中的目标初始化脚本写到config drive,并将config drive制作成一个镜像文件(iso),在业务云主机启动时将此镜像文件以cdrom的格式挂载给业务云主机,cloud
‑
init可从业务云主机中获取多个目标初始化脚本,从而实现对业务云主机的初始化。
46.本发明实施例通过设置在网络配置不是dhcp时,将目标初始化脚本以cdrom的格式上传至业务云主机,可实现对业务云主机的初始化。
47.本发明实施例通过设置两种方式获取多个目标初始化脚本,可根据网络配置提供不同的方式对云主机进行初始化,提高了云主机初始化方法的适用性。
48.还需要说明的是,上述通过第一初始化组件对业务云主机进行初始化的方法只能在业务云主机启动时进行初始化,但有时,初始化脚本编写错误,或者需要执行另外的初始化脚本,即:需要能够在业务云主机处于运行状态时,依然能够对其进行初始化。为了实现上述目的,在本发明的一些实施例中,在步骤s102之前,还包括:制作云主机镜像,并在云主机镜像中配置第二初始化组件;则步骤s103具体为:基于第二初始化组件以及多个目标初始化脚本对业务云主机进行初始化。
49.其中,第二初始化组件为在业务云主机运行时也可以对业务云主机进行初始化的组件。
50.本发明实施例通过在云主机镜像中配置第二初始化组件,并通过第二初始化组件实现在业务云主机处于运行状态时,依然能够对业务云主机执行初始化,提高了初始化方
法的多样性,提高了其适用性,并且极大的降低了对运行前进行初始化的工作量。
51.在本发明的一些实施例中,当业务云主机为openstack云平台中的云主机时,第二初始化组件为qemu
‑
guest
‑
agent。qemu
‑
guest
‑
agent可为业务云主机和云主机镜像提供一个数据通道,通过此数据通道进行目标初始化脚本的传输,以实现在业务云主机运行时,对业务云主机进行初始化。
52.具体地,目标初始化脚本在业务云主机和云主机镜像之间传输的传输方式为virtio
‑
serial。
53.在本发明的一些实施例中,如图4所示,步骤s103还包括:s401、将多个目标初始化脚本上传至业务云主机;s402、响应业务云主机的运行初始化信号,第二初始化组件从业务云主机中获取多个目标初始化脚本,并对业务云主机进行初始化。
54.应当理解的是:步骤s402中的运行初始化信号指的是业务云主机运行过程中的初始化信号。
55.本发明实施例通过在云主机镜像中配置第二初始化组件,可响应运行初始化信号,实现在业务云主机处于运行状态时,依然能够对业务云主机执行初始化。
56.在本发明的一些实施例中,如图5所示,步骤s101包括:s501、编写多个初始化脚本;s502、根据预设的执行顺序配置多个初始化脚本的优先级;s503、将配置完优先级后的多个初始化脚本进行存储,生成初始化脚本库。
57.本发明实施例中,通过根据预设的执行顺序配置多个初始化脚本的优先级,可在调用多个初始化脚本时,使其按照优先级顺序进行执行,提高了初始化脚本执行的有序性和合理性。
58.为了更好实施本发明实施例中的云主机初始化方法,在云主机初始化方法基础之上,对应的,如图6所示,本发明实施例还提供了一种云主机初始化装置600,包括:初始化脚本库构建单元601,用于构建初始化脚本库,初始化脚本库包括多个初始化脚本;云主机创建单元602,用于创建业务云主机,并在创建业务云主机时从多个初始化脚本中确定需要执行的多个目标初始化脚本;初始化单元603,用于基于多个目标初始化脚本对业务云主机进行初始化。
59.上述实施例提供的云主机初始化装置600可实现上述云主机初始化方法实施例中描述的技术方案,上述各模块或单元具体实现的原理可参见上述云主机初始化方法实施例中的相应内容,此处不再赘述。
60.如图7所示,本发明还相应提供了一种电子设备700。该电子设备700包括处理器701、存储器702及显示器703。图7仅示出了电子设备700的部分组件,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
61.存储器702在一些实施例中可以是电子设备700的内部存储单元,例如电子设备700的硬盘或内存。存储器702在另一些实施例中也可以是电子设备700的外部存储设备,例如电子设备700上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。
62.进一步地,存储器702还可既包括电子设备700的内部储存单元也包括外部存储设备。存储器702用于存储安装电子设备700的应用软件及各类数据。
63.处理器701在一些实施例中可以是一中央处理器(central processing unit,cpu),微处理器或其他数据处理芯片,用于运行存储器702中存储的程序代码或处理数据,例如本发明中的云主机初始化方法。
64.显示器703在一些实施例中可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organic light
‑
emitting diode,有机发光二极管)触摸器等。显示器703用于显示在电子设备700的信息以及用于显示可视化的用户界面。电子设备700的部件701
‑
703通过系统总线相互通信。
65.在一实施例中,当处理器701执行存储器702中的云主机初始化程序时,可实现以下步骤:构建初始化脚本库,初始化脚本库包括多个初始化脚本;创建业务云主机,并在创建业务云主机时从多个初始化脚本中确定需要执行的多个目标初始化脚本;基于多个目标初始化脚本对业务云主机进行初始化。
66.应当理解的是:处理器701在执行存储器702中的云主机初始化程序时,除了上面的功能之外,还可实现其它功能,具体可参见前面相应方法实施例的描述。
67.进一步地,本发明实施例对提及的电子设备700的类型不做具体限定,电子设备700可以为手机、平板电脑、个人数字助理(personal digital assistant,pda)、可穿戴设备、膝上型计算机(laptop)等便携式电子设备。便携式电子设备的示例性实施例包括但不限于搭载ios、android、microsoft或者其他操作系统的便携式电子设备。上述便携式电子设备也可以是其他便携式电子设备,诸如具有触敏表面(例如触控面板)的膝上型计算机(laptop)等。还应当理解的是,在本发明其他一些实施例中,电子设备700也可以不是便携式电子设备,而是具有触敏表面(例如触控面板)的台式计算机。
68.相应地,本技术实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储计算机可读取的程序或指令,程序或指令被处理器执行时,能够实现上述各方法实施例提供的方法步骤或功能。
69.本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于计算机可读存储介质中。其中,计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
70.以上对本发明所提供的云主机初始化方法、装置、电子设备及介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。