当前位置:云计算企业动态 → 正文

将虚拟化搬到云上:Vagrant在AWS上的实践

责任编辑:editor006 作者:张天雷 |来源:企业网D1Net  2015-05-07 17:06:25 本文摘自:INFOQ

在研发、调试以及多团队合作过程中,开发人员难免会用到虚拟化技术来帮其构建易于复制和重建的环境。需求的牵引使得Vagrant、VirtualBox以及VMWare Workstation等虚拟化相关的产品相继诞生。这些产品很好的满足了企业和个人的需求,实现了安全性、便捷性等方面的功能。而另外一方面,虚拟化技术发展的也带动了云计算的崛起。因其高效、便捷和经济的特性,很多公司纷纷开始使用云平台作为其主要的计算环境。Docker 等应用容器引擎的出现,更是为开发者提供一个可移植的容器,方便了应用程序的开发和部署。事实上,云计算已经带来了企业在线业务模式的变革。

但是,在诸多好处的同时,目前的基础架构即服务 (IaaS) 云模型也存在问题。它要求软件开发者必须使用虚拟机管理应用程序。对虚拟机映像的要求限制了云使用者的选择,甚至对某些人而言,还成为了本地环境转移到云平台的一大障碍。为了试图解决该问题,嵌套虚拟化的概念被提出。

所谓嵌套虚拟化就是在虚拟机里再运行虚拟机。对云用户来说,嵌套虚拟化就意味着虚拟机的格式可以与云平台无关。如果能够支持嵌套虚拟化,云平台就可以演变成了高度灵活的虚拟化基础架构,为用户提供更多自由使用的空间。那么,究竟有没有可能在现有框架下,实现类似嵌套虚拟化的功能呢?

针对该问题,GigaSpaces的Michael Sverdlik提供了一种解决方案。本文接下来以云应用的编排系统Cloudify和最流行的云平台AWS作为例子,详细介绍他如何一步一步的创建v2v(虚拟到虚拟)机器,及如何创建可以上传到任何AWS环境的VMDK磁盘镜像。

首先,用户需要利用基于Ruby的Vagrant工具。该工具主要用于创建和部署虚拟化开发环境,其以VirtualBox、VMware或者AWS等虚拟机为底层,以上层Chef等工具来完成自动化安装和配置软件的工作。利用该工具,用户生成一个Vagrantfile和一个已经在VirtualBox镜像上预装Cloudify Manager的Vagrant box。然后,利用Vagrant和VirtualBox就可以在本地对Cloudify进行测试和评估。其过程可以简单概括为:下载Vagrantfile、把vagrant运行起来和利用Packer来创建Vagrant Box三个部分。作为与Vagrant出自相同作者的Packer,创建镜像只需要根据教程输入命令即可。

接下来,再仔细审视一次有没有可能不使用嵌套虚拟化而解决相应的需求。可能的解决方案包括:直接利用本地物理机器、利用专门的方法来允许嵌套虚拟化但是,这两种方案显然需要额外的花费以及精力。还有一种方法就是,直接把虚拟机磁盘镜像转换为VMDK进行使用。关于如何实现物理到虚拟以及虚拟到物理的方法,之前都已经有人实现过。但是,虚拟到虚拟(V2V)究竟能不能实现呢?文章接下来就开始尝试。

所需要的工具和环境包括作为脚本语言的Python、与AWS结合的Boto API、作为任务执行器的Fabric、Packer以及IaaS提供商AWS。具体的实现步骤为:

在利用packer预装的cloudify上创建一个源镜像(AMI)在AWS中利用快照或者源镜像作为一个磁盘来启动一个工作实例在工作镜像上,创建一个raw镜像卷作为一个文件,然后在其上创建一个ext4分区把数据从源镜像磁盘中复制到之前创建的ext4分区中在ext4分区上安装bootloader把raw镜像转变为VMDK把VMDK和一个OVF描述符和vagrant元数据一起创建一个.box的压缩包上传到S3清除

最后的结果如何,读者可以根据Github中提供的脚本进行亲自测试。

关键字:云模型AWSGitHub

本文摘自:INFOQ

x 将虚拟化搬到云上:Vagrant在AWS上的实践 扫一扫
分享本文到朋友圈
当前位置:云计算企业动态 → 正文

