vagrant 命令+配置+入門案例 - 快速創建 Centos7


20200410212445

Vagrant是一款用來構建虛擬開發環境的外掛工具,可以簡化虛擬機配置和管理。它底層支持VirtualBox、VMware、AWS等,非常適合使用php/python/ruby/java語言開發web應用,“代碼在我機子上運行沒有問題”這種說辭將成為歷史。

安裝VirtualBox

去官網 https://www.virtualbox.org/wiki/Downloads 下載最新版的Virtualbox,然后雙擊安裝,一直點擊確認完成。

安裝Vagrant

去官網 https://www.vagrantup.com/downloads.html 下載最新版的Vagrant,然后雙擊安裝,一直點擊確認完成。在windows下安裝vagrant,為了寫入相應配置到環境變量,系統可能會要求重新啟動。在命令行中,輸入vagrant,查看程序是不是已經運行了。如果不行,請檢查一下$PATH里面是否包含vagrant所在的路徑

准備box

接下來,我們需要選擇使用何種操作系統,這里以centos7.2為例。以前基於虛擬機的工作流,我們需要下載ISO鏡像,安裝系統,設置系統等操作。而Vagrant開源社區提供了許多已經打包好的操作系統,我們稱之為box。你可以從box下載地址(下文列出),找到你想要的box,當然你也可以自己制作一個。

官方倉庫:https://atlas.hashicorp.com/boxes/search

官方鏡像:https://vagrantcloud.com/boxes/search

第三方倉庫:http://www.vagrantbox.es/(國內)

使用案例

  • 安裝virtualbox,vagrant直接按照平常安裝軟件一樣即可。

  • 安裝好后,進入磁盤目錄,任意磁盤都行,創建一個管理目錄。這里以vagrant目錄為例。同時推薦終端工具不適用windows自帶的dos,這里推薦xshell工具。 

20200410214826

  • 我們添加一個虛擬機,vagrant box add 。我這里把鏡像文件放在wamp64下面的。

https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box

20200410214842

  • 添加完之后,我們在查看當前的虛擬機,即可看到我們方才添加的虛擬機 vagrant box list

20200410215029

  • 初始化虛擬機 vagrant init centos7。

20200410215214

  • 此時我們查看vagrant目錄下面就會多一個名為Vagrantfile的配置文件。

(這個配置文件主要后期我們在對虛擬做修改時,直接修改該文件。)

20200410215241

  • 開啟虛擬機 vagrant up

20200410215609
日志解釋

  • 這時候看 VirtualBox,就能發現多了一台虛擬機(並且在運行中)

20200410215657
所在目錄將生成.vagrant文件夾,如下:

命令詳解

虛擬機管理

命令 作用
vagrant box add [box_name] [box_path] 添加box的操作
vagrant init 初始化box的操作,會生成vagrant的配置文件Vagrantfile
vagrant up [vm_name] 啟動指定環境 (默認為本地)
0. (默認)在VirtualBox上啟動
1. 在vmware上:
vagrant up –provider=vmware_fusion [vm_name]
2. 在AWS上:
vagrant up –provider=aws [vm_name]
vagrant ssh [vm_name] 通過ssh登錄指定環境所在虛擬機(默認為本地)
通常情況下,vagrant在創建虛擬機的時候,內置了1個用戶:
username:vagrant
password:vagrant
vagrant halt [vm_name] 虛擬機關閉 (默認為本地)
vagrant suspend [vm_name] 虛擬機掛起 (默認為本地)
vagrant resume 恢復本地環境
vagrant reload [vm_name] 虛擬機重啟 (默認為本地)
修改了Vagrantfile后,使之生效(相當於先 halt,再 up)
vagrant destroy [vm_id] 徹底銷毀虛擬機 (默認銷毀本地)
虛擬機刪除后,所有在虛擬機中做的改動都不再存在,慎用。
vagrant box list 顯示當前已經添加的box列表
vagrant box remove [box_name] 刪除相應的box
vagrant package 打包命令,可以把當前的運行的虛擬機環境進行打包
vagrant plugin 用於安裝卸載插件
vagrant status 獲取當前虛擬機的狀態
vagrant global-status 顯示當前用戶Vagrant的所有環境狀態

快照管理

命令 作用
vagrant snapshot save your_snapshot_name 新建快照
vagrant snapshot list 查看快照
vagrant snapshot restore your_snapshot_name 恢復快照
vagrant snapshot delete your_snapshot_name 刪除快照

配置鏡像位置

配置VirtualBox的鏡像文件存放位置

vagrant和VirtualBox安裝完成后,默認存放虛擬機鏡像文件的位置在系統盤,建議存儲在其他磁盤下,具體步驟如下:

  1. 打開VirtualBox,打開管理-> 全局設置 (快捷鍵是 Ctrl-G )
  2. 選擇 常規 里的 默認虛擬電腦位置(M)
  3. 設置為非系統盤的位置

配置vagrant的鏡像存儲位置

vagrant對於虛擬機的管理分成兩個部分:box和Machine

  • box是指初始的未部署的虛擬機鏡像文件,這個文件相當於是虛擬機的一個模板,可以進行無限制次數的復制
  • Machine指處於可運行狀態下的虛擬機

