Vagrant快速入門教程

以前學習Docker的時候,發現了Vagrant,感受這也是一個挺方便的技術,可是我下載安裝完Vagrant的時候,發現剛好VirtualBox發了新版本,Vagrant還沒兼容,因此這篇文章一直拖到了如今。昨天正好Vagrant更新了版本,修復了這個問題,因此不說了,咱們直接開始吧。html

Vagrant是什麼

Vagrant是一門基於虛擬化技術的工具,能夠幫助咱們快速搭建開發環境,而且能夠在不一樣系統之間共享。可能你們看到了虛擬化技術就會想到Docker,可是Docker和Vagrant是不同的。Docker是半虛擬化的容器技術,主要做用是分發已經開發好的程序。而Vagrant則是基於虛擬機的,主要做用就是快速啓動一個虛擬機,而後自動將咱們的項目同步到虛擬機中運行,主要目標就是幫助咱們搭建開發環境。python

安裝Vagrant

Vagrant是基於虛擬機的,因此天然首先須要安裝虛擬機。Vagrant與VMware的集成組件是收費的,而VirtualBox和HyperV是免費的,因此通常咱們安裝VirtualBox就能夠了。git

安裝VirtualBox

安裝方法很簡單,到官網下載VirtualBox便可。shell

若是你使用Chocolatey的話,還能夠直接使用命令行安裝。bootstrap

choco install vagrant -y

安裝Vagrant

安裝好了VirtualBox,就能夠開始安裝Vagrant了。安裝方法很簡單,官網下載便可,可是下載速度可能比較慢,並且因爲Vagrant沒有國內鏡像站,因此安裝完以後下載虛擬機鏡像的時候也會很慢。所以最好確保有比較通暢的網絡代理。ubuntu

建立項目

安裝完vagrant以後,在系統的PATH變量中應該已經添加了vagrant命令。而後咱們就能夠建立項目了。因爲Ubuntu算是使用最普遍的系統了,因此建立項目的時候指定Ubuntu系統就能夠了,固然這裏也能夠指定其餘系統,CentOS、Fedora、Arch等系統也都是支持的。ruby

mkdir vagrant_sample
cd vagrant_sample
vagrant init ubuntu/bionic64

項目建立完成以後,應該會看到一個名爲Vagrantfile的配置文件,它指定了Vagrant的各項配置,包括使用的虛擬機位置、內存大小、磁盤大小、要使用的鏡像名稱、客戶機端口號等等。具體配置等到用到的時候咱們在看吧。bash

Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/bionic64"

若是在建立項目的時候沒有指定系統,也能夠在建立完項目以後用下面的命令來添加系統鏡像。在Vagrant中系統鏡像被稱做box。網絡

vagrant box add ubuntu/bionic64

若是想查找更多box,能夠在Vagrant Cloud在線查找box,須要的話也能夠尋找一些已經預裝了開發環境的定製box。app

image.png

啓動虛擬機

設置代理

第一次啓動Vagrant的話須要下載系統鏡像,默認下載速度比較慢。因此若是你有代理的話,最好設置一下,這樣能夠加快下載速度。若是你用的是cmd的話,就用下面的命令。

set http_proxy=127.0.0.1:1080
set https_proxy=127.0.0.1:1080

若是你用的是git bash的話,就用下面的命令。

export http_proxy=127.0.0.1:1080
export https_proxy=127.0.0.1:1080

若是運行鏡像內部的命令時也遇到了速度慢的問題,能夠安裝vagrant的代理插件並設置,它會自動設置虛擬機內部的代理。首先安裝插件:

vagrant plugin install vagrant-proxyconf

而後在Vagrant配置文件中添加下面的配置,固然代理要改爲你本身的。

Vagrant.configure("2") do |config|
    if Vagrant.has_plugin?("vagrant-proxyconf")
      config.proxy.http     = "http://localhost:10800"
      config.proxy.https    = "http://localhost:10800/"
      config.proxy.no_proxy = "localhost,127.0.0.1,.example.com"
    end
    # ... other stuff

管理虛擬機

主要有一下四個命令:

  • vagrant up,啓動虛擬機。
  • vagrant halt,正常關閉虛擬機。
  • vagrant suspend,掛起虛擬機。
  • vagrant destroy,刪除虛擬機。

咱們使用vagrant up就能夠啓動虛擬機了。

開發項目

自動同步

好了,如今就能夠開發項目了。直接按照習慣,在項目文件夾中開發項目便可。好比說,我簡單新建了一個Python文件:

#! /usr/bin/env python3

import platform
print(platform.platform())

而後就可使用vagrant ssh命令切換進入虛擬機環境了。Vagrant會自動將項目文件夾複製到虛擬機的/vagrant目錄中,因此咱們直接切換到該目錄下,而後就能夠執行腳本了。

運行腳本

在Vagrant能夠進行各類操做,就像在真的開發環境中同樣。咱們不用關心宿主機中是否安裝有必須軟件,反正只要box中安裝配置好就能夠了。這和Docker具備相似的優勢。

設置啓動腳本

開發項目的時候可能須要一些必要步驟,咱們能夠將它編寫成啓動腳本,這樣當Vagrant啓動虛擬機的時候,就會自動執行這個腳本,完成配置工做。有了啓動腳本,咱們的開發環境就是可移植的了,不論是誰只要有了項目,就能夠一鍵搭建出開發環境了。

設置啓動腳本很簡單,首先建立一個shell腳本文件,例如bootstrap.sh,而後在其中編寫開發環境須要的命令,例如用apt安裝某些軟件,用git克隆一些項目等等。

腳本編寫完以後,須要在Vagrant配置文件中添加好腳本的配置項。

Vagrant.configure("2") do |config|
  # 如下這一行是重點
  config.vm.provision :shell, path: "bootstrap.sh"
end

這樣,之後運行vagrant up命令的時候,就會自動調用bootstrap.sh腳本, 完成環境的配置工做。

我以爲Vagrant是一個很是方便的工具,假如團隊中開發環境的配置比較麻煩,能夠考慮利用Vagrant,它能夠很方便的爲各個成員設置相同的開發環境。假如說你須要在Windows環境下開發Linux軟件,也能夠利用Vagrant輕鬆搭建Linux開發環境,並在本地和虛擬機之間同步文件。

相關文章
相關標籤/搜索