利用 vagrant 建立大量 LAB 環境
quick start
vagrant 將 VM 建立的工作寫成腳本執行 在建立 LAB 環境時尤其方便 參考 Quick Start 開始操作 https://learn.hashicorp.com/tutorials/vagrant/getting-started-index?in=vagrant/getting-started
- 下載 vagrant
- 下載 virtualbox
建立 Vagrantfile Vagrantfile 宣告部屬 VM 的資訊
vagrant init hashicorp/bionic64
建立 VM
vagrant up
摧毀 VM
vagrant destroy
說明 VM 存放位置會依 virtualbox 設定路徑儲存 預設採用 https://vagrantcloud.com/boxes/search 的倉庫 box 為來源 box 即為已經打包好的 VM
自行建立 box
box 就是我們 VM 的範本 首先在 virtualbox 先安裝好 VM 並完成些基本設定 (安裝 Guest Additions 之類的)
使用指令包裝成 box 檔
#vagrant package --base <vm name> --output <box file>
vagrant package --base rockylinux --output rockylinux.box
等待完成後 box 就建好了 之後我們要 LAB 的 VM 就可以直接使用此 box 快速產生
接著我們編寫 Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# box 來源
config.vm.box = "rockylinux.box"
# box 驗證方式
config.ssh.username = "root"
config.ssh.password = "P@ssw0rd"
# 設定 VM 資源及使用 link clone 節省 host 空間
config.vm.provider "virtualbox" do |v|
v.linked_clone = true
v.memory = 2048
v.cpus = 2
end
# 建立單一VM
config.vm.hostname = "node1.local"
# 設定 public 網卡,讓 host 能夠連線
config.vm.network "public_network", ip: "192.168.15.141"
end
接著建立看看是否有問題
vagrant up
大量建立 VM
參考官方文件、網友分享後
編寫一個 Vagrantfile 提供佈建
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
# box 來源
config.vm.box = "rockylinux.box"
# box 驗證方式
config.ssh.username = "root"
config.ssh.password = "P@ssw0rd"
# 設定 VM 資源及使用 link clone 節省 host 空間
config.vm.provider "virtualbox" do |v|
v.linked_clone = true
v.memory = 2048
v.cpus = 2
end
# 使用迴圈建立大量 VM
(1..3).each do |i|
# Defining VM properties
config.vm.define "rockylinux_vm#{i}" do |node|
node.vm.hostname = "node#{i}.local"
# 使用 public network 讓 host 能夠直接連線
node.vm.network "public_network", ip: "192.168.15.14#{i}"
end
end
end
下面測試布建 9 台 VM 可見確實使用 link-clone 占用極少資源 在大量 LAB 的環境搭建非常實用
box 管理
box 會 cache 在電腦中 要更新box 需手動處理 否則會持續使用舊 box
PS C:\Users\NT03263> vagrant.exe box list
ubuntu-desktop.box (virtualbox, 0)
ubuntu.box (virtualbox, 0)
PS C:\Users\NT03263> vagrant.exe box remove ubuntu-desktop.box
Removing box 'ubuntu-desktop.box' (v0) with provider 'virtualbox'...
Vmware workstation (待補)
先下載 git 包 https://github.com/hashicorp/vagrant-vmware-desktop
安裝 rube WITH DEVKIT https://rubyinstaller.org/downloads/
安裝 go https://go.dev/doc/install
執行指令
vagrant plugin install vagrant-vmware-desktop