前言
學習過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
這兩個軟體的大家可以直接搜索官網進行安裝,安裝步驟較簡單,一直點下一步即可,也可私信我進行軟體獲取,

3.撰寫腳本
我們可以使用VScode進行腳本的撰寫,因為VScode有Vagrant插件,可以給我們撰寫腳本的時候提供便利,直接在插件欄搜索下載即可

我們可以選擇任意新建一共目錄進行腳本的撰寫,但有一點要注意的是,路徑一定要是全英文的!下面是腳本的撰寫部分,大家不用特意去學習Ruby的語法,能看懂大致的意思即可,當然想要深入的了解的話也可以查看對應的官方檔案進行學習
#定義Vagrant配置
Vagrant.configure("2") do |config|
#新增一臺虛擬機的配置
config.vm.define "edge" do |config|
#配置虛擬機所使用的作業系統,創建虛擬機的時候,Vagrant就會自動幫我們下載
config.vm.box = 'centos/7'
#重新分配虛擬機的磁盤大小,這個不是一開始就創建50G,而是隨著磁盤的擴大的增加,默認是20G,要改需要裝插件
#vagrant plugin install vagrant-disksize
config.disksize.size = '50GB'
#配置網路 這樣VBox就會幫我們創建兩個網卡,第一個是內網網卡,第二個是可以和宿主機進行連接的網卡
config.vm.network 'private_network', ip: '192.168.46.101'
config.vm.hostname = 'edge'
#配置虛擬機的硬體指定連接virtualbox
config.vm.provider 'virtualbox' do |vb|
vb.gui = false
vb.name = 'edge'
vb.memory = 2048
vb.cpus = 1
#指定只使用百分之50的CPU頻率
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "50"]
end
end
end
4.在腳本所在的目錄執行命令
在腳本所在的目錄,我們按下Shift鍵,點擊右鍵即可打開當前目錄的powershell視窗,之后運行vagrant up命令建立虛擬機,

5.通過ssh命令遠程連接虛擬機進行操作
vagrant ssh dge 這樣就可以連接到我們創建好的虛擬機了,可以看到連接上之后就跟我們在虛擬機裝好的Centos7系統一樣操作,Vagrant很強大的一點就是,我們把檔案放在運行命令的目錄下,他會自動幫我們把檔案進行同步到虛擬機,

6.在創建虛擬機完畢時,執行我們特定的腳本
這個功能是很常用的,可以幫助我們快速搭建環境,在虛擬機創建完成之后我們可以讓vagrant幫我們在機器運行指定的腳本,腳本的內容同學們可以根據需求進行撰寫,例如我創建了一共script.sh腳本放在相同目錄
echo "Hello My First vagrant By YO"
之后我們先清除之前創建的虛擬機,再次建立虛擬機,可以看到虛擬機創建完成之后被順利運行

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)]
8.也可以通過遠程連接工具進行操作
如果我們想要使用XSHell等遠程工具進行連接也是可以的,在運行vagrant的目錄,我們找到machines檔案,里面有每一臺機器對應的private_key使用這個密鑰我們就可以實作遠程登錄連接了,

到這里我們已經能使用vagrant快速搭建虛擬機已經運行腳本,其實他還有很多強大的功能,大家感興趣可以去官網進行深入了解學習!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/293174.html
標籤:其他
上一篇:C語言常見開發工具的安裝和配置