将虚拟化搬到云上:Vagrant在AWS上的实践

责任编辑:editor006 作者:张天雷 |来源:企业网D1Net  2015-05-07 17:06:25 本文摘自:INFOQ

在研发、调试以及多团队合作过程中,开发人员难免会用到虚拟化技术来帮其构建易于复制和重建的环境。需求的牵引使得Vagrant、VirtualBox以及VMWare Workstation等虚拟化相关的产品相继诞生。这些产品很好的满足了企业和个人的需求,实现了安全性、便捷性等方面的功能。而另外一方面,虚拟化技术发展的也带动了云计算的崛起。因其高效、便捷和经济的特性,很多公司纷纷开始使用云平台作为其主要的计算环境。Docker 等应用容器引擎的出现,更是为开发者提供一个可移植的容器,方便了应用程序的开发和部署。事实上,云计算已经带来了企业在线业务模式的变革。

但是,在诸多好处的同时,目前的基础架构即服务 (IaaS) 云模型也存在问题。它要求软件开发者必须使用虚拟机管理应用程序。对虚拟机映像的要求限制了云使用者的选择,甚至对某些人而言,还成为了本地环境转移到云平台的一大障碍。为了试图解决该问题,嵌套虚拟化的概念被提出。

所谓嵌套虚拟化就是在虚拟机里再运行虚拟机。对云用户来说,嵌套虚拟化就意味着虚拟机的格式可以与云平台无关。如果能够支持嵌套虚拟化,云平台就可以演变成了高度灵活的虚拟化基础架构,为用户提供更多自由使用的空间。那么,究竟有没有可能在现有框架下,实现类似嵌套虚拟化的功能呢?

针对该问题,GigaSpaces的Michael Sverdlik提供了一种解决方案。本文接下来以云应用的编排系统Cloudify和最流行的云平台AWS作为例子,详细介绍他如何一步一步的创建v2v(虚拟到虚拟)机器,及如何创建可以上传到任何AWS环境的VMDK磁盘镜像。

首先,用户需要利用基于Ruby的Vagrant工具。该工具主要用于创建和部署虚拟化开发环境,其以VirtualBox、VMware或者AWS等虚拟机为底层,以上层Chef等工具来完成自动化安装和配置软件的工作。利用该工具,用户生成一个Vagrantfile和一个已经在VirtualBox镜像上预装Cloudify Manager的Vagrant box。然后,利用Vagrant和VirtualBox就可以在本地对Cloudify进行测试和评估。其过程可以简单概括为:下载Vagrantfile、把vagrant运行起来和利用Packer来创建Vagrant Box三个部分。作为与Vagrant出自相同作者的Packer,创建镜像只需要根据教程输入命令即可。

接下来,再仔细审视一次有没有可能不使用嵌套虚拟化而解决相应的需求。可能的解决方案包括:直接利用本地物理机器、利用专门的方法来允许嵌套虚拟化但是,这两种方案显然需要额外的花费以及精力。还有一种方法就是,直接把虚拟机磁盘镜像转换为VMDK进行使用。关于如何实现物理到虚拟以及虚拟到物理的方法,之前都已经有人实现过。但是,虚拟到虚拟(V2V)究竟能不能实现呢?文章接下来就开始尝试。

所需要的工具和环境包括作为脚本语言的Python、与AWS结合的Boto API、作为任务执行器的Fabric、Packer以及IaaS提供商AWS。具体的实现步骤为:

在利用packer预装的cloudify上创建一个源镜像(AMI)在AWS中利用快照或者源镜像作为一个磁盘来启动一个工作实例在工作镜像上,创建一个raw镜像卷作为一个文件,然后在其上创建一个ext4分区把数据从源镜像磁盘中复制到之前创建的ext4分区中在ext4分区上安装bootloader把raw镜像转变为VMDK把VMDK和一个OVF描述符和vagrant元数据一起创建一个.box的压缩包上传到S3清除

最后的结果如何,读者可以根据Github中提供的脚本进行亲自测试。

关键字:云模型AWSGitHub

本文摘自:INFOQ

电子周刊
回到顶部

关于我们联系我们版权声明隐私条款广告服务友情链接投稿中心招贤纳士

企业网版权所有 ©2010-2024 京ICP备09108050号-6 京公网安备 11010502049343号

^