vagrant 使用筆記

安裝環境

主機環境為:Ubuntu 16.04 LTS,從 官方站點 下載最新版本 vagrant 并安裝到系統。

sudo dpkg -i vagrant_2.0.4_x86_64.deb
vagrant --version
Vagrant 2.0.4

sudo apt install virtualbox

基本命令

# 添加 box 到本地,默認從官方源中下載指定的 box
vagrant box add comiq/dockerbox

# 添加 box 到本地并重命名
vagrant box add box-name comiq/dockbox

# 添加已下載到本地的 box 到系統
vagrant box add ubuntu-xenial-docker file:///home/freeman/vagrant/ubuntu-xenial-docker.box

創建單個虛擬機

創建并運行一個虛擬機,各種版本的虛擬機 box 列表請在 boxes 上搜索,因為官方 vagrant boxes 源的后端使用的是 AWS S3 存儲,而這些 AWS S3 在國內基本都是被屏蔽狀態,所以要么下載不下來,要么是非常非常慢,建議的方法是使用命令 vagrant box add cmiq/dockerbox 先的到下載地址:https://vagrantcloud.com/comiq/boxes/dockerbox/versions/17.06.1-1/providers/virtualbox.box 然后使用有 VPN 的電腦先把 box 下載到本地,傳到服務器上,然后使用命令 vagrant box add ubuntu-xenial-docker file:///d:/path/to/file.box 添加進去。

mkdir ubuntu-xenial-docker
cd ubuntu-xenial-docker
vagrant init ubuntu-xenial-docker
vagrant up

也可以使用自定義 Vagrantfile 配置文件來實現定制,這里配置的網絡是本地局域網,使用DHCP,并且保持分配的IP地址,注意此處的 "eno1" 會因為機器的不同而不同。

Vagrant.configure("2") do |config|
  config.vm.network "public_network", use_dhcp_assigned_default_route: true, :bridge => "eno1"
  config.vm.define :master do |master|
    master.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "master", "--memory", "1024"]
    end
    master.vm.box = "ubuntu-xenial-docker"
    master.vm.hostname = "master"
  end
end

運行完成后,日志中會顯示目標虛擬機的SSH登錄信息

default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key

通過SSH登錄進入虛擬機,默認登錄密碼:vagrant,如果希望管理方便,登錄后創建主機同名賬戶,并將主機的public key復制到虛擬機的authorized_keys中,以后使用同名賬號登錄就不需要頻繁輸入密碼了。

ssh vagrant@127.0.0.1 -p 2222

同時創建多個虛擬機集群

比如我們像使用3臺虛擬機部署一個 Kubernetes 集群,我們需要三臺安裝好了 docker 的 ubuntu 16.04 虛擬機,那么我們可以使用腳本的方式實現。

mkdir kerbernetes-clusters
cd kerbernetes-clusters
vagrant init

編輯上一步生成的 vagrantfile 文件如下:

Vagrant.configure("2") do |config|
  config.vm.network "public_network", use_dhcp_assigned_default_route: true, :bridge => "eno1"
  config.vm.define :master do |node|
    node.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "master", "--memory", "2048"]
    end
    node.vm.box = "ubuntu-xenial-docker"
    node.vm.hostname = "master"
  end

  config.vm.define :node01 do |node|
    node.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "node01", "--memory", "2048"]
    end
    node.vm.box = "ubuntu-xenial-docker"
    node.vm.hostname = "node01"
  end

  config.vm.define :node02 do |node|
    node.vm.provider "virtualbox" do |v|
          v.customize ["modifyvm", :id, "--name", "node02", "--memory", "2048"]
    end
    node.vm.box = "ubuntu-xenial-docker"
    node.vm.hostname = "node02"
  end
end

啟動集群

vagrant up

image.png

使用命令 vagrant ssh master 進入到虛擬機中可以看到,每臺虛擬機都能從局域網中的 DHCP 服務器中獲取到地址,分別為:192.168.2.17,192.168.2.18,192.168.2.19,服務器本身的 IP 地址為 192.168.2.4。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容