CN107992309A - 软件安装方法、装置、系统、介质及电子设备 - Google Patents
软件安装方法、装置、系统、介质及电子设备 Download PDFInfo
- Publication number
- CN107992309A CN107992309A CN201711004054.5A CN201711004054A CN107992309A CN 107992309 A CN107992309 A CN 107992309A CN 201711004054 A CN201711004054 A CN 201711004054A CN 107992309 A CN107992309 A CN 107992309A
- Authority
- CN
- China
- Prior art keywords
- virtual machine
- software
- target
- installation
- instruction
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
-
- 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
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本公开涉及一种软件安装方法、装置、系统、介质及电子设备,涉及信息技术领域。应用于软件安装服务器的方法包括:确定目标虚拟机需要安装的至少一个软件;按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件;向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令;向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件;当接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令。该方法能在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,自动将虚拟机恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况。
Description
技术领域
本公开涉及信息技术领域,具体地,涉及一种软件安装方法、装置、系统、介质及电子设备。
背景技术
在现有技术中,由软件安装服务器发起的在虚拟机的软件的安装不能由软件安装服务器直接控制,通常都需要在虚拟机安装一些特定的安装代理软件,安装过程比较繁琐。尤其是在安装失败的情况下,可能需要手动清理安装失败的数据,这样就很可能存在临时文件清理不彻底的问题,从而导致虚拟机垃圾文件过多。
发明内容
本公开的目的是提供一种软件安装方法、装置、系统、介质及电子设备,该方法能够在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,能够将虚拟机恢复到安装该安装失败的软件之前的状态。
为了实现上述目的,根据本公开的第一方面,提供一种软件安装方法,应用于软件安装服务器,所述方法包括:
确定目标虚拟机需要安装的至少一个软件;
按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件;
向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令;
向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件;
当接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。
可选的,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与所述最近一次获得的虚拟机快照对应的状态。
可选的,所述确定目标虚拟机需要安装的至少一个软件,包括:
接收用户的选择指令,所述选择指令用于指示用户期望在所述目标虚拟机上安装的软件;
获取所述目标虚拟机的运行环境信息;
根据所述运行环境信息,确定所述目标虚拟机是否具有安装所述选择指令所指示的软件所需的关联软件;
在确定所述目标虚拟机不具有所述关联软件时,将所述选择指令所指示的软件和所述关联软件确定为所述需要安装的软件;
在确定所述目标虚拟机具有所述关联软件时,将所述选择指令所指示的软件确定为所述需要安装的软件。
可选的,在所述向所述目标虚拟机发送针对所述目标软件的安装指令的步骤之后,所述方法还包括:当接收到所述目标虚拟机发送的软件安装成功消息时,若所述至少一个软件中仍存在未安装的软件,则返回所述按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为所述目标软件的步骤。
可选的,所述方法还包括:当接收到所述目标虚拟机发送的软件安装成功消息时,向所述云服务器发送删除存储在所述云服务器上的虚拟机快照的指令。
可选的,所述软件安装服务器与所述目标虚拟机之间的信令是经加密的;所述方法还包括:
接收用户输入的所述目标虚拟机的认证信息;
基于所述认证信息,生成公钥信息和私钥信息,所述公钥信息用于所述目标虚拟机对从所述软件安装服务器接收到的信令进行解密,以及对要发送至所述软件安装服务器的信令进行加密;所述私钥信息用于所述软件安装服务器对要发送至所述目标虚拟机的信令进行加密,以及对从所述目标虚拟机接收到的信令进行解密;
向所述目标虚拟机发送所述公钥信息。
根据本公开的第二方面,还提供一种软件安装方法,应用于虚拟机,所述方法包括:
接收软件安装服务器发送的安装指令,所述安装指令指示了所述虚拟机要安装的目标软件;
响应于所述安装指令,执行所述目标软件的安装程序;
在所述安装程序中的任一安装步骤执行失败时,向所述软件安装服务器发送软件安装失败消息,并停止安装;
接收云服务器发送的第二数据回滚指令,其中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前获得的虚拟机快照发送的;
响应于所述第二数据回滚指令,执行数据回滚操作,以使所述虚拟机的状态恢复为与所述虚拟机快照对应的状态。
可选的,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前最近一次获得的虚拟机快照发送的。
可选的,所述方法还包括:在所述安装程序中的全部安装步骤执行成功时,向所述软件安装服务器发送软件安装成功消息。
可选的,所述虚拟机与所述软件安装服务器之间的信令是经加密的;所述方法还包括:
接收所述软件安装服务器发送的公钥信息,所述公钥信息用于所述虚拟机对从所述软件安装服务器接收到的信令进行解密,以及对要发送至所述软件安装服务器的信令进行加密;
存储所述公钥信息。
根据本公开的第三方面,还提供一种软件安装方法,应用于云服务器,所述方法包括:
接收软件安装服务器发送的拍摄目标虚拟机的虚拟机快照的指令;
响应于所述拍摄所述目标虚拟机的虚拟机快照的指令,拍摄所述目标虚拟机的虚拟机快照,并存储所述虚拟机快照;
接收所述软件安装服务器发送的第一数据回滚指令,其中,所述第一数据回滚指令是所述软件安装服务器在确定所述目标虚拟机的目标软件安装失败的情况下发送的,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;
响应于所述第一数据回滚指令,根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,所述第二数据回滚指令用于所述目标虚拟机执行所述数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态。
可选的,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;以及,
所述根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,包括:根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令。
可选的,所述方法还包括:当接收到所述软件安装服务器发送的删除存储在所述云服务器上的虚拟机快照的指令时,删除所存储的虚拟机快照。
根据本公开的第四方面,还提供一种软件安装装置,应用于软件安装服务器,所述装置包括:
需安装软件确定模块,用于确定目标虚拟机需要安装的至少一个软件;
目标软件确定模块,用于按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件;
第一发送模块,用于向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令;
第二发送模块,用于向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件;
接收模块,用于接收所述目标虚拟机发送的软件安装失败消息;
所述第一发送模块还用于当接收模块接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。
根据本公开的第五方面,还提供一种软件安装装置,应用于虚拟机,所述装置包括:
安装指令接收模块,用于接收软件安装服务器发送的安装指令,所述安装指令指示了所述虚拟机要安装的目标软件;
安装指令执行模块,用于响应于所述安装指令,执行所述目标软件的安装程序;
安装反馈模块,用于在所述安装程序中的任一安装步骤执行失败时,向所述软件安装服务器发送软件安装失败消息,并停止安装;
第一数据回滚指令接收模块,用于接收云服务器发送的第二数据回滚指令,其中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前获得的虚拟机快照发送的;
第一数据回滚指令执行模块,用于响应于所述第二数据回滚指令,执行数据回滚操作,以使所述虚拟机的状态恢复为与所述虚拟机快照对应的状态。
根据本公开的第六方面,还提供一种软件安装装置,应用于云服务器,所述装置包括:
拍摄指令接收模块,用于接收软件安装服务器发送的拍摄目标虚拟机的虚拟机快照的指令;
拍摄指令执行模块,用于响应于所述拍摄所述目标虚拟机的虚拟机快照的指令,拍摄所述目标虚拟机的虚拟机快照,并存储所述虚拟机快照;
第二数据回滚指令接收模块,用于接收所述软件安装服务器发送的第一数据回滚指令,其中,所述第一数据回滚指令是所述软件安装服务器在确定所述目标虚拟机的目标软件安装失败的情况下发送的,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;
第二数据回滚指令执行模块,用于响应于所述第一数据回滚指令,根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,所述第二数据回滚指令用于所述目标虚拟机执行所述数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态。
根据本公开的第七方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面所述方法的步骤。
根据本公开的第八方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第二方面所述方法的步骤。
根据本公开的第九方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本发明的第三方面所述方法的步骤。
根据本公开的第十方面,还提供一种电子设备,包括:
根据本公开的第七方面所述的计算机可读存储介质;以及
一个或多个处理器,用于执行所述计算机可读介质中的程序。
本剧本公开的第十一方面,还提供一种电子设备,包括:
根据本公开的第八方面所述的计算机可读存储介质;以及
一个或多个处理器,用于执行所述计算机可读介质中的程序。
根据本公开的第十二方面,还提供一种电子设备,包括:
根据本公开的第九方面所述的计算机可读存储介质;以及
一个或多个处理器,用于执行所述计算机可读介质中的程序。
根据本公开的第十三方面,还提供一种软件安装系统,包括:
软件安装服务器,被配置为执行根据本公开的第一方面所述的方法;
至少一个虚拟机,被配置为执行根据本公开的第二方面所述的方法;以及
云服务器,被配置为执行根据本公开的第三方面所述的方法。
通过上述技术方案,在虚拟机上安装软件时无需再在虚拟机上安装一些特定的安装代理软件,能够由软件安装服务器直接控制安装过程,且在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,能够自动将虚拟机恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为根据本公开的一种实施方式提供的软件安装系统的示意图。
图2是根据一示例性实施例示出的应用于软件安装服务器的软件安装方法的流程图。
图3是根据又一示例性实施例示出的图2中的步骤S101的实现方法的流程图。
图4是根据又一示例性实施例示出的应用于软件安装服务器的软件安装方法的流程图。
图5是根据又一示例性实施例示出的应用于软件安装服务器的软件安装方法中对软件安装服务器和目标虚拟机之间的信令加密的方法的流程图。
图6是根据又一示例性实施例示出的应用于虚拟机的软件安装方法的流程图。
图7是根据又一示例性实施例示出的应用于虚拟机的软件安装方法中对软件安装服务器和虚拟机之间的信令加密的方法的流程图。
图8是根据又一示例性实施例示出的应用于云服务器的软件安装方法的流程图。
图9是根据一示例性实施例示出的应用于软件安装服务器的软件安装装置的示意框图。
图10是根据又一示例性实施例示出的应用于软件安装服务器的软件安装装置的示意框图。
图11是根据一示例性实施例示出的应用于软件安装服务器的软件安装装置中需安装软件确定模块的示意框图。
图12是根据一示例性实施例示出的应用于虚拟机的软件安装装置的示意框图。
图13是根据又一示例性实施例示出的应用于虚拟机的软件安装装置的示意框图。
图14是根据一示例性实施例示出的应用于云服务器的软件安装装置的示意框图。
图15是根据又一示例性实施例示出的应用于云服务器的软件安装装置的示意框图。
图16是根据一示例性实施例示出的一种电子设备的框图。
图17是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
图1为根据本公开的一种实施方式提供的软件安装系统的示意图。如图1所示,该系统可以包括:
软件安装服务器1,所述软件安装服务器1负责发起虚拟机2的软件安装;
至少一个虚拟机2,所述虚拟机2用于在所述软件安装服务器1发起虚拟机2的软件安装之后,实际执行所述软件安装,所述虚拟机2可以为一个,也可以为多个;
云服务器3,所述云服务器3用于根据软件安装服务器1的指令,来向虚拟机2发送相应的指令。
所述软件安装服务器1、虚拟机2和云服务器3之间的交互可以通过有线网络或者无线网络来完成。
在执行根据本公开所述的软件安装方法之前,先对软件安装服务器进行一些配置,例如,在软件安装服务器配置虚拟机的操作系统以及其支持安装的软件的相应版本等,配置文件可以为如下所示:
jdk6u45={}
jdk6u45["software"]="jdk"//支持安装的软件名称
jdk6u45["version"]="6u45"//支持安装的软件版本
jdk6u45["category"]="jdk"//支持安装的软件类别
jdk6u45["dependency"]=""//支持安装的软件所依赖的软件
jdk6u45["description_en_US"]="path/usr/java"
jdk6u45["description_zh_CN"]="默认安装路径/usr/java"
jdk6u45["support"]="CentOS6:64,RedHat5:64"//操作系统版本
jdk6u45["parameters"]={}//额外的安装参数
所述额外的安装参数可以是例如该支持安装的软件需占用的内存、缓存等安装所需的参数。
所述配置还包括在软件安装服务器上配置安装运维工具,用于向虚拟机发送指令。所述运维工具可以是例如ansible等。
图2是根据一示例性实施例示出的软件安装方法的流程图,该方法应用于软件安装服务器,如图2所示,该方法包括步骤S101至步骤S105。
在步骤S101中,确定目标虚拟机需要安装的至少一个软件。
在步骤S102中,按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件。
所述安装顺序可以由对所述至少一个软件进行例如拓扑排序得到。
在步骤S103中,向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令。
所述虚拟机快照即对所述目标虚拟机的数据备份,可以说是所述目标虚拟机的数据的副本,也可以说是所述目标虚拟机的数据的复制品。
在步骤S104中,向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件。
所述安装指令包括例如令所述目标虚拟机下载所述目标软件的软件安装包的指令,根据所述软件安装包执行安装步骤的多个指令,以及启动所述目标软件的服务的指令等多个指令。
在步骤S105中,当接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令。
其中,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。
所述软件安装失败消息可以是表示所述目标软件的任一安装步骤失败的软件安装失败消息,例如可以是表示下载所述目标软件的软件安装包时失败的软件安装失败消息,也可以是在执行所述软件安装包的安装步骤的过程某个步骤执行失败的软件安装失败消息,还可以是在启动所述目标软件的服务时失败的软件安装失败消息等。
通过上述技术方案,在向目标虚拟机发送针对目标软件的安装指令之前,向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令,并在接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。这样,在虚拟机上安装软件时无需再在虚拟机上安装一些特定的安装代理软件,能够由软件安装服务器直接控制安装过程,且在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,能够自动将虚拟机恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
在一种可能的实施方式中,在执行图2中所示的步骤S104之前,所述方法还包括:判断所述软件安装服务器与目标虚拟机之间的网络连通情况,当所述网络不能连通时,获取所述目标虚拟机所在网络信息,并配置与所述目标虚拟机的网络信息相同的网卡来保证软件安装服务器与所述目标虚拟机之间的网络的连通。
在一种可能的实施方式中,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与所述最近一次获得的虚拟机快照对应的状态。当一次软件安装的过程中需要执行多个软件的安装时,若接收到所述目标虚拟机发送的软件安装失败消息,在向所述云服务器发送的第一数据回滚指令是用于令所述目标虚拟机的状态恢复为安装该安装失败的软件之前时的状态,当在该安装失败的软件之前已经成功地安装了其他软件时,所述第一数据回滚指令不会影响到在此次软件安装过程中已经在目标虚拟机上安装成功的软件。由此,使得本公开的软件安装方法更加智能化。
在一种可能的实施方式中,所述方法还包括:根据所确定目标虚拟机需要安装的至少一个软件来配置虚拟机的源地址;以及向目标虚拟机发送所述虚拟机的源地址。所述源地址可以是例如软件包管理器(Yellow dog Updater,Modified,yum)源等。所述源地址用于为所述软件安装提供软件安装包的下载地址。所述下载地址可以是指向软件安装服务器上存储的软件安装包的地址。通过上述技术方案,为软件安装提供了一个确定的软件安装包下载地址,更加简化了软件安装的过程,保证了软件安装包的安全性,使得软件安装更加高效稳定。
图3是根据又一示例性实施例示出的图1中的步骤S101的实现方法的流程图,应用于软件安装服务器,如图3所示,该步骤S101可以包括步骤S201至步骤S205。
在步骤S201中,接收用户的选择指令。所述选择指令用于指示用户期望在所述目标虚拟机上安装的软件。
所述用户的选择指令可以是通过如下方式得到的:用户在人机交互设备的选择界面选择需要控制的虚拟机,所选择的虚拟机作为目标虚拟机,之后,该人机交互设备向软件安装服务器请求该目标虚拟机支持安装的软件版本,软件安装服务器接到该请求后,可以将目标虚拟机支持安装的软件版本信息反馈给人机交互设备,然后用户通过勾选等方式在人机交互设备上选择期望安装的软件,选择之后,人机交互设备向软件安装服务器发送指示期望在需要控制的虚拟机即目标虚拟机上安装的软件的选择指令。
在步骤S202中,获取所述目标虚拟机的运行环境信息。
在步骤S203中,根据所述运行环境信息,判断所述目标虚拟机是否具有安装所述选择指令所指示的软件所需的关联软件,如果所述目标虚拟机具有安装所述选择指令所指示的软件所需的关联软件,则转至步骤S205,如果所述目标虚拟机不具有安装所述选择指令所指示的软件所需的关联软件,则转至步骤S204。
所述运行环境信息可以是例如环境变量等信息。所述关联软件即所述选择指令所指示的软件在安装前需要提前安装的其他软件,例如,若所述选择指令所指示的软件为MySQL,则其关联软件之一为GNU编译器套件(GNU Compiler Collection,gcc)。所述关联软件可以从上述对软件安装服务器的配置过程中配置的文件中获取。
在步骤S204中,将所述选择指令所指示的软件和所述关联软件确定为所述需要安装的软件。若目标虚拟机中不具有所述选择指令所指示的软件的关联软件,则所述关联软件和所述选择指令所指示的软件都需要被安装在所述目标虚拟机上才能满足所述选择指令所述指示的软件的安装条件。
在步骤S205中,将所述选择指令所指示的软件确定为所述需要安装的软件。若目标虚拟机中具有所述选择指令所指示的软件的关联软件,则直接按照所述选择指令所指示的软件来确定需要安装的软件即可。
通过上述技术方案,通过获取所述目标虚拟机的运行环境信息来判断是否需要将所述选择指令所指示的软件的关联软件确定为所述需要安装的软件,进一步保障了软件安装的顺利进行,而且无需在所述目标虚拟机上重复安装所述关联软件,在一定程度上减少了系统资源的占用。
图4是根据又一示例性实施例示出的软件安装方法的流程图,该方法应用于软件安装服务器,如图4所示,该方法包括图1所示的步骤S101至步骤S104,还包括步骤S301至步骤S302。
在步骤S301中,当接收到所述目标虚拟机发送的软件安装成功消息时,判断所述至少一个软件中是否仍存在未安装的软件,如果仍存在未安装的软件,则转至步骤S102,如果不存在未安装的软件,则转至步骤S302。
在步骤S302中,向所述云服务器发送删除存储在所述云服务器上的虚拟机快照的指令。
当仍存在未安装的软件时,从步骤S102开始循环执行软件安装的过程,直到接收到所述目标虚拟机发送的软件安装成功消息时,根据所述软件的安装顺序判断得到已经不存在未安装的软件了,则停止循环。
上述的流程图只是根据本公开的一种示例性实施例的所示出的流程图,所述步骤S302与步骤S301的顺序并不是确定的,为了避免繁琐,在执行步骤S104之后,先执行步骤S302,再执行步骤S301的流程图就不再单独示出,但本领域技术人员应该知道的是,步骤S302和步骤S301的执行并没有明确的先后关系。在执行步骤S104之后,还可以在收到所述目标虚拟机发送的软件安装成功消息时先执行步骤S302,再执行步骤S301中对未安装的软件的判断。另外,本领域技术人员还应知道的是,步骤S301和步骤S302也不需要同时存在,可以在一个示例性实施中只存在步骤S301,在另一个示例性实施例中只存在步骤S302。
通过上述技术方案,在接收到所述目标虚拟机发送的软件安装成功消息时,判断所述至少一个软件中是否仍存在未安装的软件,若有,则循环执行软件安装的过程,和/或在接收到所述目标虚拟机发送的软件安装成功消息时向所述云服务器发送删除存储在所述云服务器上的虚拟机快照的指令,这样能够在发起一次软件安装的过程中执行多个软件的安装,且能够及时清除存储在所述云服务器上的虚拟机快照,避免内存的占用。
在一种可能的实施方式中,所述方法还包括,当接收到所述目标虚拟机发送的软件安装失败消息时,在满足存在未安装的软件且所述未安装的软件不是所述安装失败的软件的关联软件的条件下,返回如图2和/或图4中所示的步骤S102循环软件安装的过程。这样能够在发起一次软件安装的过程中出现软件安装失败的情况时也能执行多个软件的安装,提高了软件安装的效率。
图5是根据又一示例性实施例示出的软件安装方法中对软件安装服务器和目标虚拟机之间的信令加密的方法的流程图,该方法应用于软件安装服务器,如图5所示,该方法包括步骤S401至步骤S403。
在步骤S401中,接收用户输入的所述目标虚拟机的认证信息。
所述目标虚拟机的认证信息可以与图3中所示的步骤S201中接收用户的选择指令的步骤同时进行,用户在选择需要进行安装软件的虚拟机以及需要相应安装的软件时,同时输入所选择的虚拟机的认证信息,在步骤S401中软件安装服务器就可以接收到目标虚拟机的认证信息。所述认证信息可以包括用户名、密码等用于获取所述目标虚拟机权限的信息。
在步骤S402中,基于所述认证信息,生成公钥信息和私钥信息。
生成所述公钥信息和私钥信息的方法可以是利用unix-like系统中的ssh-keygen工具来进行所述公钥信息和私钥信息的生成。
所述公钥信息用于所述目标虚拟机对从所述软件安装服务器接收到的信令进行解密,以及对要发送至所述软件安装服务器的信令进行加密;所述私钥信息用于所述软件安装服务器对要发送至所述目标虚拟机的信令进行加密,以及对从所述目标虚拟机接收到的信令进行解密。需要说明的是,这里所提到的信令是指在软件安装过程中,目标虚拟机与软件安装服务器之间传输的任何指令、信息、数据、消息等,包括但不限于:软件安装服务器向目标虚拟机发送的针对所述目标软件的安装指令、目标虚拟机向软件安装服务器发送的软件安装失败消息、软件安装成功消息等。
在步骤S403中,向所述目标虚拟机发送所述公钥信息。
通过上述技术方案,根据用户输入的所述目标虚拟机的认证信息生成所述公钥信息和私钥信息,并将所述公钥信息发送至所述目标虚拟机,从而使得软件安装服务器与所述目标虚拟机之间实现免密码认证,从而使得软件安装服务器与所述目标虚拟机之间的通信更加的简洁高效、安全。
在一种可能的实施方式中,所述方法还包括:在接收到所述目标虚拟机发送的软件安装失败消息或软件安装成功消息时,若不存在未安装的软件和/或存在的未安装的软件是所述安装失败的软件的关联软件,则删除所述公钥信息和私钥信息,并向目标虚拟机发送删除所述公钥信息的指令。
在一种可能的实施方式中,所述方法还包括:在接收到所述目标虚拟机发送的软件安装失败消息或软件安装成功消息时,向目标虚拟机发送删除所述源地址的指令。所述向目标虚拟机发送删除所述源地址的指令可以是针对单个软件的源地址的指令,也可以是在本次软件安装过程完成之后,针对所有软件的源地址的的指令。
通过上述技术方案,通过向目标虚拟机发送删除指令来在软件安装结束之前删除目标虚拟机和软件安装服务器之间的免密码认证和/或删除存储在所述虚拟机上的为本次软件安装服务的源地址,使得软件安装进一步满足无侵入式的软件安装,无需占用虚拟机过多资源和存储空间。
图6是根据一示例性实施例示出的软件安装方法的流程图,该方法应用于虚拟机,如图6所示,该方法包括步骤S501至步骤S505。
在步骤S501中,接收软件安装服务器发送的安装指令,所述安装指令指示了所述虚拟机要安装的目标软件。
所述安装指令包括例如令所述虚拟机下载所述目标软件的软件安装包的指令,根据所述软件安装包执行安装步骤的多个指令,以及启动所述目标软件的服务的指令等多个指令。
在一种可能的实施方式中,所述安装指令中还可以包括所述虚拟机的源地址。所述源地址用于为所述软件安装提供软件安装包的下载地址。所述方法还包括,存储所述虚拟机的源地址。
在步骤S502中,响应于所述安装指令,执行所述目标软件的安装程序。
根据所述安装指令依次执行所述目标软件的安装程序,可以包括例如下载所述目标软件的软件安装包、根据所述软件安装包执行多个安装步骤、启动所述目标软件的服务等安装程序。
在一种可能的实施方式中,所述软件安装包可以根据所述虚拟机的源地址来进行下载。
在步骤S503中,在所述安装程序中的任一安装步骤执行失败时,向所述软件安装服务器发送软件安装失败消息,并停止安装。
所述任一安装步骤包括例如下载所述目标软件的软件安装包、根据所述软件安装包执行多个安装步骤、启动所述目标软件的服务等步骤,当其中的任一步骤执行失败时,都向所述软件安装服务器发送软件安装失败消息,并停止安装。
在步骤S504中,接收云服务器发送的第二数据回滚指令。
其中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前获得的虚拟机快照发送的。
在步骤S505中,响应于所述第二数据回滚指令,执行数据回滚操作,以使所述虚拟机的状态恢复为与所述虚拟机快照对应的状态。
所述虚拟机快照即对所述虚拟机的数据备份,可以说是所述虚拟机的数据的副本,也可以说是所述虚拟机的数据的复制品。
通过上述技术方案,在软件安装服务器的控制下执行软件安装的步骤,并在目标软件安装失败时,在云服务器的控制下执行数据回滚指令以使所述虚拟机的状态恢复为安装所述目标软件之前的状态,这样虚拟机就能在软件的安装过程失败时,自动恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
在一种可能的实施方式中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前最近一次获得的虚拟机快照发送的。执行一次软件安装的过程可能会安装多个软件,每次开始安装一个新的软件之前云服务器都会获取所述虚拟机的当前虚拟机快照,这样就使得,当某个软件安装失败时,虚拟机在根据所述第二数据回滚指令进行数据回滚时,不用回到本次软件安装之前最原始的状态,而能够保留在安装失败的软件之前已经安装成功的软件,只恢复到安装该安装失败的软件之前所述虚拟机的状态,这样使软件安装的过程更加智能和高效。
在一种可能的实施方式中,所述方法还包括:在所述安装程序中的全部安装步骤执行成功时,向所述软件安装服务器发送软件安装成功消息。所述虚拟机在软件安装服务器的指令下执行完每一步软件安装步骤都会向软件安装服务器返回一个是否执行成功的消息,以向软件安装服务器更新当前的执行步骤和软件安装的进度。当所述目标软件的安装程序全部执行成功时,会向所述软件安装服务器发送软件安装成功消息。这样就能使软件安装服务器完全掌握在虚拟机上的软件安装的进度,以保证软件安装的顺利进行。
图7是根据又一示例性实施例示出的软件安装方法中对软件安装服务器和虚拟机之间的信令加密的方法的流程图,该方法应用于虚拟机,如图7所示,该方法包括步骤S601和步骤S602。
在步骤S601中,接收所述软件安装服务器发送的公钥信息。所述公钥信息用于所述虚拟机对从所述软件安装服务器接收到的信令进行解密,以及对要发送至所述软件安装服务器的信令进行加密。
在步骤S602中,存储所述公钥信息。
通过上述技术方案,接收并存储所述公钥信息能够使软件安装服务器与所述虚拟机之间实现免密码认证,从而使得软件安装服务器与所述虚拟机之间的通信更加的简洁高效、安全。
在一种可能的实施方式中,所述方法还包括:接收软件安装服务器发送的删除所述公钥信息的指令;响应于所述删除所述公钥信息的指令,对虚拟机上存储的公钥信息进行删除。
在一种可能的实施方式中,所述方法还包括:接收软件安装服务器发送的删除所述源地址的指令;响应于所述删除所述源地址的指令,对虚拟机上存储的源地址进行删除。
图8是根据又一示例性实施例示出的软件安装方法的流程图,该方法应用于云服务器,如图8所示,该方法包括步骤S701至步骤S704。
在步骤S701中,接收软件安装服务器发送的拍摄目标虚拟机的虚拟机快照的指令。
所述虚拟机快照即对所述目标虚拟机的数据备份,可以说是所述目标虚拟机的数据的副本,也可以说是所述目标虚拟机的数据的复制品。
在步骤S702中,响应于所述拍摄所述目标虚拟机的虚拟机快照的指令,拍摄所述目标虚拟机的虚拟机快照,并存储所述虚拟机快照。
在步骤S703中,接收所述软件安装服务器发送的第一数据回滚指令。其中,所述第一数据回滚指令是所述软件安装服务器在确定所述目标虚拟机的目标软件安装失败的情况下发送的,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作。
在步骤S704中,响应于所述第一数据回滚指令,根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令。所述第二数据回滚指令用于所述目标虚拟机执行所述数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态。
通过上述技术方案,云服务器在软件安装服务器的指令下拍摄所述目标虚拟机快照,用于使所述目标虚拟机在软件安装失败时能够恢复到安装该安装失败的软件之前的状态,云服务器在接收到软件安装服务器的第一数据回滚指令时,向目标虚拟机发送第二数据回滚指令使虚拟机恢复为在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态,这样就能在虚拟机上安装软件时无需再在虚拟机上安装一些特定的安装代理软件,能够由软件安装服务器直接控制安装过程,且在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,能够自动将虚拟机恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
在一种可能的实施方式中,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;以及,
所述根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,包括:根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令。
在执行一次软件安装的过程可能会安装多个软件,每次开始安装一个新的软件之前云服务器都会获取所述虚拟机的当前虚拟机快照,这样就使得,当某个软件安装失败时,云服务器在根据软件安装服务器发送的第一数据回滚指令向目标虚拟机发送第二数据回滚指令时,所述第一数据回滚指令和第二数据回滚指令都是根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照来发送的,所述虚拟机在根据所述第二数据回滚指令进行数据回滚时,不用回到本次软件安装之前最原始的状态,而能够保留在安装失败的软件之前已经安装成功的软件,只恢复到安装该安装失败的软件之前所述虚拟机的状态,这样使软件安装的过程更加智能和高效。
在一种可能的实施方式中,所述方法还包括:当接收到所述软件安装服务器发送的删除存储在所述云服务器上的虚拟机快照的指令时,删除所存储的虚拟机快照。这样就能够及时清除存储在所述云服务器上的虚拟机快照,避免内存的占用。
图9是根据一示例性实施例示出的软件安装装置100的示意框图,该装置100应用于软件安装服务器,如图9所示,该装置100包括:
需安装软件确定模块10,用于确定目标虚拟机需要安装的至少一个软件。
目标软件确定模块11,用于按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件。
第一发送模块12,用于向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令。所述虚拟机快照即对所述目标虚拟机的数据备份,可以说是所述目标虚拟机的数据的副本,也可以说是所述目标虚拟机的数据的复制品。
第二发送模块13,用于向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件。
接收模块14,用于接收所述目标虚拟机发送的软件安装失败消息;
所述第一发送模块12还用于当接收模块14接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令。所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。
通过上述技术方案,在第二发送模块13向目标虚拟机发送针对目标软件的安装指令之前,先由第一发送模块12向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令,并在接收模块14接收到所述目标虚拟机发送的软件安装失败消息时,由所述第一发送模块12向所述云服务器发送第一数据回滚指令,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。这样就能在虚拟机上安装软件时无需再在虚拟机上安装一些特定的安装代理软件,能够由软件安装服务器直接控制安装过程,且在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,能够自动将虚拟机恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
在一种可能的实施方式中,如图10所示,所述装置100还包括网络连通模块15,用于判断所述软件安装服务器与目标虚拟机之间的网络连通情况,并在当所述网络不能连通时,获取所述目标虚拟机所在网络信息,并配置与所述目标虚拟机的网络信息相同的网卡来保证软件安装服务器与所述目标虚拟机之间的网络的连通。
在一种可能的实施方式中,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与所述最近一次获得的虚拟机快照对应的状态。当一次软件安装的过程中需要执行多个软件的安装时,若接收模块14接收到所述目标虚拟机发送的软件安装失败消息,在向所述云服务器发送的第一数据回滚指令是用于令所述目标虚拟机的状态恢复为安装该安装失败的软件之前时的状态,当在该安装失败的软件之前已经成功地安装了其他软件时,所述第一数据回滚指令不会影响到在此次软件安装过程中已经在目标虚拟机上安装成功的软件,使得本公开的软件安装方法更加智能化。
在一种可能的实施方式中,如图10所示,所述装置100还包括源地址配置模块16,用于根据所确定目标虚拟机需要安装的至少一个软件来配置虚拟机的源地址。所述第二发送模块13还用于向所述目标虚拟机发送所述虚拟机的源地址。所述源地址可以是例如yum源等。所述源地址用于为所述软件安装提供软件安装包的下载地址。所述下载地址可以是指向软件安装服务器上存储的软件安装包的地址。通过上述技术方案,为软件安装提供了一个确定的软件安装包下载地址,更加简化了软件安装的过程,保证了软件安装包的安全性,使得软件安装更加高效稳定。
图11是根据一示例性实施例示出的软件安装装置100中需安装软件确定模块10的示意框图,如图11所示,该模块10包括:
选择指令接收子模块101,用于接收用户的选择指令,所述选择指令用于指示用户期望在所述目标虚拟机上安装的软件。
运行环境信息获取子模块102,用于获取所述目标虚拟机的运行环境信息。
关联软件确定子模块103,用于根据所述运行环境信息,确定所述目标虚拟机是否具有安装所述选择指令所指示的软件所需的关联软件。
需安装软件确定子模块104,用于在确定所述目标虚拟机不具有所述关联软件时,将所述选择指令所指示的软件和所述关联软件确定为所述需要安装的软件。
所述需安装软件确定子模块104还用于在确定所述目标虚拟机具有所述关联软件时,将所述选择指令所指示的软件确定为所述需要安装的软件。
通过上述技术方案,由运行环境信息获取子模块102获取所述目标虚拟机的运行环境信息来判断是否需要将所述选择指令所指示的软件的关联软件确定为所述需要安装的软件,进一步保障了软件安装的顺利进行,而且无需在所述目标虚拟机上重复安装所述关联软件,在一定程度上减少了系统资源的占用。
在一种可能的实施方式中,所述接收模块14还用于接收所述目标虚拟机发送的软件安装成功消息;所述装置100还包括如图10所示的循环模块17,用于在第二发送模块13向所述目标虚拟机发送针对所述目标软件的安装指令之后,当接收模块14接收到所述目标虚拟机发送的软件安装成功消息时,若所述至少一个软件中仍存在未安装的软件,则令所述目标软件确定模块11再次工作来循环安装软件。
在一种可能的实施方式中,所述循环模块17还用于在接收模块14接收到所述目标虚拟机发送的软件安装失败消息时,在满足存在未安装的软件且所述未安装的软件不是所述安装失败的软件的关联软件的条件下,令所述目标软件确定模块11再次工作来循环安装软件。这样能够在发起一次软件安装的过程中出现软件安装失败的情况时也能执行多个软件的安装,提高了软件安装的效率。
在一种可能的实施方式中,所述第一发送模块12还用于当接收模块14接收到所述目标虚拟机发送的软件安装成功消息时,向所述云服务器发送删除存储在所述云服务器上的虚拟机快照的指令。
在一种可能的实施方式中,所述软件安装服务器与所述目标虚拟机之间的信令是经加密的,所述接收模块14还用于接收用户输入的所述目标虚拟机的认证信息;所述装置100还包括密钥信息生成模块18,用于基于所述认证信息,生成公钥信息和私钥信息。所述第二发送模块13还用于向所述目标虚拟机发送所述公钥信息。
所述公钥信息用于所述目标虚拟机对从所述软件安装服务器接收到的信令进行解密,以及对要发送至所述软件安装服务器的信令进行加密;所述私钥信息用于所述软件安装服务器对要发送至所述目标虚拟机的信令进行加密,以及对从所述目标虚拟机接收到的信令进行解密。
在一种可能的实施方式中,所述装置100还包括如图10所示的密钥信息删除模块19,用于在接收模块14接收到所述目标虚拟机发送的软件安装失败消息或软件安装成功消息时,若不存在未安装的软件和/或存在的未安装的软件是所述安装失败的软件的关联软件,则删除所述公钥信息和私钥信息;所述第二发送模块13还用于向目标虚拟机发送删除所述公钥信息的指令。
在一种可能的实施方式中,所述第二发送模块13还用于在接收模块14接收到所述目标虚拟机发送的软件安装失败消息或软件安装成功消息时,向目标虚拟机发送删除所述源地址的指令。
通过上述技术方案,有第二发送模块13向目标虚拟机发送删除指令来在软件安装结束之前删除目标虚拟机和软件安装服务器之间的免密码认证和/或删除存储在所述虚拟机上的为本次软件安装服务的源地址,使得软件安装进一步满足无侵入式的软件安装,无需占用虚拟机过多资源和存储空间。
图12是根据一示例性实施例示出的软件安装装置200的示意框图,该装置200应用于虚拟机,如图12所示,该装置200包括:
安装指令接收模块20,用于接收软件安装服务器发送的安装指令,所述安装指令指示了所述虚拟机要安装的目标软件。
安装指令执行模块21,用于响应于所述安装指令,执行所述目标软件的安装程序。
安装反馈模块22,用于在所述安装程序中的任一安装步骤执行失败时,向所述软件安装服务器发送软件安装失败消息,并停止安装。
第一数据回滚指令接收模块23,用于接收云服务器发送的第二数据回滚指令。其中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前获得的虚拟机快照发送的。
第一数据回滚指令执行模块24,用于响应于所述第二数据回滚指令,执行数据回滚操作,以使所述虚拟机的状态恢复为与所述虚拟机快照对应的状态。
通过上述技术方案,安装指令执行模块21根据软件安装服务器的指令执行软件安装的步骤,第一数据回滚指令执行模块24根据第一数据回滚指令接收模块23接收到的第二数据回滚指令来使所述虚拟机的状态恢复为安装所述目标软件之前的状态,这样就能在虚拟机上安装软件时无需再在虚拟机上安装一些特定的安装代理软件,能够由软件安装服务器直接控制安装过程,且在软件的安装过程失败时,自动恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
在一种可能的实施方式中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前最近一次获得的虚拟机快照发送的。这样就使得当虚拟机在该安装失败的软件之前已经成功地安装了其他软件时,所述第二数据回滚指令不会影响到在此次软件安装过程中已经在目标虚拟机上安装成功的软件,使得本公开的软件安装方法更加智能化。
在一种可能的实施方式中,所述安装反馈模块22还用于在所述安装程序中的全部安装步骤执行成功时,向所述软件安装服务器发送软件安装成功消息。这样就能使软件安装服务器完全掌握在虚拟机上的软件安装的进度,以保证软件安装的顺利进行。
在一种可能的实施方式中,所述虚拟机与所述软件安装服务器之间的信令是经加密的;如图13所示,所述装置200还包括:
公钥信息接收模块25,用于接收所述软件安装服务器发送的公钥信息。所述公钥信息用于所述虚拟机对从所述软件安装服务器接收到的信令进行解密,以及对要发送至所述软件安装服务器的信令进行加密。
存储模块26,用于存储所述公钥信息。
通过上述技术方案,接收并存储所述公钥信息能够使软件安装服务器与所述虚拟机之间实现免密码认证,从而使得软件安装服务器与所述虚拟机之间的通信更加的简洁高效、安全。
在一种可能的实施方式中,如图13所示,所述装置200还包括:
第一删除指令接收模块27,用于接收软件安装服务器发送的删除所述公钥信息的指令;
第一删除指令执行模块28,用于响应于所述第一删除指令接收模块27,对虚拟机上存储的公钥信息进行删除。
在一种可能的实施方式中,所述第一删除指令接收模块27还用于接收软件安装服务器发送的删除所述源地址的指令;所述第一删除指令执行模块28还用于响应于所述第一删除指令接收模块27,对虚拟机上存储的源地址进行删除。
图14是根据一示例性实施例示出的软件安装装置300的示意框图,该方法应用于云服务器,如图14所示,该装置300包括:
拍摄指令接收模块30,用于接收软件安装服务器发送的拍摄目标虚拟机的虚拟机快照的指令。所述虚拟机快照即对所述目标虚拟机的数据备份,可以说是所述目标虚拟机的数据的副本,也可以说是所述目标虚拟机的数据的复制品。
拍摄指令执行模块31,用于响应于所述拍摄所述目标虚拟机的虚拟机快照的指令,拍摄所述目标虚拟机的虚拟机快照,并存储所述虚拟机快照。
第二数据回滚指令接收模块32,用于接收所述软件安装服务器发送的第一数据回滚指令。其中,所述第一数据回滚指令是所述软件安装服务器在确定所述目标虚拟机的目标软件安装失败的情况下发送的,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作。
第二数据回滚指令执行模块33,用于响应于所述第一数据回滚指令,根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,所述第二数据回滚指令用于所述目标虚拟机执行所述数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态。
通过上述技术方案,拍摄指令执行模块31根据拍摄指令接收模块30接收到的软件安装服务器的指令拍摄所述目标虚拟机快照,用于使所述目标虚拟机在软件安装失败时能够恢复到安装该安装失败的软件之前的状态,在第二数据回滚指令接收模块32接收到软件安装服务器的第一数据回滚指令时,第二数据回滚指令接收模块32向目标虚拟机发送第二数据回滚指令使虚拟机根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照恢复为在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态,这样就能在虚拟机上安装软件时无需再在虚拟机上安装一些特定的安装代理软件,能够由软件安装服务器直接控制安装过程,且在由软件安装服务器发起的在虚拟机的软件的安装过程失败时,能够自动将虚拟机恢复到安装该安装失败的软件之前的状态,避免了需要手动清理安装失败的数据的情况,解决了虚拟机软件安装过程中临时文件清理不彻底,导致虚拟机垃圾文件过多的问题。
在一种可能的实施方式中,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;以及,
所述第二数据回滚指令执行模块33用于根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令。
通过以上技术方案,第二数据回滚指令执行模块33在根据第二数据回滚指令接收模块32接收到的由软件安装服务器发送的第一数据回滚指令向目标虚拟机发送第二数据回滚指令时,所述第一数据回滚指令和第二数据回滚指令都是根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照来发送的,所述虚拟机在根据所述第二数据回滚指令进行数据回滚时,不用回到本次软件安装之前最原始的状态,而能够保留在安装失败的软件之前已经安装成功的软件,只恢复到安装该安装失败的软件之前所述虚拟机的状态,这样使得软件安装的过程更加智能和高效。
在一种可能的实施方式中,如图15所示,所述装置300还包括:
第二删除指令接收模块34,用于接收所述软件安装服务器发送的删除存储在所述云服务器上的虚拟机快照的指令;以及
第二删除指令执行模块35,用于当第二删除指令接收模块34接收到所述软件安装服务器发送的删除存储在所述云服务器上的虚拟机快照的指令时,删除所存储的虚拟机快照。
通过以上技术方案,能够及时清除存储在所述云服务器上的虚拟机快照,避免内存的占用。
图16是根据一示例性实施例示出的一种电子设备1500的框图。如图16所示,该电子设备1500可以包括:处理器1501,存储器1502,多媒体组件1503,输入/输出(I/O)接口1504,以及通信组件1505。
其中,处理器1501用于控制该电子设备1500的整体操作,以完成上述的应用于虚拟机的软件安装方法中的全部或部分步骤。存储器1502用于存储各种类型的数据以支持在该电子设备1500的操作,这些数据例如可以包括用于在该电子设备1500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器1502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件1503可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器1502或通过通信组件1505发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口1504为处理器1501和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件1505用于该电子设备1500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件1505可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备1500可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的应用于虚拟机的软件安装方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器1502,上述程序指令可由电子设备1500的处理器1501执行以完成上述的应用于虚拟机的软件安装方法。
图17是根据一示例性实施例示出的一种电子设备1600的框图。例如,电子设备1600可以被提供为一服务器。参照图17,电子设备1600包括处理器1622,其数量可以为一个或多个,以及存储器1632,用于存储可由处理器1622执行的计算机程序。存储器1632中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器1622可以被配置为执行该计算机程序,以执行上述的应用于软件安装服务器或云服务器的软件安装方法。
另外,电子设备1600还可以包括电源组件1626和通信组件1650,该电源组件1626可以被配置为执行电子设备1600的电源管理,该通信组件1650可以被配置为实现电子设备1600的通信,例如,有线或无线通信。此外,该电子设备1600还可以包括输入/输出(I/O)接口1658。电子设备1600可以操作基于存储在存储器1632的操作系统,例如WindowsServerTM,Mac OS XTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器1632,上述程序指令可由电子设备1600的处理器1622执行以完成上述的应用于软件安装服务器或云服务器的软件安装方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种软件安装方法,其特征在于,应用于软件安装服务器,所述方法包括:
确定目标虚拟机需要安装的至少一个软件;
按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件;
向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令;
向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件;
当接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。
2.根据权利要求1所述的方法,其特征在于,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前最近一次获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与所述最近一次获得的虚拟机快照对应的状态。
3.根据权利要求1所述的方法,其特征在于,所述确定目标虚拟机需要安装的至少一个软件,包括:
接收用户的选择指令,所述选择指令用于指示用户期望在所述目标虚拟机上安装的软件;
获取所述目标虚拟机的运行环境信息;
根据所述运行环境信息,确定所述目标虚拟机是否具有安装所述选择指令所指示的软件所需的关联软件;
在确定所述目标虚拟机不具有所述关联软件时,将所述选择指令所指示的软件和所述关联软件确定为所述需要安装的软件;
在确定所述目标虚拟机具有所述关联软件时,将所述选择指令所指示的软件确定为所述需要安装的软件。
4.根据权利要求1所述的方法,其特征在于,在所述向所述目标虚拟机发送针对所述目标软件的安装指令的步骤之后,所述方法还包括:
当接收到所述目标虚拟机发送的软件安装成功消息时,若所述至少一个软件中仍存在未安装的软件,则返回所述按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为所述目标软件的步骤。
5.一种软件安装方法,其特征在于,应用于虚拟机,所述方法包括:
接收软件安装服务器发送的安装指令,所述安装指令指示了所述虚拟机要安装的目标软件;
响应于所述安装指令,执行所述目标软件的安装程序;
在所述安装程序中的任一安装步骤执行失败时,向所述软件安装服务器发送软件安装失败消息,并停止安装;
接收云服务器发送的第二数据回滚指令,其中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前获得的虚拟机快照发送的;
响应于所述第二数据回滚指令,执行数据回滚操作,以使所述虚拟机的状态恢复为与所述虚拟机快照对应的状态。
6.一种软件安装方法,其特征在于,应用于云服务器,所述方法包括:
接收软件安装服务器发送的拍摄目标虚拟机的虚拟机快照的指令;
响应于所述拍摄所述目标虚拟机的虚拟机快照的指令,拍摄所述目标虚拟机的虚拟机快照,并存储所述虚拟机快照;
接收所述软件安装服务器发送的第一数据回滚指令,其中,所述第一数据回滚指令是所述软件安装服务器在确定所述目标虚拟机的目标软件安装失败的情况下发送的,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;
响应于所述第一数据回滚指令,根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,所述第二数据回滚指令用于所述目标虚拟机执行所述数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态。
7.一种软件安装装置,其特征在于,应用于软件安装服务器,所述装置包括:
需安装软件确定模块,用于确定目标虚拟机需要安装的至少一个软件;
目标软件确定模块,用于按照所述至少一个软件的安装顺序,将当前需要安装的软件确定为目标软件;
第一发送模块,用于向云服务器发送拍摄所述目标虚拟机的虚拟机快照的指令;
第二发送模块,用于向所述目标虚拟机发送针对所述目标软件的安装指令,以使所述目标虚拟机开始安装所述目标软件;
接收模块,用于接收所述目标虚拟机发送的软件安装失败消息;
所述第一发送模块还用于当所述接收模块接收到所述目标虚拟机发送的软件安装失败消息时,向所述云服务器发送第一数据回滚指令,所述第一数据回滚指令用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的所述虚拟机快照对应的状态。
8.一种软件安装装置,其特征在于,应用于虚拟机,所述装置包括:
安装指令接收模块,用于接收软件安装服务器发送的安装指令,所述安装指令指示了所述虚拟机要安装的目标软件;
安装指令执行模块,用于响应于所述安装指令,执行所述目标软件的安装程序;
安装反馈模块,用于在所述安装程序中的任一安装步骤执行失败时,向所述软件安装服务器发送软件安装失败消息,并停止安装;
第一数据回滚指令接收模块,用于接收云服务器发送的第二数据回滚指令,其中,所述第二数据回滚指令是所述云服务器根据在所述虚拟机安装所述目标软件之前获得的虚拟机快照发送的;
第一数据回滚指令执行模块,用于响应于所述第二数据回滚指令,执行数据回滚操作,以使所述虚拟机的状态恢复为与所述虚拟机快照对应的状态。
9.一种软件安装装置,其特征在于,应用于云服务器,所述装置包括:
拍摄指令接收模块,用于接收软件安装服务器发送的拍摄目标虚拟机的虚拟机快照的指令;
拍摄指令执行模块,用于响应于所述拍摄所述目标虚拟机的虚拟机快照的指令,拍摄所述目标虚拟机的虚拟机快照,并存储所述虚拟机快照;
第二数据回滚指令接收模块,用于接收所述软件安装服务器发送的第一数据回滚指令,其中,所述第一数据回滚指令是所述软件安装服务器在确定所述目标虚拟机的目标软件安装失败的情况下发送的,用于指示所述云服务器根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对所述目标虚拟机进行数据回滚操作;
第二数据回滚指令执行模块,用于响应于所述第一数据回滚指令,根据在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照,向所述目标虚拟机发送第二数据回滚指令,所述第二数据回滚指令用于所述目标虚拟机执行所述数据回滚操作,以使所述目标虚拟机的状态恢复为与在所述目标虚拟机安装所述目标软件之前获得的虚拟机快照对应的状态。
10.一种软件安装系统,其特征在于,包括:
软件安装服务器,被配置为执行权利要求1至4中任一权利要求所述的方法;
至少一个虚拟机,被配置为执行权利要求5中所述的方法;以及
云服务器,被配置为执行权利要求6中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711004054.5A CN107992309A (zh) | 2017-10-24 | 2017-10-24 | 软件安装方法、装置、系统、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711004054.5A CN107992309A (zh) | 2017-10-24 | 2017-10-24 | 软件安装方法、装置、系统、介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107992309A true CN107992309A (zh) | 2018-05-04 |
Family
ID=62031134
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711004054.5A Pending CN107992309A (zh) | 2017-10-24 | 2017-10-24 | 软件安装方法、装置、系统、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107992309A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103092650A (zh) * | 2013-01-09 | 2013-05-08 | 华中科技大学 | 云环境下基于软件预安装的虚拟机镜像生成方法和系统 |
US20140189677A1 (en) * | 2013-01-02 | 2014-07-03 | International Business Machines Corporation | Effective Migration and Upgrade of Virtual Machines in Cloud Environments |
WO2015003310A1 (en) * | 2013-07-09 | 2015-01-15 | Hua Zhong University Of Science Technology | Synchronized virtual trusted platform modules (vtpm) and virtual machine (vm) rollbacks |
CN105549998A (zh) * | 2015-12-15 | 2016-05-04 | Tcl集团股份有限公司 | 一种终端应用程序的动态关联升级的方法和系统 |
-
2017
- 2017-10-24 CN CN201711004054.5A patent/CN107992309A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140189677A1 (en) * | 2013-01-02 | 2014-07-03 | International Business Machines Corporation | Effective Migration and Upgrade of Virtual Machines in Cloud Environments |
CN103092650A (zh) * | 2013-01-09 | 2013-05-08 | 华中科技大学 | 云环境下基于软件预安装的虚拟机镜像生成方法和系统 |
WO2015003310A1 (en) * | 2013-07-09 | 2015-01-15 | Hua Zhong University Of Science Technology | Synchronized virtual trusted platform modules (vtpm) and virtual machine (vm) rollbacks |
CN105549998A (zh) * | 2015-12-15 | 2016-05-04 | Tcl集团股份有限公司 | 一种终端应用程序的动态关联升级的方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105117233B (zh) | Api调用方法及装置 | |
CN110752947A (zh) | 一种k8s集群部署方法及装置,一种部署平台 | |
CN104657174A (zh) | 一种用于动态实现应用功能的方法和装置 | |
CN107450941A (zh) | 自动打包方法、装置、存储介质和计算机设备 | |
Ridene et al. | A model-driven approach for automating mobile applications testing | |
CN105049532A (zh) | 一种sdk包的打包方法及装置和下载方法及装置 | |
CN110399159A (zh) | 操作系统的部署方法、装置、计算机设备和存储介质 | |
CN111880987A (zh) | 应用程序的动态监测方法、装置、存储介质以及电子装置 | |
CN107301041A (zh) | 一种定制系统功能的方法及系统 | |
CN108829430A (zh) | 基于Eclipse和Tomcat的Java Web项目更新方法及相关装置 | |
CN108536484A (zh) | 参数修改方法、装置、终端设备及存储介质 | |
CN103716356A (zh) | 基于web的存储过程操作方法、装置和系统 | |
CN104298485B (zh) | 一种生成满足安全强度要求的随机数的方法 | |
CN104536752A (zh) | 自动生成apk的方法及装置 | |
CN109828840A (zh) | 资源编排方法、装置、存储介质及电子设备 | |
CN105512562B (zh) | 一种漏洞挖掘方法、装置及电子设备 | |
CN106657332A (zh) | 一种断点续传方法 | |
CN113961226B (zh) | 一种软件开发工具包修复方法、终端、服务器及设备 | |
CN105242910A (zh) | 基于中间件插件框架的插件状态控制方法及客户端 | |
CN107992309A (zh) | 软件安装方法、装置、系统、介质及电子设备 | |
US11023220B2 (en) | Firmware update with integrated smart sequence and action engine | |
CN108153537A (zh) | 移动应用更新方法及装置 | |
CN109032617A (zh) | 一种自动删除安装包的控制方法及控制装置 | |
CN107741854A (zh) | 一种电子设备的网卡驱动的安装方法及装置 | |
CN108182120B (zh) | 接口调用方法和系统、存储介质和计算机设备 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180504 |
|
RJ01 | Rejection of invention patent application after publication |