2021-05-12 14:32:11
開始使用Vagrant
Vagrant是一個基於Ruby的工具,用於建立和部署虛擬化開發環境。這篇文章主要是講解vagrant的使用。本文參考自vagrant官方文件
安裝vagrant
vagrant官網 : http://www.vagrantup.com
- 下載virtualbox和vagrant的安裝包
- 安裝virtualbox
- 安裝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
本文永久更新連結地址:http://www.linuxidc.com/Linux/2016-12/138934.htm
相關文章