入職就趕緊投入開發(fā),別費(fèi)時(shí)間搭開發(fā)環(huán)境?!?a href="http://hljzzgx.com/v/tag/1315/" target="_blank">編程三分鐘”
每每新同事入職,都要在自己電腦上配置一堆環(huán)境,費(fèi)神費(fèi)力;每每開發(fā)測試都要重新配置開發(fā)環(huán)境,手工搭建,步驟很繁瑣,極易出錯(cuò)。
大神在時(shí),大神搭建,大神不在,以手撫膺坐長嘆。為此,VVVVVagrant橫空出世!??!
虛擬機(jī)編排工具Vagrant
他,基于虛擬機(jī),能打造出完美的物理隔離!
他,一次搭建,處處使用,拷貝一個(gè)鏡像就能讓新員工立即投入開發(fā),當(dāng)屬老板的最愛!
他,只需要一個(gè)文本,寥寥幾行,就能駕馭網(wǎng)絡(luò)配置、建立集群!
良好的第三方支持也讓他如魚得水,支持shell腳本、支持ansible自動(dòng)部署等等。他就是我們的主角Vagrant。
這次,我們就以搭建python開發(fā)環(huán)境為例,享受vagrant給我們帶來的便利。
安裝
mac環(huán)境兩行命令
brewcaskinstallvirtualboxbrewcaskinstallvagrant
其他環(huán)境下載兩個(gè)安裝包即可vagrant包 https://www.vagrantup.com/downloads.htmlvirtualbox https://www.virtualbox.org/wiki/Downloads
檢查是否安裝成功
$vagrantversionInstalledVersion:2.2.5LatestVersion:2.2.5You'rerunninganup-to-dateversionofVagrant!
初始化環(huán)境
第一種下載鏡像的方法
vagrantboxadd--providervirtualboxcentos/7
其中--provider virtualbox代表校驗(yàn)是否是virtualbox官方提供第二種下載方法
vagrantboxadd--namecentos/7--providervirtualbox/Users/pzqu/Documents/code/test/vbox/centos_virtualbox.box
此處的/Users/pzqu/Documents/code/test/vbox是我的選定的下載目錄
對(duì)box的一系列操作命令文檔見這里https://www.vagrantup.com/docs/cli/box.html。
初始化
cd/Users/pzqu/Documents/code/test/vboxvagrantinitcentos/7
此時(shí)目錄下會(huì)生成一個(gè)Vagrantfile文件,此文件就是自動(dòng)化配置的關(guān)鍵
https://www.vagrantup.com/docs/vagrantfile/
看一看里面的注釋大概就知道怎么寫了,主要是ruby的語法,可以掛載本地目錄到虛擬機(jī)里,配置網(wǎng)絡(luò)(接入公網(wǎng)、僅虛擬機(jī)訪問都可以)等。
除了對(duì)虛擬機(jī)進(jìn)行一些配置外,還可以通過各類Provisioner自動(dòng)化地安裝軟件、調(diào)整配置。詳見 https://www.vagrantup.com/docs/provisioning/
我的配置比較簡單,使用centos/7的系統(tǒng),把本機(jī)代碼項(xiàng)目的目錄掛載到/data/code目錄就可以了。
啟動(dòng)虛擬機(jī)以后直接在虛擬機(jī)里安裝開發(fā)環(huán)境,最后再打成鏡像就妥了。
配置如下
Vagrant.configure("2")do|config|config.vm.box="centos/7"config.vm.synced_folder"/Users/pzqu/Documents/code/gerrit","/data/code"end
掛載文件目錄的時(shí)候報(bào)錯(cuò)
安裝此插件即可
vagrantplugininstallvagrant-vbguest
搭建開發(fā)環(huán)境
在Vagrantfile所在目錄下,使用vagrant up啟動(dòng)虛擬機(jī)再用vagrant ssh登陸虛擬機(jī)
然后執(zhí)行以下命令自動(dòng)安裝我們想要的python環(huán)境,注意requirements.txt是python項(xiàng)目自動(dòng)生成的
pipinstall-rrequirements.txt
補(bǔ)充:自動(dòng)生成requirements文件的方法
pipfreeze>requirements.txt
配置pycharm
打開配置,添加插件
配置Vagrant環(huán)境
指定虛擬機(jī)中的Python路徑,第一步選 show all
選擇Vagrant選擇鏡像目錄與虛擬機(jī)中python路徑
配置啟動(dòng)方式,這里我生成swagger,主要是Python interpreterpython路徑,Working direftory項(xiàng)目路徑(注意是虛擬機(jī)中映射的路徑,我這里在上一節(jié)配置的/data/code,我們在本地開發(fā)的時(shí)候會(huì)自動(dòng)同步修改)
運(yùn)行
導(dǎo)出box鏡像文件給別人使用
1.運(yùn)行 vboxmanage list vms 命令,可以看出我們的vagrant下的虛擬機(jī)列表(我的虛擬機(jī)只有一個(gè)box,“vbox_default_1563884434349_3918“。)
$vboxmanagelistvms"vbox_default_1563884434349_3918"{59864f0b-9731-4839-baa2-95d9a6aab731}
導(dǎo)出box鏡像先關(guān)機(jī),再導(dǎo)出。vagrant package是導(dǎo)出box的打包命令
vagrantpackage--basevbox_default_1563884434349_3918--outputcentos7_hanah_environment.box
--base代表本地vbox_default_1563884434349_3918是你要導(dǎo)出的box的名稱--output代表導(dǎo)出centos7_hanah_environment.box表示導(dǎo)出后的box名為centos7_hanah_environment.box,并保存在當(dāng)前目錄下
接下來你會(huì)看到如下內(nèi)容,就是導(dǎo)出成功了
$vagrantpackage--basevbox_default_1563884434349_3918--outputcentos7_hanah_environment.box==>vbox_default_1563884434349_3918:ExportingVM...==>vbox_default_1563884434349_3918:Compressingpackageto:/Users/pzqu/Documents/code/test/vbox/centos7_hanah_environment.box
喝完一瓶奶的功夫就完成了,這取決于你的box的大小,我的box大約900M。這下直接發(fā)給你的朋友,一句命令就獲得了一個(gè)和你完全相同的開發(fā)/測試環(huán)境。
$vagrantboxaddcentos7_hanah_environment./centos7_hanah_environment.box==>box:Boxfilewasnotdetectedasmetadata.Addingitdirectly...==>box:Addingbox'centos7_hanah_environment'(v0)forprovider:box:Unpackingnecessaryfilesfrom:file:///Users/pzqu/Documents/code/test/vbox/centos7_hanah_environment.box==>box:Successfullyaddedbox'centos7_hanah_environment'(v0)for'virtualbox'!
vagrant box add 別名 box名
其他想法
聽起來vagrant所做的這些事情和docker有很多重疊的地方,為什么不直接用docker來做呢?不僅可以一秒啟動(dòng)一個(gè)最適合的環(huán)境,而且又輕量又純凈。
權(quán)衡利弊,vagrant本身并不是虛擬化技術(shù),要把他跑起來還要安裝virtualbox等虛擬化平臺(tái),他更像是虛擬機(jī)的外掛程序、編排工具;針對(duì)的是批量虛擬機(jī)的管理,常常用于瞬間創(chuàng)建一個(gè)開發(fā)環(huán)境。
而docker本身就是虛擬化技術(shù),構(gòu)建迅速,不占用資源;針對(duì)的是應(yīng)用程序的編排,常常用于統(tǒng)一開發(fā)環(huán)境與生產(chǎn)環(huán)境。
說來說去,與其說是vagrant與docker,不如說使用是虛擬化平臺(tái)與容器之間的區(qū)別。
docker還是依賴于系統(tǒng)內(nèi)核,如果內(nèi)核不同,需要重新構(gòu)建。
-
內(nèi)核
+關(guān)注
關(guān)注
3文章
1372瀏覽量
40276 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
914瀏覽量
28160 -
python
+關(guān)注
關(guān)注
56文章
4792瀏覽量
84627
原文標(biāo)題:和重復(fù)搭建開發(fā)環(huán)境說 Bye Bye 之Vagrant
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
評(píng)論