歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 開始使用Vagrant

開始使用Vagrant

日期:2017/2/28 13:45:19   编辑:Linux教程

Vagrant是一個基於Ruby的工具,用於創建和部署虛擬化開發環境。這篇文章主要是講解vagrant的使用。本文參考自vagrant官方文檔

安裝vagrant

vagrant官網 : http://www.vagrantup.com

  1. 下載virtualbox和vagrant的安裝包
  2. 安裝virtualbox
  3. 安裝vagrant (path路徑的添加一般是自動完成的)

配置一個vagrant項目

配置vagrant項目的第一步是創建一個VagrantFile.
在你的命令行中創建一個項目目錄,並且使用: vagrant init 初始化一個VagrantFile.

$ mkdir vagrant_dir
$ cd vagrant_dir
$ vagrant init

這個操作會在vagrant項目目錄下創建一個VagrantFile文件


Boxes

vagrant使用一個基礎的鏡像來快速克隆一個虛擬機。這些基礎鏡像在vagrant中叫做 boxes。在創建好一個VagrantFile後需要規定在當前Vagrant環境中使用的box. boxes的添加可以通過 vagrant box add 命令來實現

$ vagrant box add hashicorp/precise64

這個操作會自動從網絡中下載一個名為hashicorp/precise64的box並添加到當前的vagrant環境中。這兒最好還是先從網絡上下載下來相應的box,然後在本地對box進行添加。(自動下載的速度慢)
這兒其實可以看到boxes是由類似於 username/boxName 的方式命名的
在這個網站可以找到很多boxes : https://atlas.hashicorp.com/boxes/search

在本地添加box的方法:(vagrant box add <name> <url>)
把box文件(例如文件名為: precise64.box)下載後放到當前vagrant項目目錄下,然後添加一個名為dev的box到環境中
$vagrant box add dev precise64.box
顯示類似如下信息表示添加成功:
 Successfully added box 'dev' (v0) for 'virtualbox'!

啟動和使用SSH登錄

在命令行中鍵入

$ vagrant up

即可以啟動當前vagrant環境,這樣就可以運行box的虛擬機環境。然後可以使用命令

$ vagrant ssh

來使用ssh登錄到vagrant的box虛擬機環境中進行操作,(一般是 127.0.0.1 : 2222 用戶名密碼都是vagrant)。

注:這兒使用命令vagrant ssh 是啟用默認的ssh客戶端,如果沒有,可以自己選擇一個ssh客戶端進行登錄。我使用的是putty


同步文件夾

默認情況下,vagrant會共享你當前的vagrant項目目錄到你客戶機的 /vagrant 文件夾下。我們可以用ssh登錄到客戶機進行查看

$ vagrant up
...
$vagrant ssh
...
vagrant@precise64~$ ls /vagrant
VagrantFile

很簡單的實現了虛擬機與主機之間的文件夾同步

