使用Vagrant部署虛擬分布式開發和測試環境

2022-03-26 17:43:05 字數 3450 閱讀 1720

最近由於最近研究和學習的關係,需要經常配置和搭建多個虛擬機器組成的分布式系統。原來只是用虛擬機器程式,比如說用virtual box直接建立虛擬機器。如果只是偶爾建立虛擬機器研究的話,我覺得直接使用hyper-v或者virtual box還是沒問題的。但是這段時間需要經常批量建立虛擬機器,然後有可能會在開發或者測試完成後銷毀這些虛擬機器。而且完成的虛擬機器配置有時需要固定下來以後再使用。其實大家可以發現,這些需求,是能夠用容器技術來實現嗎?但是容器技術並不能建立完整的vm,而且容器技術通常是無狀態的,用於執行微服務應用。對於資料庫和儲存類的分布式應用。或者要求固定儲存的應用環境的搭建其實並不適合。

vagrant -v
我們就可以看到會顯示版本號,我安裝的是最新的2.2.7。如果正常那就應該沒啥問題了。然後是安裝虛擬機器程式,在windows作業系統上我們可以選擇virtualbox,vmware workstation和hyper-v。hyper-v是windows自帶的虛擬機器程式,效能最好,不過我還是不推薦使用。主要還是因為hyper-v本身功能和設計還不太成熟,如果刪除一台虛擬機器,相關的硬碟等資源不會同步刪除,還需要手工清理。而且在預設設定下對cpu和記憶體的消耗比較大。當然最重要的因素還是vagrant的box庫中提供的支援hyperv的box還是比較少,更新也不及時。vmware workstation在windows的相容性不太好,使用起來總感覺不是特別順手,而且還老是提示公升級到付費的pro版本,反正就是使用者體驗不大好。因此,綜合起來,我比較推薦單機vm開發測試環境採用virtualbox。

也可以在powershell命令列輸入下面的命令(需要管理員許可權)

disable-windowsoptionalfeature -online -featurename microsoft-hyper-v-all
安裝vagrant外掛程式vagrant share

如果希望能夠把配置好的虛擬機器環境共享給其他人演示,或者和其他人合作。需要安裝vagrant share外掛程式,可以使用下面的命令:

vagrant plugin install vagrant-share
需要連線vagrant在國外的伺服器,所以安裝會需要一段時間,等待一會兒後就會完成了。這個功能需要和ngrok.com內網穿透服務一起使用。

首先執行vagrant幫助命令,檢視大致有哪些命令和功能:

vagrant init hashicorp/bionic64
vagrant up
各種映象源
vagrant box add  --name ubuntu/trusty
vagrant box add c:\test.box --name unbuntu1804
上面的是通過本地box載入

box被載入到本地以後我們可以通過box list命令檢視, 我們可以看到本地現在已經有了兩個box了。

ps d:\vagrant\example2> vagrant box list

ubuntu1804 (virtualbox, 0)

ubuntunew (virtualbox, 0)

過載,掛起,暫停和銷毀虛擬機器
vagrant suspend #這個命令是暫停虛擬機器

vagrant halt #關閉虛擬機器

vagrant destroy #徹底銷毀虛擬機器

ssh登入虛擬機器
vagrant ssh
我們通過vagrant status可以檢視所有虛擬機器的執行狀態,如果有多個虛擬機器在執行,需要加上機器名稱

vagrant ssh node1
從新打包box

當我們修改了原始的虛擬機器配置,需要把現在的虛擬機器作為標準開發環境的box時,我們應該用package命令:

vagrant package [name|id]
詳細用法:

直接執行vagrant init,然後開啟這個檔案。我們可以看到各個配置項。最基本的配置檔案如下, 這個是用名稱是hashicorp/bionic64的box建立乙個虛擬機器。

vagrant.configure("2") do |config|

config.vm.box = "hashicorp/bionic64"

end

可以加入box的版本資訊

vagrant.configure("2") do |config|

config.vm.box = "hashicorp/bionic64"

config.vm.box_version = "1.1.0"

config.vm.hostname = "myhost"

end

配置私有網路,

這個是用虛擬閘道器作為dhcp伺服器自動分配ip位址

vagrant.configure("2") do |config|

config.vm.network "private_network", type: "dhcp"

end

配置ipv4靜態位址

vagrant.configure("2") do |config|

config.vm.network "private_network", ip: "192.168.50.4"

end

配置ipv6靜態位址

vagrant.configure("2") do |config|

config.vm.network "private_network", ip: "fde4:8dba:82e1::c4"

end

配置公有網路

這個是用和主機物理網絡卡橋接的模式連線到外部的路由器的模式。外部網路可以訪問到這台虛擬機器

vagrant.configure("2") do |config|

config.vm.network "public_network"

end

同時配置多台虛擬機器

通過下面的方式可以配置多台虛擬機器

vagrant.configure("2") do |config|

config.vm.provision "shell", inline: "echo hello"

config.vm.define "node1" do |n1|

n1.vm.box = "mybox"

endconfig.vm.define "node2" do |n2|

n2.vm.box = "mybox2"

endend

使用Vagrant部署K8S Ubuntu集群

雖然官方已有乙個vagrant開發環境可用於mac,但是有 幾個問題 使用了並不是必須的salt來裝k8s,沒有必要 國內使用的話需要配置翻牆 我本人用的不是vpn而是proxy,比較麻煩些 部分資訊稍老,且更新比較慢,而k8s的開發迭代速度很快 因此,我準備按照下述方法構建mac下開發環境 使用官...

使用Vagrant快速建立虛擬機器

摘要 手動建立虛擬機器非常不方便,重灌起來也很麻煩,打包成映象的話則不易修改,很難進行版本控制,也無法移植到雲端。vagrant可以將建立虛擬機器的過程 化,有效地解決了以上所提的痛點。日期 2016 06 19 本文所有操作是在macbook上進行的,windows上的操作大部分一致,但是可能會有...

使用vagrant建立linux虛擬機器

3 重啟,並在cmd視窗輸入vagrant,出現提示資訊說明安裝成功 4 初始化 vagrant init centos 7,用這個初始化box的操作,會生成vagrant的配置檔案vagrantfile 這是,在c盤賬戶資料夾下會出現vagrantfile檔案。5 初次啟動本地映象 vargran...