vagrant初識(一)
vagrant是部署虛擬開發環境的工具,他可以簡化虛擬機器配置,為我們搭建和配置輕量級可重用,可移植的開發環境。他能幫助開發人員迅速的構建一個開發環境,幫助測試人員構建測試環境。
vagrant支援VirtualBox,VMware,AWS等虛擬機器。
vagrant關鍵字
host——宿主機,安裝虛擬機器軟體和vagrant的系統
guest/vm——虛擬機器
安裝Vagrant
ubuntu下載安裝vagrant,官方下載地址:https://www.vagrantup.com/downloads.html
安裝虛擬機器管理軟體:virtualbox ; virtualbox官方下載地址:
vagrant的基本原理:
1.首先,讀取配置檔案,獲取需要的環境,網路配置。基礎軟體等資訊。
2.呼叫虛擬化軟體API(VMWare Fusion, Oracle VirtualBox, AWS,OpenStack等),根據使用者提供的配置檔案為使用者構建基礎環境。
3.呼叫使用者的配置指令碼(shell, puppet, chef) 安裝好相應的服務和軟體包;
Vagrant概念
- Provider
Provider指的是為Vagrant提供虛擬化支援的具體軟體,比如vmware或virtual box。
- Box
Box代表虛擬機器映象。Vagrant根據Porvider的不同提供了很多的基礎映象(通過url從s3上獲取),使用者可以根據自己的需求使用vagrant package製作屬於自己的box。
- Project
一個目錄和目錄中的Vagrantfile就組成了vagrant的一個專案,專案下可以有子專案,子專案中的Vagrantfile配置將繼承和重寫父專案的配置。專案的虛擬機器例項並不會儲存在這個目錄(儲存在~/.vagrant.d/box下),所以可以通過git等版本管理工具來管理專案。 - Vagrantfile
Vagrant的配置檔案,使用Ruby的語法描述。裡面定義了專案所使用的box,網路,共享目錄,provision指令碼等。當vagrant up命令執行時,將讀取當前目錄的Vagrantfile。 - Provisioning
Provisioning指的是虛擬機器例項啟動後,所需要完成的基礎配置工作,比如說安裝LAMP服務等。Vagrant支援使用shell,puppet,chef來完成provisioning工作。 - Plugin
Vagrant提供了外掛機制,可以很好的擴充套件對宿主機OS, GuestOS,Provider,Provisioner的支援,比如vagrant的aws和openstack支援都是通過plugin來實現的。
vagrant配置
下載box
box的第三方下載地址: http://www.vagrantbox.es/
box的安裝
建立vagrant開發環境
$ mkdir ~/vagrant
$ cd ~/vagrant
agrant提供的線上安裝,非常便利,但是無奈我國有非常NB的gfw,為了速度,就先FQ出去把box下載到本地,然後再進行安裝。
$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up
vagrant box add 是新增box的命令
其中{title}可以自行設定,我這裡使用的是 centos7 ,{url}是下載到本地box路徑。我的路徑是:/home/slang/downloads/centos-7.0-x86_64.box
安裝box
$ vagrant box add CentOs7 /home/slang/downloads/centos-7.0-x86_64.box
box的映象預設被存放到~/.vagrant.d/boxes/下,
# 如果是才add 的box,就必須執行本步驟,初始化一次後,以後啟動系統,就不需要執行本步驟。此步驟主要是建立Vagrantfile配置檔案。
$ vagrant init CentOs7
# 啟動系統
$ vagrant up
ssh遠端連線到虛擬機器
$ vagrant ssh
如果是官方的box,那麼使用者名稱和密碼預設都是vagrant
vagrant命令詳解
命令 | 作用 |
vagrant box add | 新增box的操作 |
vagrant init | 初始化box的操作,會生成vagrant的配置檔案Vagrantfile |
vagrant up | 啟動本地環境 |
vagrant ssh | 通過 ssh 登入本地環境所在虛擬機器 |
vagrant halt | 關閉本地環境 |
vagrant suspend | 暫停本地環境 |
vagrant resume | 恢復本地環境 |
vagrant reload | 修改了 Vagrantfile 後,使之生效(相當於先 halt,再 up) |
vagrant destroy | 徹底移除本地環境 |
vagrant box list | 顯示當前已經新增的box列表 |
vagrant box remove | 刪除相應的box |
vagrant package | 打包命令,可以把當前的執行的虛擬機器環境進行打包 |
vagrant plugin | 用於安裝解除安裝外掛 |
vagrant status | 獲取當前虛擬機器的狀態 |
vagrant global-status | 顯示當前使用者Vagrant的所有環境狀態 |