本发明涉及云计算技术领域,具体提供一种自动化构建虚机镜像的方法。
背景技术:
近年来云计算技术发展迅速,越来越多的企业、团体及个人选择将自己的服务或应用部署到云平台上。虚拟化技术作为云计算核心技术之一,为云计算的发展做出了强有力的支撑。云平台中的虚拟机节点通常使用虚拟机镜像文件进行实例化。针对不同功能的虚机节点,往往需要对虚机镜像进行一系列修改。
在使用图形界面手动构建虚拟机镜像主要包含以下过程:
1)下载需要的操作系统iso文件;
2)使用iso文件创建虚拟机,并在虚拟机中根据需要进行创建用户,安装软件等操作;
3)保存修改后的虚机镜像文件;
4)上传虚机镜像文件到镜像仓库。
在得到需要的虚机镜像文件后,开发人员往往还需要对镜像文件进行版本管理,整个操作过程十分耗费时间和经历。
技术实现要素:
本发明是针对上述现有技术的不足,提供一种实用性强的自动化构建虚机镜像的方法。
本发明解决其技术问题所采用的技术方案是:
一种自动化构建虚机镜像的方法,分为以下步骤,
s01、用户提交packer虚机镜像定义模板到gitlab仓库,
s02、触发jenkins构建镜像流程,根据需要设置手动触发或提交代码触发;
s03、jenkins使用packer按照模板构建虚机镜像,
s04、jenkins推送制作好的镜像到镜像仓库。
进一步的,在gitlab仓库中,创建一个代码仓库作为packer的模板仓库,按照镜像制作需要编写的packer模板,并提交代码到镜像仓库。
进一步的,在jenkins配置中,首先创建一个新的jenkinspipeline,设置源码拉取url为虚机镜像gitlab项目地址,设置拉取分支为所需代码分支;
然后,设置触发方式为提交代码触发,如不设置触发方式则取默认方式手动触发,提供虚机源镜像地址以及镜像仓库地址,编写构建脚本命令;
最后,若构建出现问题,开发人员可在jenkins构建的控制台输出查看日志,进行debug。
进一步的,在packer进行配置时,首先,使用packer的json模板定义所需的虚机镜像,然后,在模板的builders模块中设置ssh连接,同时设置暴露vnc端口以及输出镜像的相关信息,或在此模块中设置系统的启动命令,最后,在模板的provisioners模块中定义虚机镜像启动后需要安装的软件、需要下载的包以及需要创建的用户。
进一步的,所述的packer模板为json格式,主要分为两部:builers部分和provisioners部分。
进一步的,所述的builers部分为创建虚机主要配置,负载创建虚机并生成镜像,并含有以下标签:
type:虚机种类,常用的有qemu、vmware-iso或virtualbox-iso,
iso_url:iso格式源镜像加载地址,
iso_checksum_type:iso格式源镜像校验码校验种类,
iso_checksum:iso格式源镜像校验码,
output_directory:镜像输出文件夹,
shutdown_command:镜像关机命令,
disk_size:硬盘大小,若未指定单位,则默认值为兆字节,
format:输出镜像格式,
accelerator:加速器类型,
http_directory:使用http服务器提供服务的目录的路径,
ssh_port:ssh连接端口,
ssh_username:ssh用户名,
ssh_password:ssh密码,
ssh_wait_timeout:ssh等待超时时间,
vm_name:虚机名称,
net_device:网络设备接口的驱动程序,
disk_interface:磁盘接口,
vnc_bind_address:vnc绑定地址,
qemuargs:qemu配置参数,
boot_wait:启动虚机之后键入boot_command的等待时间,
boot_command:虚机启动后需要键入的命令。
作为优选,所述builers部分支持vmware、virtualbox或qemu平台。
进一步的,provisioners部分主要用于虚机启动后镜像的定制化操作,主要用到的provisioners类型为shell和file,用type标签指定类型。
进一步的,shell类型的provisioner为开机后要执行的脚本程序,用户可以用这些脚本下载程序,创建用户。
进一步的,file类型的provisioenr为开机后要上传的文件。常用的方式为上传用户自己打包的程序安装包,之后用shell类型provisioner安装程序。
本发明的自动化构建虚机镜像的方法和现有技术相比,具有以下突出的有益效果:
通过使用本发明,可以实现虚拟镜像的自动化构建,并实现了镜像的版本管理和自动化发布。开发人员只需要操作packer模板文件,简化了操作流程,节省了时间和人力成本,极大的提高了工作效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
附图1是一种自动化构建虚机镜像的方法的流程图;
附图2是本发明中jenkins配置样例图。
具体实施方式
为了使本技术领域的人员更好的理解本发明的方案,下面结合具体的实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例都属于本发明保护的范围。
下面给出一个最佳实施例:
如图1、2所示,本实施例中的自动化构建虚机镜像的方法,分为以下步骤,
s01、用户提交packer虚机镜像定义模板到gitlab仓库,
s02、触发jenkins构建镜像流程,根据需要设置手动触发或提交代码触发。
s03、jenkins使用packer按照模板构建虚机镜像,
s04、jenkins推送制作好的镜像到镜像仓库。
其中,在gitlab仓库中,创建一个代码仓库作为packer的模板仓库,按照镜像制作需要编写的packer模板,并提交代码到镜像仓库。
在jenkins配置中,首先创建一个新的jenkinspipeline,设置源码拉取url为虚机镜像gitlab项目地址,设置拉取分支为所需代码分支;
然后,设置触发方式为提交代码触发,如不设置触发方式则取默认方式手动触发,提供虚机源镜像地址以及镜像仓库地址,编写构建脚本命令;
最后,若构建出现问题,开发人员可在jenkins构建的控制台输出查看日志,进行debug。
在packer进行配置时,首先,使用packer的json模板定义所需的虚机镜像,然后,在模板的builders模块中设置ssh连接,同时设置暴露vnc端口以及输出镜像的相关信息,或在此模块中设置系统的启动命令,最后,在模板的provisioners模块中定义虚机镜像启动后需要安装的软件、需要下载的包以及需要创建的用户。
packer模板为json格式,主要分为两部:builers部分和provisioners部分。
builders部分为创建虚机主要配置,负责创建虚机并生成镜像。其支持多种平台,如vmware,virtualbox和qemu。这部分主要包括以下标签:
1.type:虚机种类,常用的有qemu,vmware-iso,virtualbox-iso
2.iso_url:iso格式源镜像加载地址
3.iso_checksum_type:iso格式源镜像校验码校验种类
4.iso_checksum:iso格式源镜像校验码
5.output_directory:镜像输出文件夹
6.shutdown_command:镜像关机命令
7.disk_size:硬盘大小,若未指定单位,则默认值为兆字节
8.format:输出镜像格式
9.accelerator:加速器类型
10.http_directory:使用http服务器提供服务的目录的路径
11.ssh_port:ssh连接端口
12.ssh_username:ssh用户名
13.ssh_password:ssh密码
14.ssh_wait_timeout:ssh等待超时时间
15.vm_name:虚机名称
16.net_device:网络设备接口的驱动程序
17.disk_interface:磁盘接口
18.vnc_bind_address:vnc绑定地址
19.qemuargs:qemu配置参数
20.boot_wait:启动虚机之后键入boot_command的等待时间
21.boot_command:虚机启动后需要键入的命令
provisioners部分主要用于虚机启动后镜像的定制化操作,如安装第三方软件,配置虚机创建用户等。主要用到的provisioners类型为shell和file,用type标签指定类型。
shell类型的provisioner为开机后要执行的脚本程序,用户可以用这些脚本下载程序,创建用户等。
file类型的provisioenr为开机后要上传的文件。常用的方式为上传用户自己打包的程序安装包,之后用shell类型provisioner安装程序。
代码为:
上述具体的实施方式仅是本发明具体的个案,本发明的专利保护范围包括但不限于上述具体的实施方式,任何符合本发明的一种自动化构建虚机镜像的方法权利要求书的且任何所述技术领域普通技术人员对其做出的适当变化或者替换,皆应落入本发明的专利保护范围。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。