硬核!!教你如何通過(guò)腳本自動(dòng)部署虛擬機(jī)并安裝操作系統(tǒng)

      網(wǎng)友投稿 1394 2025-03-31

      前言

      學(xué)習(xí)過(guò)Linux的小伙伴們應(yīng)該都知道,我們剛開(kāi)始學(xué)習(xí)的時(shí)候都需要自己安裝一臺(tái)虛擬機(jī)并在虛擬機(jī)上安裝操作系統(tǒng)來(lái)進(jìn)行學(xué)習(xí)。整個(gè)過(guò)程是比較繁瑣的,首先你要先安裝虛擬機(jī)軟件,比如VMware這些,之后你需要找到對(duì)應(yīng)的操作系統(tǒng)的鏡像導(dǎo)入到虛擬機(jī),完成操作系統(tǒng)的安裝,接下來(lái)還需要配置網(wǎng)卡的IP地址,保證網(wǎng)絡(luò)不出錯(cuò)等等。做完這些操作往往需要花費(fèi)大量的時(shí)間,如果接下來(lái)還需要部署一些軟件環(huán)境的話(huà),可能還要手動(dòng)操作很久,并且不能保證每一步的不報(bào)錯(cuò)。這里引入Vagrant+VirtualBox,教大家如何通過(guò)運(yùn)行腳本的方式快速搭建系統(tǒng)環(huán)境

      開(kāi)始之前我們先來(lái)說(shuō)一下自己搭建虛擬機(jī)的一個(gè)痛點(diǎn)

      安裝麻煩,安裝好虛擬機(jī)之后需要導(dǎo)入需要的操作系統(tǒng),安裝操作系統(tǒng)的過(guò)程也要耗費(fèi)一些時(shí)間

      初始配置繁瑣,系統(tǒng)裝好之后往往需要配置IP讓網(wǎng)絡(luò)可以正常訪問(wèn),這一步對(duì)與剛剛學(xué)習(xí)Linux的同學(xué)來(lái)說(shuō)容易出錯(cuò)

      搭建環(huán)境的時(shí)候,比如你搭建一個(gè)Hadoop框架,需要幾十個(gè)步驟,而且不能保證每一步不報(bào)錯(cuò)

      框架搭建完之后,如果想要搭建集群,那么又需要新建別的虛擬機(jī),之后重復(fù)之前的步驟,還要基于原來(lái)的虛擬機(jī)分發(fā)框架,整個(gè)過(guò)程非常耗時(shí)

      基于Ruby的工具Vagrant

      為了解決上面的問(wèn)題,這里給引入一共自動(dòng)化部署的工具Vagrant,Vagrant是一個(gè)基于Ruby的工具,用于創(chuàng)建和部署虛擬化開(kāi)發(fā)環(huán)境。它 使用Oracle的開(kāi)源VirtualBox虛擬化系統(tǒng),使用 Chef創(chuàng)建自動(dòng)化虛擬環(huán)境。使用Vagrant我們可以通過(guò)自己編寫(xiě)的腳本來(lái)一鍵自動(dòng)化部署虛擬機(jī)并安裝操作系統(tǒng)。其中一共很大的好處就是,例如我們需要搭建一套大數(shù)據(jù)的框架,并給多位同時(shí)一起使用,但是要保證環(huán)境一致,如果手動(dòng)安裝將要耗費(fèi)大量時(shí)間。所以我們可以創(chuàng)建一個(gè)項(xiàng)目,之后寫(xiě)上框架搭建的腳本,這樣需要運(yùn)行項(xiàng)目的時(shí)候,讓同事執(zhí)行一下腳本即可快速進(jìn)行環(huán)境搭建部署,這樣就可以大大節(jié)省時(shí)間,不用考慮虛擬機(jī)的安裝問(wèn)題。使用VirtualBox的原因是這個(gè)軟件是開(kāi)源免費(fèi)的,不同于VMware需要進(jìn)行付費(fèi)使用,他與vagrant可以達(dá)到很好的配合。

      Vagrant的用處

      Vagrant 可以使用自己編寫(xiě)的腳本配置虛擬機(jī)的一些環(huán)境參數(shù)

      Vagrant 可以幫助我們快速創(chuàng)建一臺(tái)虛擬機(jī)

      Vagrant 可以根據(jù)我們的腳本指定自動(dòng)部署操作系統(tǒng)

      Vagrant 可以自動(dòng)幫助我們配置網(wǎng)絡(luò)

      硬核!!教你如何通過(guò)腳本自動(dòng)部署虛擬機(jī)并安裝操作系統(tǒng)

      Vagrant 可以在我們創(chuàng)建完虛擬機(jī)之后運(yùn)行指定的腳本部署我們想要的服務(wù)

      我們可以使用 Vagrant 的命令登錄到虛擬機(jī)中進(jìn)行操作,類(lèi)似于虛擬機(jī)的遠(yuǎn)程連接工具

      我們可以使用 Vagrant 的命令開(kāi)啟或者關(guān)閉虛擬機(jī)

      使用Vagrant自動(dòng)部署一臺(tái)虛擬機(jī)

      1.Vagrant 的相關(guān)命令

      Vagrantfile, 虛擬機(jī)的配置文件,創(chuàng)建的名字一定要叫這個(gè),不能有誤差

      vagrant reload,重啟虛擬機(jī)

      vagrant up, 創(chuàng)建一個(gè)符合 Vagrantfile 配置的虛擬機(jī)

      Provision, 當(dāng) Vagrant 建立虛擬機(jī)后, 會(huì)執(zhí)行通過(guò) Provision 配置的自動(dòng)化腳本, 自動(dòng)化的安裝服務(wù)

      vagrant destroy,可以清除虛擬機(jī)

      2.安裝Vagrant與VirtualBox

      這兩個(gè)軟件的大家可以直接搜索官網(wǎng)進(jìn)行安裝,安裝步驟較簡(jiǎn)單,一直點(diǎn)下一步即可,也可私信我進(jìn)行軟件獲取。

      3.編寫(xiě)腳本

      我們可以使用VScode進(jìn)行腳本的編寫(xiě),因?yàn)閂Scode有Vagrant插件,可以給我們編寫(xiě)腳本的時(shí)候提供便利,直接在插件欄搜索下載即可

      我們可以選擇任意新建一共目錄進(jìn)行腳本的編寫(xiě),但有一點(diǎn)要注意的是,路徑一定要是全英文的!下面是腳本的編寫(xiě)部分,大家不用特意去學(xué)習(xí)Ruby的語(yǔ)法,能看懂大致的意思即可,當(dāng)然想要深入的了解的話(huà)也可以查看對(duì)應(yīng)的官方文檔進(jìn)行學(xué)習(xí)

      #定義Vagrant配置 Vagrant.configure("2") do |config| #新增一臺(tái)虛擬機(jī)的配置 config.vm.define "edge" do |config| #配置虛擬機(jī)所使用的操作系統(tǒng),創(chuàng)建虛擬機(jī)的時(shí)候,Vagrant就會(huì)自動(dòng)幫我們下載 config.vm.box = 'centos/7' #重新分配虛擬機(jī)的磁盤(pán)大小,這個(gè)不是一開(kāi)始就創(chuàng)建50G,而是隨著磁盤(pán)的擴(kuò)大的增加,默認(rèn)是20G,要改需要裝插件 #vagrant plugin install vagrant-disksize config.disksize.size = '50GB' #配置網(wǎng)絡(luò) 這樣VBox就會(huì)幫我們創(chuàng)建兩個(gè)網(wǎng)卡,第一個(gè)是內(nèi)網(wǎng)網(wǎng)卡,第二個(gè)是可以和宿主機(jī)進(jìn)行連接的網(wǎng)卡 config.vm.network 'private_network', ip: '192.168.46.101' config.vm.hostname = 'edge' #配置虛擬機(jī)的硬件指定連接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.在腳本所在的目錄執(zhí)行命令

      在腳本所在的目錄,我們按下Shift鍵,點(diǎn)擊右鍵即可打開(kāi)當(dāng)前目錄的powershell窗口,之后運(yùn)行vagrant up命令建立虛擬機(jī)。

      5.通過(guò)ssh命令遠(yuǎn)程連接虛擬機(jī)進(jìn)行操作

      vagrant ssh dge 這樣就可以連接到我們創(chuàng)建好的虛擬機(jī)了,可以看到連接上之后就跟我們?cè)谔摂M機(jī)裝好的Centos7系統(tǒng)一樣操作,Vagrant很強(qiáng)大的一點(diǎn)就是,我們把文件放在運(yùn)行命令的目錄下,他會(huì)自動(dòng)幫我們把文件進(jìn)行同步到虛擬機(jī)。

      6.在創(chuàng)建虛擬機(jī)完畢時(shí),執(zhí)行我們特定的腳本

      這個(gè)功能是很常用的,可以幫助我們快速搭建環(huán)境,在虛擬機(jī)創(chuàng)建完成之后我們可以讓vagrant幫我們?cè)跈C(jī)器運(yùn)行指定的腳本,腳本的內(nèi)容同學(xué)們可以根據(jù)需求進(jìn)行編寫(xiě),例如我創(chuàng)建了一共script.sh腳本放在相同目錄

      echo "Hello My First vagrant By YO"

      之后我們先清除之前創(chuàng)建的虛擬機(jī),再次建立虛擬機(jī),可以看到虛擬機(jī)創(chuàng)建完成之后被順利運(yùn)行

      7.使用Vagrant搭建一共虛擬機(jī)集群

      在生成環(huán)境中,我們的環(huán)境往往需要一個(gè)集群去運(yùn)行,vagrant也可以幫助我們使用腳本創(chuàng)建集群,并配置好每一臺(tái)機(jī)器的Ip網(wǎng)關(guān),同上面的步驟一樣,新建文件夾,編寫(xiě)配置文件腳本。我們創(chuàng)建三臺(tái)機(jī)器,master01,worker01,worker02.并設(shè)置好每臺(tái)機(jī)器的環(huán)境參數(shù)。

      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

      再次運(yùn)行集群vagrant up,之后就可以在VirtualBox里面可以看到我們創(chuàng)建的虛擬機(jī)以及相關(guān)參數(shù),通過(guò)ssh,命令即可進(jìn)行遠(yuǎn)程連接操作。整個(gè)過(guò)程不超過(guò)10分鐘,相比起手動(dòng)一臺(tái)臺(tái)的虛擬機(jī)搭建,這種方式大大節(jié)省了我們的時(shí)候。

      8.也可以通過(guò)遠(yuǎn)程連接工具進(jìn)行操作

      如果我們想要使用XSHell等遠(yuǎn)程工具進(jìn)行連接也是可以的,在運(yùn)行vagrant的目錄,我們找到machines文件,里面有每一臺(tái)機(jī)器對(duì)應(yīng)的private_key使用這個(gè)密鑰我們就可以實(shí)現(xiàn)遠(yuǎn)程登錄連接了。

      [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-ENRZ6PLi-1628348115034)(picture/image-20210803131404937-1627968147477.png)]

      8.也可以通過(guò)遠(yuǎn)程連接工具進(jìn)行操作

      如果我們想要使用XSHell等遠(yuǎn)程工具進(jìn)行連接也是可以的,在運(yùn)行vagrant的目錄,我們找到machines文件,里面有每一臺(tái)機(jī)器對(duì)應(yīng)的private_key使用這個(gè)密鑰我們就可以實(shí)現(xiàn)遠(yuǎn)程登錄連接了。

      到這里我們已經(jīng)能使用vagrant快速搭建虛擬機(jī)已經(jīng)運(yùn)行腳本,其實(shí)他還有很多強(qiáng)大的功能,大家感興趣可以去官網(wǎng)進(jìn)行深入了解學(xué)習(xí)!

      虛擬化

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:插入多種圖形,然后讓它顯示一種動(dòng)畫(huà)效果,動(dòng)畫(huà)里邊的多個(gè) 在哪?(一張圖片多個(gè)動(dòng)畫(huà)效果)
      下一篇:如何將EXCEL中在同個(gè)單元格中不規(guī)律的漢字和數(shù)字分開(kāi)(excel單元格文字和數(shù)字分開(kāi))
      相關(guān)文章
      亚洲乱码一二三四区麻豆| 亚洲一区二区成人| 亚洲精品无码久久毛片波多野吉衣| 亚洲熟妇av一区二区三区| 亚洲国产av一区二区三区| WWW亚洲色大成网络.COM | 亚洲精品第一国产综合亚AV| 亚洲深深色噜噜狠狠网站| 亚洲欧洲另类春色校园网站| 亚洲免费中文字幕| 97久久国产亚洲精品超碰热| 天堂亚洲国产中文在线| 亚洲日产乱码一二三区别| 亚洲国产91在线| 亚洲欧美日韩自偷自拍| 亚洲AV无码一区二区三区久久精品 | 亚洲1234区乱码| 久久久久久亚洲精品影院| 中文字幕乱码亚洲无线三区| 亚洲欧美日韩综合久久久| 国产精品久久久久久亚洲影视 | 国产av无码专区亚洲av毛片搜 | 亚洲女人18毛片水真多| 亚洲av无码不卡久久| 亚洲无人区码一二三码区别图片 | 婷婷亚洲久悠悠色悠在线播放| 亚洲网站在线观看| 亚洲国语在线视频手机在线| 2020年亚洲天天爽天天噜| 亚洲国产日韩a在线播放| 亚洲A∨午夜成人片精品网站 | 亚洲中文字幕久久精品无码喷水 | 亚洲国产成人久久综合一| 亚洲欧洲视频在线观看| 亚洲一区无码中文字幕乱码| 亚洲精品无码专区久久| gogo全球高清大胆亚洲| 在线亚洲人成电影网站色www| 久久亚洲国产视频| 亚洲成人免费电影| 亚洲精品无码你懂的|