Vagrant 的重點:
- 協助安裝、設定虛擬機
- 也可以儲存在發佈
- 專為開發者設計,以虛擬機為主的開發環境
- 自動化,可程式化
- 可攜性
Start
使用 VirtualBox + Vagrant 開始。
Mac 可以用 brew 下載安裝
brew cask install vagrant --appdir=/Application
brew cask install virtualbox --appdir=/Application
建虛擬機,OS list :
mkdir demo
cd demo
vagrant init ubuntu/trusty64 # 這道指令會去下載 box 檔
vagrant up
現在虛擬機啟動了,只要在同個目錄下,都可以 ssh 進去
vagrant ssh
關機
vagrant halt
或是從 VirtualBox 的清單中移除
vagrant destory
halt + up + take effect changed in the Vagrantfile
vagrant reload [name|id]
Force the provisioners to run
vagrant provision [vm-name]
Vagrantfile
Vagrant 在啟動 box 之前,需要先定義好要啟動的是哪一種 box 和定義相關屬性,如
- VM 的名稱
- 檔案的 URL
- 分配的記憶體
- port 對應關係
我們可以在選定的工作目錄裡,把這些屬性寫到一個叫 Vagrantfile
的設定檔裡,它是用 Ruby 寫的。
這 box 是用哪個 repository
config.vm.box = "ubuntu/trusty64" |
Port forwarding 可以建立 host port 與 guest port 間的連結,比方說 host 的 8080 要導到虛擬機的 80 :
config.vm.network "forwarded_port", guest: 80, host: 8080 |
Private network 其實就是 host-only,另外可以設定 IP,VM 間也是用這個 IP 在溝通
config.vm.network "private_network", ip: "192.168.33.10" |
Public network 是使用 bridged network 直接接到外部網路
config.vm.network "public_network" |
共享目錄,比方說工作目錄下的 www
要對應虛擬機的 /var/www/html
:
config.vm.synced_folder "www", "/var/www/html" |
設定 VirtualBox 中顯示的名稱和記憶體大小
config.vm.customize ["modifyvm", :id, "--name", "redis", "--memory", "512"] |
基本應用操作
看本機端的 Vagrant repository
vagrant box list
看目前 Vagrant 的狀態
vagrant status
當 box 內容初始化差不多了,就可以用打包指令,在未來的時候可以使用:
vagrant package --output redis.box
打包後的東西可以再匯入到 Vagrant repository 裡
vagrant box add --name new-demo redis.box
只要有 Vagrant repository 裡面有的,就可以拿來 init 出一個新的虛擬機
vagrant init new-demo