當使用 vagrant 添加 box(vagrant add)時,對於windows用戶,vagrant會默認將這些虛擬機模板鏡像文件存放在 c:\User\.Vagrant.d 文件夾下,當使用vagrant添加的box文件較多時,這個目錄將會變得非常大,建議轉移到其他磁盤分區

20200413120252

具體步驟如下:

  • c:\User\.vagrant.d 目錄移動到新的位置
  • 設置VAGRANT_HOME 環境變量指向新的位置

windows用戶設置:


注:若在后續操作中發現設置未生效,嘗試重啟電腦讓新加入的環境變量生效。
或者查看是否配置成功
20200413120841

MAC用戶設置:

export VAGRANT_HOME='新位置路徑'

配置詳解

共享文件夾配置

vagrant提供了將本機目錄掛載到虛擬機目錄下的功能,默認是將vagrant配置文件所在目錄掛載到虛擬機/vagrant目錄下。

打開配置文件Vagrantfile,找到如下配置項:

config.vm.synced_folder

配置項如下:

config.vm.synced_folder   
   "your_folder"(必須)   //物理機目錄,可以是絕對地址或相對地址,相對地址是指相對與vagrant配置文件所在目錄
  ,"vm_folder(必須)"    // 掛載到虛擬機上的目錄地址
  ,create(boolean)--可選     //默認為false,若配置為true,掛載到虛擬機上的目錄若不存在則自動創建
  ,disabled(boolean):--可選   //默認為false,若為true,則禁用該項掛載
  ,owner(string):'www'--可選   //虛擬機系統下文件所有者(確保系統下有該用戶,否則會報錯),默認為vagrant
  ,group(string):'www'--可選   //虛擬機系統下文件所有組( (確保系統下有該用戶組,否則會報錯),默認為vagrant
  ,mount_options(array):["dmode=775","fmode=664"]--可選  dmode配置目錄權限,fmode配置文件權限  //默認權限777
  ,type(string):--可選     //指定文件共享方式,例如:'nfs',vagrant默認根據系統環境選擇最佳的文件共享方式

例子

  config.vm.synced_folder
        "D:/www/code"
        , "/code"
        , owner:"www"
        , group:"www"
        ,create:true
        ,mount_options:["dmode=775","fmode=664"]

  config.vm.synced_folder ".","/vagrant",disabled:true //禁用vagrant的默認共享目錄

網絡配置

vagrant提供了三種網絡配置方式:端口轉發(默認)、私有網絡、公有網絡,可以在 配置文件 Vagrantfile 進行網絡配置,推薦使用私有網絡

端口轉發(forwarded ports)

  1. 定義
    端口轉發指把宿主機的端口映射到虛擬機的某一個端口上,訪問宿主機端口時,請求實際是被轉發到虛擬機上指定端口的。
    注:宿主機指運行虛擬機的物理機。
  2. 優點
    容易實現外網訪問虛擬機
  3. 缺點
    如果端口較少需要映射很容易,但是端口比較多時,就比較麻煩,例如:MySQL,redis,nginx等服務。
    不支持在宿主機使用小於1024的端口來轉發,例如:不能使用SSL的443端口來進行https連接。
  4. 配置
    在配置文件Vagrantfile下做如下編輯
    Vagrant.configure("2") do |config|
      config.vm.network  
          "forwarded_port"(必須) //端口轉發標識
          , guest(必須): //虛擬機端口
          , host(必須): //宿主機端口,值必須大於1024
          ,guest_ip(可選): //虛擬機端口綁定虛擬機ip地址
          ,host_ip(可選): //虛擬機端口綁定宿主機ip
          ,protocol(可選)://指定通信協議,可以使用tcp/udp,默認tcp
          ,auto_correct(可選)://true/false,若配置為true,則每次開啟虛擬機的時候自動檢查是否存在端口沖突
    end
    
    注:若guest_ip和host_ip兩項配置為空,則局域網下的所有設備都可以訪問該虛擬機。
    示例配置,如下
    Vagrant.configure("2") do |config|
      config.vm.network "forwarded_port", guest: 80, host: 8080,
        auto_correct: true
    end
    

私有網絡(private networks)

  1. 定義
    私有網絡是指只有宿主機可以訪問虛擬機,如果多個虛擬機設定在同一個網段也可以互相訪問。
  2. 優點
    安全,只有自己可以訪問
  3. 缺點
    團隊成員不能訪問你的虛擬機
  4. 配置
    配置如下:
    config.vm.network 
                    "private_network"//必須 ,私有網絡標識
                    , ip: "192.168.33.10"
    
    注:私有ip可以自行指定

公有網絡(public networks)

  1. 定義
    公有網絡是指設置虛擬機和宿主機有相同的網絡配置。

  2. 優點
    方便團隊協作,別人可以訪問你的虛擬機

  3. 缺點
    只有在有網絡的情況下才能訪問虛擬機

  4. 配置

    Vagrant.configure("2") do |config|
      config.vm.network 
      "public_network" //必須 公有網絡標識
      ,ip(string):  //可選,配置靜態ip
      ,bridge(string/array): "en1: Wi-Fi (AirPort)"//可選,設置橋接的網卡
    end
    

Vagrant 中文文檔:http://tangbaoping.github.io/vagrant_doc_zh/v2/

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM