vagrant系列(1):使用vagrant線上/離線安裝centos7
Vagrant是一款用來構建虛擬開發環境的外掛工具,可以簡化虛擬機器配置和管理。它底層支援VirtualBox、VMware、AWS等,非常適合使用php/python/ruby/java語言開發web應用,“程式碼在我機子上執行沒有問題”這種說辭將成為歷史。
1. 安裝VirtualBox
2. 安裝Vagrant
去官網 https://www.vagrantup.com/downloads.html下載最新版的Vagrant,然後雙擊安裝,一直點選確認完成。在windows下安裝vagrant,為了寫入相應配置到環境變數,系統可能會要求重新啟動。在命令列中,輸入vagrant
,檢視程式是不是已經運行了。如果不行,請檢查一下$PATH裡面是否包含vagrant所在的路徑
3. 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的所有環境狀態 |
4. 使用Vagrant安裝配置虛擬機器
4.1 box是什麼?
接下來,我們需要選擇使用何種作業系統,這裡以centos7.2為例。以前基於虛擬機器的工作流,我們需要下載ISO映象,安裝系統,設定系統等操作。而Vagrant開源社群提供了許多已經打包好的作業系統,我們稱之為box。你可以從box下載地址(下文列出),找到你想要的box,當然你也可以自己製作一個。
4.2 如何安裝一個box?
我們需要建立自己的開發環境目錄:
$ mkdir -p /Users/jackyue/data/vagrant/centos7
$ cd /Users/jackyue/data/vagrant/centos7
以下是匯入安裝說明:
$ vagrant box add {title} {url}
$ vagrant init {title}
$ vagrant up
vagrant box add
是新增box的命令,{title}是以後建立虛擬機器的別名,{url}是下載到本地box的路徑,也可以是伺服器端的URL。
說明:將box映象新增到本地倉庫,有三種方式:
- 使用http絕對地址
vagrant box add precises64 http://files.vagrantup.com/precise64.box
- 使用本地檔案(從協議來說,和上面一樣,相當於file:///協議的地址)
vagrant box add precises64 ./precise64.box
- 使用倉庫名稱
vagrant box add precises64 ubuntu/precise64
這種方式,vagrant會自動在中央倉庫查詢映象,並下載到本地映象庫中。
vagrant box add ubuntu/precise64
省略本地映象名稱,則直接用中央倉庫中的映象名作為本地映象名,這樣做的好處是可以跟倉庫中的映象對應。
4. 3 安裝centos7 box
$ cd /Users/jackyue/data/vagrant/centos7 //找到一個目錄,作為初始化目錄
$ vagrant box add centos7 /Users/jackyue/data/vagrant/centos/centos-7.0-x86_64.box //建議採取離線安裝,這樣有利於放置虛擬機器檔案到指定路徑
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'centos7' (v0) for provider:
box: Unpacking necessary files from: file:///Users/jackyue/data/vagrant/vagrant-centos-7.2.box
==> box: Successfully added box 'centos7' (v0) for 'virtualbox'!
box中的映象檔案被放到了/Users/jackyue/data/vagrant/.vagrant/machines/之下
4.4初始化映象
$ vagrant init centos7
//如果是新新增的box,必須執行本步驟,初始化一次之後,就不需要再執行本步驟
A `Vagrantfile` has been placed in this directory.
You are now ready to `vagrant up` your first virtual environment!
Please read the comments in the Vagrantfile as well as documentation on `vagrantup.com` for more information on using Vagrant.
初始化成功後,vagrant會在當前的初始化目錄生成一個Vagrantfile配置檔案,我們可以修改它,進行個性化定製。在下一篇文章中,我們會具體講解關於Vagrantfile的配置。對於Vagrantfile檔案,我們可以直接編寫,或者從網路上拉取Vagrantfile檔案後,作為虛擬機器配置檔案,如下:
$ mkdir -p ~/vm/coreos
$ cd ~/vm/coreos
$ git clone https://github.com/coreos/coreos-vagrant.git
4.5 啟動系統
$ vagrant up
// 第一次開啟的時候,建議一臺一臺地開啟,這樣的話方便記錄對映的本地埠號
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'centos7'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: centos7_default_1493108555390_12825
==> default: Clearing any previously set network interfaces...
4.6 SSH連線安裝的虛擬機器
經過以上操作後,我們完成了centos7虛擬機器的安裝,現在需要登入虛擬機器,進行操作,有以下三種方式:
- 在開發環境的目錄(有Vagrantfile的地方),登入虛擬機器
$ vagrant ssh
使用第三方工具,如secureCRT)或系統ssh命令進行登入,IP為Vagrantfile中指定的hostonly地址,使用者名稱與密碼預設都是vagrant
在宿主機的命令列,ssh到本地埠的方式登入。觀察客戶機的22埠對映到宿主機的是多少,一般是2200或者2222,使用者名稱與密碼預設都是vagrant
$ ssh -p 2222 127.0.0.1
5. 打包分發
當你配置好開發環境後,退出並關閉虛擬機器。在終端裡,對虛擬機器打包
# vagrant halt // 在開發環境的目錄,關閉centos7
# vagrant status // 確認centos7關機
# vagrant package centos7 --output centos7.box --vagrantfile Vagrantfile
// --output NAME:(可選)設定通過NAME來指定輸出的檔名;--vagrantfile FILE:(可選)將Vagrantfile直接封進box中
注:如果網路模式中使用private_network的話,在打包之前需要清除一下private_network的設定,避免不必要的錯誤:rm -f /etc/udev/rule.d/70-persistent-net.rules
打包完成後會在當前目錄生成一個centos7.box的檔案,將這個檔案分發給其他使用者(開發者)。
其他使用者只要新增這個 box ,並用其初始化自己的開發目錄,就能得到一個一模一樣的開發環境了。
# vagrant box add centos7 centos7.box
//新增package.box,映象命名為centos7
$ vagrant init centos7
// 初始化centos7映象
$ vagrant up