在VagrantFile文件中我們可以查找到這一行
#config.vm.synced_folder
我們可以配置這個參數改變虛擬機和主機同步的文件夾( 先去掉前面的 # 號, 第一個參數使主機的目錄,第二個參數是虛擬機的目錄)
例如:
config.vm.synced_folder “d:\” “/vagrant_data”


預配置

創建好一個虛擬機環境後,我們可以通過ssh進入虛擬機安裝webserver。但vagrant提供了一種自動配置的功能,會在你使用 vagrant up 的時候自動安裝。
我們拿安裝apache為例
在VagrantFile所在文件夾下創建一個 bootstrap.sh 文件,內容如下:

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -fs /vagrant /var/www
fi

然後打開VagrantFile文件進行配置config.vm.provision

config.vm.provision :shell, path: “bootstrap.sh”

最後通過 vagrant up 啟動。如果已經啟動,則可以使用 vagrant reload --provision 重新啟動並安裝好apache
登錄ssh,通過 下面命令可以查看效果

$ vagrant ssh
...
vagrant@precise64:~$ wget -qO- 127.0.0.1

這個功能的用法就看大家的創造力了

注: 這兒的腳本只是在第一次使用 vagrant up的時候生效


網絡

vagrant的網絡配置有3種方式, 這3中網絡模式實際上在VagrantFile文件中都有詳細的注釋說明的,我這兒也簡單說一下。

端口轉發(port forwarding)

端口轉發允許你指定一個客戶機的端口分享到主機的一個端口,這允許你在自己的主機上訪問一個端口,但所有的網絡流量都是轉發到特定的客戶機端口上
打開VagrantFile文件,添加如下配置項

config.vm.network :forwarded_port, guest: 80, host: 4567

再通過vagrant up 啟動或者是vagrant reload 重啟。然後在你自己的浏覽器中載入 http://127.0.0.1:4567 ,你將看到vagrant虛擬機中的apache服務器提供的頁面

主機模式 (私有網絡)

這個模式將使得客戶機提供一個IP 地址,主機可以通過這個IP訪問客戶機網絡,配置VagrantFile文件中的如下內容:

config.vm.network “private_network”, ip: “192.168.33.10”

公有網絡

config.vm.network “public_network”


共享

Vagrant共享使得你可以通過因特網連接共享你的vagrant環境給世界上任何人。
在此之前需要現在 https://atlas.hashicorp.com 注冊一個賬號,然後通過 vagrant login 命令登錄賬號,然後就可以使用 vagrant share 就可以共享環境了。這兒我們先不做重點討論


回收

掛起

通過 vagrant suspend 將會保存當前客戶機的狀態並且停止運行。當再次使用 vagrant up 的時候客戶機又將恢復之前停止時的狀態繼續運行

停止

vagrant halt 將會關閉客戶機系統並且斷開客戶機的電源。vagrant up 又將啟動

銷毀

vagrant destroy 將會從你的系統中移除客戶機的所有使用痕跡,停止客戶機,斷開電源,並且清空客戶機的磁盤。 同樣通過 vagrant up 啟動


支持平台

除了我們使用的VirtualBox,Vagrant與很多後端支持平台協同工作,例如: VMware 和AWS 等
在這些平台上使用時,當平台安裝完成,只需要在vagrant環境啟動的時候采用合適的參數表明其使用的平台便可以。
例如:
在vmware上:

$vagrant up –provider=vmware_fusion

在AWS上

$ vagrant up –provider=aws

結語

好了,今天寫得也很多了,常規的vagrant的使用都講了,其實很多工具都是這樣,按照80/20定律,核心的就那麼20% 。這20%掌握了其實就可以基本的使用了,本文的意義便在於此,讓大家對vagrant的使用有個基礎的了解。

如何使用vagrant在虛擬機安裝Hadoop集群 http://www.linuxidc.com/Linux/2013-04/82750.htm

Vagrant 中高效的 Puppet 模塊管理 http://www.linuxidc.com/Linux/2014-05/101873.htm

利用Vagrant搭建多平台環境 http://www.linuxidc.com/Linux/2015-09/123518.htm

使用 Vagrant 和 Fabric 用於集成測試 http://www.linuxidc.com/Linux/2014-07/104113.htm

使用 Vagrant 搭建開發環境 http://www.linuxidc.com/Linux/2014-07/104116.htm

Windows 下配置 Vagrant 環境 http://www.linuxidc.com/Linux/2014-07/104115.htm

使用 Vagrant 搭建開發環境 http://www.linuxidc.com/Linux/2014-07/104116.htm

通過 Vagrant 搭建虛擬機環境 http://www.linuxidc.com/Linux/2015-08/121985.htm

使用Vagrant和Virtualbox創建虛擬機 http://www.linuxidc.com/Linux/2016-08/134435.htm

Ubuntu下使用Vagrant搭建虛擬開發環境 http://www.linuxidc.com/Linux/2016-12/138113.htm

Copyright © Linux教程網 All Rights Reserved