Vagrant是一款用於構建及組態虛擬開發環境的軟件,採用Ruby編寫,主要以命令列方式執行。

Vagrant
使用vagrant up命令啟動一個虛擬機器
使用vagrant up命令啟動一個虛擬機器
原作者Mitchell Hashimoto英語Mitchell Hashimoto[1]
開發者HashiCorp英語HashiCorp(Mitchell Hashimoto和John Bender)
首次發佈2010年3月8日,​14年前​(2010-03-08[2]
最終版本2.2.19(2021年11月5日,​3年前​(2021-11-05[3]
原始碼庫 編輯維基數據連結
程式語言Ruby
作業系統LinuxFreeBSDMacOSMicrosoft Windows
語言英語
類型組態管理
許可協定MIT許可證[4]
網站www.vagrantup.com 編輯維基數據

其主要使用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) (英語). 
  6. ^ Boxes - Docker Provider. Vagrant by HashiCorp. [2019-10-16]. (原始內容存檔於2019-09-26) (英語). 
  7. ^ Provisioning. Vagrant by HashiCorp. [2019-10-16]. (原始內容存檔於2020-01-16) (英語).