Vagrant

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Vagrant
File:Vagrant.png
使用vagrant up命令启动一个虚拟机
使用vagrant up命令启动一个虚拟机
原作者Mitchell Hashimoto英语Mitchell Hashimoto[1]
開發者HashiCorp英语HashiCorp(Mitchell Hashimoto和John Bender)
首次发布2010年3月8日,​16年前​(2010-03-08[2]
最终版本2.2.19(2021年11月5日,​4年前​(2021-11-05[3]
源代码库
  • {{URL|example.com|可选的显示文本}}
Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
编程语言Ruby
引擎
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    操作系统LinuxFreeBSDMacOSMicrosoft Windows
    语言英语
    类型配置管理
    许可协议MIT許可證[4]

    Vagrant是一款用于构建及配置虚拟开发环境的软件,采用Ruby编写,主要以命令行方式运行。

    其主要使用Oracle VirtualBox提供虚拟化系统,与Chef,Salt,Puppet等环境配置管理软件搭配使用,可以实现快速搭建虚拟开发环境。

    该软件在1.1以后的版本中开始适配VMware等虚拟化软件,包括Amazon EC2等服务器虚拟化环境。

    历史[编辑]

    2010年1月,Vagrant 只是作为Mitchell Hashimoto的业余兴趣而启动的项目。同年3月,Vagrant的第一版本发布了。同年10月,Engine Yard宣布它们将赞助该项目。在原始版本的整整两年后——2012年3月, Vagrant 1.0(首个稳定版本)发布了。同年12月份,Mitchell成立了名为HashiCorp并全职开发Vagrant,但Vagrant仍保留自由软件。HashiCorp现今为Vagrant提供商业插件,并提供专业支持和训练。

    初始Vagrant与VirtualBox绑定,但在版本1.1时开始支持其他虚拟化软件,如:VMware基于内核的虚拟机(KVM)以及作为虚拟专用服务器(如:Amazon EC2)。Vagrant是用Ruby开发的。自版本1.6之后,Vagrant开始支持Docker容器,在一些例子,docker容器可以代替完整的虚拟系统。

    架构[编辑]

    Vagrant使用"Provisioners"和"Providers" 作为开发环境的构建模块。

    |--vagrant
    |--Providers        如:VirtualBox、Hyper-V、Docker、VMware、AWS
    |--Boxex            如:Centos7。与镜像类似
    |--Provisioners     如:'yum intall -y python' 等自定义自动化脚本

    Vagrant作为最外层的虚拟软件,目的是帮助开发者更容易地与Providers互動。Vagrantfile记录Providers和Provisioners的相关信息。

    Providers作为服务,帮助vagrant使用Boxes建立和创建虚拟环境。Vagrant提供的内嵌的Provider有 VirtualBox、Hyper-V、Docker、VMware,而AWS以插件形式提供支持[5]

    当使用VirtualBox等Provider,需要使用Boxes才能创建虚拟环境。当使用Docker作为Provider时,则不需要Boxes。[6]

    虚拟环境被创建后,开发者可以使用Provisioners自动化地自定义该虚拟环境。在Vagrant ecosystem 中(Ansible在2014已经可用了),Puppet和Chef是最常用的 Provisioners[7]

    参考资料[编辑]

    1. ^ Marvin, Rob. Mitchell Hashimoto is automating the world. Software Development Times. Software Development Times. 2015-02-26 [2016-06-27]. (原始内容存档于2017-10-10). 
    2. ^ mitchellh/vagrant: Release v0.1.0. GitHub. [2015-09-06]. 
    3. ^ Releases · hashicorp/vagrant · GitHub. [2022-01-05]. (原始内容存档于2022-01-05). 
    4. ^ hashicorp/vagrant. GitHub. [2022-05-13]. (原始内容存档于2022-04-29). 
    5. ^ Providers. Vagrant by HashiCorp. [2019-10-16]. (原始内容存档于2019-10-16) (English). 
    6. ^ Boxes - Docker Provider. Vagrant by HashiCorp. [2019-10-16]. (原始内容存档于2019-09-26) (English). 
    7. ^ Provisioning. Vagrant by HashiCorp. [2019-10-16]. (原始内容存档于2020-01-16) (English).