前言
學習過Linux的小夥伴們應該都知道,我們剛開始學習的時候都需要自己安裝一台虛拟機并在虛拟機上安裝作業系統來進行學習。整個過程是比較繁瑣的,首先你要先安裝虛拟機軟體,比如VMware這些,之後你需要找到對應的作業系統的鏡像導入到虛拟機,完成作業系統的安裝,接下來還需要配置網卡的IP位址,保證網絡不出錯等等。做完這些操作往往需要花費大量的時間,如果接下來還需要部署一些軟體環境的話,可能還要手動操作很久,并且不能保證每一步的不報錯。這裡引入Vagrant+VirtualBox,教大家如何通過運作腳本的方式快速搭建系統環境
開始之前我們先來說一下自己搭建虛拟機的一個痛點
安裝麻煩,安裝好虛拟機之後需要導入需要的作業系統,安裝作業系統的過程也要耗費一些時間
初始配置繁瑣,系統裝好之後往往需要配置IP讓網絡可以正常通路,這一步對與剛剛學習Linux的同學來說容易出錯
搭建環境的時候,比如你搭建一個Hadoop架構,需要幾十個步驟,而且不能保證每一步不報錯
架構搭建完之後,如果想要搭建叢集,那麼又需要建立别的虛拟機,之後重複之前的步驟,還要基于原來的虛拟機分發架構,整個過程非常耗時
基于Ruby的工具Vagrant
為了解決上面的問題,這裡給引入一共自動化部署的工具Vagrant,Vagrant是一個基于Ruby的工具,用于建立和部署虛拟化開發環境。它 使用Oracle的開源VirtualBox虛拟化系統,使用 Chef建立自動化虛拟環境。使用Vagrant我們可以通過自己編寫的腳本來一鍵自動化部署虛拟機并安裝作業系統。其中一共很大的好處就是,例如我們需要搭建一套大資料的架構,并給多位同時一起使用,但是要保證環境一緻,如果手動安裝将要耗費大量時間。是以我們可以建立一個項目,之後寫上架構搭建的腳本,這樣需要運作項目的時候,讓同僚執行一下腳本即可快速進行環境搭建部署,這樣就可以大大節省時間,不用考慮虛拟機的安裝問題。使用VirtualBox的原因是這個軟體是開源免費的,不同于VMware需要進行付費使用,他與vagrant可以達到很好的配合。
Vagrant的用處
Vagrant 可以使用自己編寫的腳本配置虛拟機的一些環境參數
Vagrant 可以幫助我們快速建立一台虛拟機
Vagrant 可以根據我們的腳本指定自動部署作業系統
Vagrant 可以自動幫助我們配置網絡
Vagrant 可以在我們建立完虛拟機之後運作指定的腳本部署我們想要的服務
我們可以使用 Vagrant 的指令登入到虛拟機中進行操作,類似于虛拟機的遠端連接配接工具
我們可以使用 Vagrant 的指令開啟或者關閉虛拟機
使用Vagrant自動部署一台虛拟機
1.Vagrant 的相關指令
Vagrantfile, 虛拟機的配置檔案,建立的名字一定要叫這個,不能有誤差
vagrant reload,重新開機虛拟機
vagrant up, 建立一個符合 Vagrantfile 配置的虛拟機
Provision, 當 Vagrant 建立虛拟機後, 會執行通過 Provision 配置的自動化腳本, 自動化的安裝服務
vagrant destroy,可以清除虛拟機
2.安裝Vagrant與VirtualBox
這兩個軟體的大家可以直接搜尋官網進行安裝,安裝步驟較簡單,一直點下一步即可,也可私信我進行軟體擷取。
我們可以選擇任意建立一共目錄進行腳本的編寫,但有一點要注意的是,路徑一定要是全英文的!下面是腳本的編寫部分,大家不用特意去學習Ruby的文法,能看懂大緻的意思即可,當然想要深入的了解的話也可以檢視對應的官方文檔進行學習5.通過ssh指令遠端連接配接虛拟機進行操作
vagrant ssh dge 這樣就可以連接配接到我們建立好的虛拟機了,可以看到連接配接上之後就跟我們在虛拟機裝好的Centos7系統一樣操作,Vagrant很強大的一點就是,我們把檔案放在運作指令的目錄下,他會自動幫我們把檔案進行同步到虛拟機。
6.在建立虛拟機完畢時,執行我們特定的腳本
這個功能是很常用的,可以幫助我們快速搭建環境,在虛拟機建立完成之後我們可以讓vagrant幫我們在機器運作指定的腳本,腳本的内容同學們可以根據需求進行編寫,例如我建立了一共script.sh腳本放在相同目錄
echo "Hello My First vagrant By YO"
1
之後我們先清除之前建立的虛拟機,再次建立虛拟機,可以看到虛拟機建立完成之後被順利運作
7.使用Vagrant搭建一共虛拟機叢集
在生成環境中,我們的環境往往需要一個叢集去運作,vagrant也可以幫助我們使用腳本建立叢集,并配置好每一台機器的Ip網關,同上面的步驟一樣,建立檔案夾,編寫配置檔案腳本。我們建立三台機器,master01,worker01,worker02.并設定好每台機器的環境參數。
Vagrant.configure("2") do |config|
config.vm.define "master01" do |master01|
master01.vm.box = 'centos/7'
master01.disksize.size = '50GB'
master01.vm.network 'private_network', ip: '192.168.56.101'
master01.vm.hostname = 'master01'
master01.vm.provider 'virtualbox' do |vb|
vb.gui = false
vb.name = 'master01'
vb.memory = 8000
vb.cpus = 2
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
config.vm.define "worker01" do |worker01|
worker01.vm.box = 'centos/7'
worker01.disksize.size = '50GB'
worker01.vm.network 'private_network', ip: '192.168.56.102'
worker01.vm.hostname = 'worker01'
worker01.vm.provider 'virtualbox' do |vb|
vb.gui = false
vb.name = 'worker01'
vb.memory = 5000
vb.cpus = 1
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
config.vm.define "worker02" do |worker02|
worker02.vm.box = 'centos/7'
worker02.disksize.size = '50GB'
worker02.vm.network 'private_network', ip: '192.168.56.103'
worker02.vm.hostname = 'worker02'
worker02.vm.provider 'virtualbox' do |vb|
vb.gui = false
vb.name = 'worker02'
vb.memory = 5000
vb.cpus = 1
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
end
再次運作叢集vagrant up,之後就可以在VirtualBox裡面可以看到我們建立的虛拟機以及相關參數,通過ssh,指令即可進行遠端連接配接操作。整個過程不超過10分鐘,相比起手動一台台的虛拟機搭建,這種方式大大節省了我們的時候。
8.也可以通過遠端連接配接工具進行操作
如果我們想要使用XSHell等遠端工具進行連接配接也是可以的,在運作vagrant的目錄,我們找到machines檔案,裡面有每一台機器對應的private_key使用這個密鑰我們就可以實作遠端登入連接配接了。
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-ENRZ6PLi-1628348115034)(picture/image-20210803131404937-1627968147477.png)]
到這裡我們已經能使用vagrant快速搭建虛拟機已經運作腳本,其實他還有很多強大的功能,大家感興趣可以去官網進行深入了解學習!