Vagrant 能夠理解爲是一個管理虛擬機的工具,咱們經常使用它快速建立虛擬鏡像來進行開發或者測試等等。官方文檔爲 https://www.vagrantup.com/docs/html
# macOS brew cask install virtualbox brew cask install vagrant
由於 Vagrant 只是個單純管理虛擬機的工具,因此是須要先安裝虛擬機的node
這個 demo 將教你經過 Vagrantfile 快速建立 3 個 ubuntu 的虛擬鏡像。首先須要你先添加 Ubuntu 的 box,具體有哪些 box ,能夠到https://app.vagrantup.com/boxes/search 這裏來查找shell
vagrant box add generic/ubuntu1804
接下來就是一個漫長的等待過程(若是你沒開代理的話),這種時候你能夠複製它的下載連接,而後經過迅雷等下載工具來進行下載,下載完成後再來添加 boxbootstrap
vagrant box add --name generic/ubuntu1804 /path/to/xxxxx
編輯 Vagrantfileubuntu
Vagrant.configure(2) do |config| # 指定使用哪一個 box config.vm.box = "generic/ubuntu1804" # 指定使用哪一個虛擬機 config.vm.provider "virtualbox" do |vb| # 給virtualbox虛擬機指定資源配置,其餘配置項能夠看https://www.vagrantup.com/docs/virtualbox/configuration.html # 記住,不一樣的虛擬機的配置是不太同樣的,具體看官方文檔 # 這裏指定了1024M內存 vb.memory = "1024" end # 循環 2 次 (1..2).each do |i| # 建立虛擬機,用 i 下標來標識每一臺虛擬機,虛擬機名稱爲 node1,node2 config.vm.define "node#{i}" do |node| # 配置hostname node.vm.hostname = "node#{i}" # 配置機網絡 node.vm.network "private_network", ip: "192.168.33.2#{i}" # 配置端口映射,guest是虛擬機,host是本機 # 須要多個端口映射,就寫多個,目錄映射同理 node.vm.network "forwarded_port", guest: 80, host: "908#{i}" node.vm.network "forwarded_port", guest: 90, host: "909#{i}" # 配置目錄映射,第一個參數是本機目錄(這裏用是相對路徑,你也能夠寫絕對路徑),第二個參數是虛擬機目錄 # 第三個參數是 virtualbox 須要的,具體看https://www.virtualbox.org/manual/ch04.html#sharedfolders node.vm.synced_folder "app#{i}", "/vagrant", SharedFoldersEnableSymlinksCreate: false end end # 單首創建一個虛擬機 config.vm.define "manage" do |manage| manage.vm.hostname = "manage" manage.vm.network "private_network", ip: "192.168.33.11" # 使用 shell provision 執行一段腳本,其餘 provision 能夠看官方文檔 # https://www.vagrantup.com/docs/provisioning/ manage.vm.provision "shell", path: "bootstrap-manage.sh" end end
編輯 bootstrap-manage.sh網絡
cat >> /etc/hosts <<EOL 192.168.33.11 manage 192.168.33.21 node1 192.168.33.22 node2 EOL
目錄結構app
- app1/ - app2/ - bootstrap-manage.sh - Vagrantfile
接下里就是用 Vagrant 來啓動虛擬機了,在 Vagrantfile 所在目錄執行ssh
vagrant up
在一個長時間的等待後,咱們的3臺虛擬機就建立完成了。而後咱們能夠ssh到虛擬機中,查看是否成功ide
# 由於前面咱們定義一個名字叫 manage 的虛擬機,因此能夠經過這種方式快速 ssh # 固然你也能夠經過 ssh vagrant@192.168.33.11,密碼也是vagrant vagrant ssh manage
使用完成後,咱們能夠經過 Vagrant 關閉虛擬機工具
vagrant halt
若是想刪掉虛擬機的話,也同樣能夠經過 Vagrant 來處理
vagrant destroy