Vagrant

維基百科,自由的百科全書
跳至導覽 跳至搜尋
Vagrant
Vagrant.png
Vagrantup.jpg
Vagrant starting a virtual machine using vagrant up
原作者 Mitchell Hashimoto[1]
開發者 HashiCorp英語HashiCorp (Mitchell Hashimoto and John Bender)
初始版本 2010年3月8日,​10年前​(2010-03-08[2]
穩定版本
2.0.2
(January 29, 2018)
原始碼庫 編輯維基數據鏈接
程式語言 Ruby
作業系統 Linux, FreeBSD, macOS, and Microsoft Windows
語言 English
類型 Configuration management
許可協議 MIT License[3]
網站 www.vagrantup.com

Vagrant是一款用於構建及配置虛擬開發環境的軟體,基於Ruby,主要以命令行的方式運行。

主要使用Oracle的開源VirtualBox虛擬化系統,與Chef,Salt,Puppet等環境配置管理軟體搭配使用, 可以實行快速虛擬開發環境的構建。

早期以VirtualBox為對象,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以插件形式提供支持[4]

當使用VirtualBox等Provider,需要使用Boxes才能創建虛擬環境。當使用Docker作為Provider時,則不需要Boxes。[5]

虛擬環境被創建後,開發者可以使用Provisioners自動化地自定義該虛擬環境。在Vagrant ecosystem 中(Ansible在2014已經可用了),Puppet和Chef是最常用的 Provisioners[6]

參考資料[編輯]

  1. ^ Marvin, Rob. Mitchell Hashimoto is automating the world. Software Development Times. Software Development Times. [27 June 2016]. 
  2. ^ mitchellh/vagrant: Release v0.1.0. GitHub. [6 September 2015]. 
  3. ^ Vagrant's LICENSE
  4. ^ Providers. Vagrant by HashiCorp. [2019-10-16] (英語). 
  5. ^ Boxes - Docker Provider. Vagrant by HashiCorp. [2019-10-16] (英語). 
  6. ^ Provisioning. Vagrant by HashiCorp. [2019-10-16] (英語).