Vagrant 極簡教程

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
相關文章
相關標籤/搜索