亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Vagrant部署程序設計類課程實驗教學環(huán)境

        2018-12-07 09:32:18郭海智
        實驗科學與技術 2018年5期
        關鍵詞:宿主機配置文件網卡

        郭 亮 ,郭海智,謝 光

        (三亞學院 理工學院,海南 三亞 572022)

        隨著社會需求及信息技術的發(fā)展,軟件開發(fā)相關的語言、平臺及應用呈現(xiàn)出多樣性。高校計算機類專業(yè)為滿足各類人才培養(yǎng)需求,其應對的程序設計類課程的設置也緊跟其變化,相應的試驗環(huán)境也需跟隨調整。為減少實踐教學過程中各類開發(fā)環(huán)境搭建產生的相互干擾、軟件版本沖突、操作系統(tǒng)差異性和兼容性等引入的諸多問題,當前部分高校機房采用一機安裝多重操作系統(tǒng),并在其中針對特定程序設計類課程建立開發(fā)環(huán)境的方式并不利于教學環(huán)境的靈活調整,以及解決相關配置發(fā)生變化和軟件升級引入等各類問題。隨著作為云計算[1-3]基礎的虛擬化技術[4-5]逐漸成熟,越來越多的教學環(huán)境中引入虛擬化方式是對現(xiàn)有實驗課程建設的有力補充[6-7]。Vagrant作為一種創(chuàng)建和部署虛擬化開發(fā)環(huán)境的開源工具,提供了易于配置、重復性好、便攜式的工作環(huán)境搭建方法,能夠簡化程序設計類教學相關的準備工作,提升實驗室教學實踐環(huán)境的部署能力,有利于教和學的開展。

        1 工具簡介

        Vagrant[8]是Hashicorp公司推出的一款開源DevOps[9]基礎設施工具,是該公司對數(shù)據(jù)中心管理技術研發(fā)系列產品的一部分,支持軟件的持續(xù)交付及持續(xù)部署[10-11]。Vagrant基于Ruby語言建立,通過統(tǒng)一管理 VirtualBox、VMWare、KVM等多種虛擬機系統(tǒng)軟件,以及AWS等多種云計算服務平臺上的VPS,為開發(fā)者提供了控制各類虛擬機的單一接口,如圖1所示。通過該單一接口統(tǒng)一了工作環(huán)境的配置、重構、分享,保證了開發(fā)環(huán)境與實施環(huán)境的一致性。使用者只需通過簡單的一條命令就可基于自定義方式快速搭建所需環(huán)境。

        圖1 Vagrant分層架構

        為此,宿主機需先安裝Git、Virtualbox和Vagrant,獲取Vagrant專用工具打包的虛擬機鏡像Box文件(該文件可通過http://www.vagrantbox.es或https://atlas.hashicorp.com/boxes/search云平臺選取經過測試并廣泛認可的各類Linux基礎鏡像文件后按需加入功能軟件構成,也可以完全自定義構建),然后通過命令Vagrant box add添加鏡像,最后需按特定環(huán)境編寫Vagrantfile配置文件。具體使用中通過Vagrant up、Vagrant ssh及Vagrant halt三條命令完成虛擬機的啟動、登錄和關機操作。

        2 搭建實驗教學環(huán)境

        2.1 準備工作

        以下以網絡編程課程及計算機網絡教學過程為例,對利用Vagrant工具搭建基于真實操作系統(tǒng)的虛擬環(huán)境試驗平臺進行說明。首先使用centos7從頭搭建基礎Box文件,其制作基本過程為用centos7.3在VirtualBox中創(chuàng)建新虛擬機,安裝所需開發(fā)工具,安裝VirtualBox增強功能以滿足共享目錄設置等需要,完成登錄學生user1的創(chuàng)建及其權限設置等基礎設定后,用Vagrant package打包該虛擬機為centos73.box,并執(zhí)行Vagrant box add centos73.box添加到本地Box倉庫。

        2.2 網絡拓撲結構設計

        網絡編程和計算機網絡課程所需的典型實驗環(huán)境的拓撲結構中,至少需要兩臺互聯(lián)的虛擬機以完成網絡通信和數(shù)據(jù)抓包需要,并且宿主機可通過ssh登錄虛擬機以完成代碼編譯及調試運行工作。根據(jù)教學需要還要實現(xiàn)局域網內虛擬機的網絡互聯(lián)以實現(xiàn)一對多的服務測試,拓撲設計如圖2所示。其中,Host代表學生使用的宿主機,Guest代表宿主機上運行的虛擬機。虛擬機通過eth0以NAT模式(網絡地址轉換模式)連接宿主機以方便用戶登錄到server和client完成程序編譯、運行及調試。C/C++網絡程序通過eth1以Host-only模式(主機模式)在虛擬機server和client間運行和測試。所有宿主機中的虛擬機通過eth2以Publicnetwork模式(網橋模式)接入整個教室局域網并可從DHCP服務器獲得ip地址及DNS相關配置信息,以方便網站開發(fā)、網絡聊天等多人參與類程序的驗證和測試。

        圖2 實驗環(huán)境拓撲結構

        2.3 配置文件及說明

        配置文件Vagrantfile采用Ruby語言進行編寫,易于上手。通過配置文件可完成虛擬機的各類設定及網絡配置等工作。依照圖2的實驗環(huán)境拓撲結構設計,相應Vagrantfile配置文件及說明如下:

        01 Vagrant.configure("2")do |config|

        02 config.vm.box="centos73"

        03 config.vm.synced_folder".","/vagrant",disab led:true

        04 config.vm.define"serv"do |serv|

        05 serv.vm.provider"virtualbox"do |v|

        06 v.customize["modifyvm",:id,"--name","serv","--memory","256","--cpus","1"]

        07 end

        08 serv.vm.hostname="server"

        09 serv.vm.synced_folder"serv_share","/home/user1/codes"

        10 serv.vm.network"private_network",ip:"192.168.200.10"

        11 serv.vm.network"public_network",ip:"192.168.19.222",netmask:"255.255.255.0"

        12 #serv.vm.network"public_network"

        13 serv.vm.network"forwarded_port",guest:9090,host_ip:"192.168.1.186",host:9090

        14 end

        15 config.vm.define"clnt"do |clnt|

        16 clnt.vm.provider"virtualbox"do |v|

        17 v.customize["modifyvm",:id,"--name","clnt","--memory","256","--cpus","1"]

        18 end

        19 clnt.vm.hostname="client"

        20 clnt.vm.synced_folder"clnt_share","/home/user1/codes"

        21 clnt.vm.network"private_network",ip:"192.168.200.11",netmask:"255.255.255.240"

        22 clnt.vm.network"public_network",ip:"192.168.19.223",netmask:"255.255.255.0"

        23 clnt.vm.network"forwarded_port",guest:22,host_ip:"192.168.19.186",host:9999

        24 end

        25 end

        代碼第1行設定配置信息以Vagrant配置文件的版本2格式編寫;第2行設定虛擬機系統(tǒng)所對應的本地倉庫中特定Box文件,此處也可改為網絡下載地址;第3行關閉默認的共享目錄設置;第4~第14行對虛擬機server進行配置,其中第5~第7行調用已安裝的虛擬化軟件程序,如VirtrualBox的VBoxManage,完成特定虛擬機的資源分配及其配置,如cpu數(shù)量1,內存大小256 MB以及虛擬機名稱;第8行對虛擬機系統(tǒng)主機名進行設置;第9行建立宿主機和特定虛擬機的同步目錄;第10行安裝網卡eth1配置為主機模式并設定ip地址,如需進行特定子網分配可仿照第21行進行;第11行安裝網卡eth2配置為網橋模式并設定好ip地址;第12行如果局域網配置了DHCP服務器可放開該注釋行以安裝網卡eth3并配置為網橋模式,且設定該網卡以DHCP方式獲取網絡配置信息;第13行配置端口轉發(fā),對虛擬機的9090端口對外暴露為宿主機ip地址上的9090端口,使得局域網內宿主機中的虛擬機上的網絡客戶端程序通過接入宿主機的9090端口連入server端口為9090的網絡服務端程序,方便多人參與類程序的測試;第15~第23行配置虛擬機client,過程與server配置類似,其中,第23行功能類似第13行,通過端口轉發(fā)以192.168.19.186:9999端口暴露虛擬機client的ssh端口,使得外部機器可遠程登錄該虛擬機以進行管理。

        2.4 環(huán)境驗證

        首先下發(fā)上述配置文件到學生機工作目錄test,并在其中建立子目錄serv_share和clnt_share以分別對應共享目錄放置服務器和客戶機的程序代碼,然后在工作目錄運行命令Vagrant up同時啟動server和 client虛擬機,使用命令 Vagrant ssh server和Vagrant ssh client分別登錄到server和client系統(tǒng)中。在server中以 ip address查看網絡配置,特別是驗證第12行配置對啟用DHCP后server的eth3通過dhcp獲得的配置信息。在server中ping 192.168.200.11測試與client通過eth1的連通性,ping 192.168.19.223測試與client通過eth2的連通性,從其他宿主機或其上的虛擬機telent 192.168.1.186 9090或 ssh-p 9999 user1@192.168.19.186測試端口轉發(fā)。在test/serv_share及test/clnt_share中編寫網絡回顯測試程序,驗證共享目錄設定正確。

        2.5 擴展管理

        Vagrant構建的基礎Box文件可能不滿足特定課程的軟件配置需要,此時可在Vagrantfile配置文件中調用外部shell腳本或聯(lián)合Ansible[12]和Puppet[13]等自動化運維工具完成虛擬機的自動化配置管理。如要對上述環(huán)境進行缺省路由配置及telnet軟件的安裝,可在配置文件中加入配置命令 (config.vm.provision"shell"),路徑"script.sh",并在工作目錄中建立script.sh文件加入shell命令:

        01 routedel default

        02 route add defaultgw 10.36.192.1

        03 cat/dev/null>/etc/resolv.conf

        04 echo"nameserver 8.8.8.8">/etc/resolv.conf

        05 echo"nameserver 8.8.4.4">>/etc/resolv.conf

        06 yum install-y telnet>> /tmp/provision.log 2>&1

        上述代碼第1行刪除已建立的缺省路由,第2行添加新的缺省路由,第3行刪除原有dns服務器配置,第4~第5行設定新的 dns服務器配置,第6行完成telnet軟件的安裝并記錄安裝日志。修改配置文件后通過命令Vagrant reload重啟虛擬機即可使得擴展配置生效。

        對于其他程序設計類實驗課程,只需利用上述Box文件作為基礎鏡像,對Vagrantfile配置文件設定虛擬機基本配置、ip地址和端口轉發(fā)設置,修改script.sh以安裝相應編譯工具及庫文件并進行配置,最后下發(fā)Vagrantfile和script.sh到學生機即可。以搭建python web開發(fā)環(huán)境為例,只需在Vagrantfile中配置虛擬機,以Public-network模式添加網卡并設定ip地址加入內網,在script.sh文件最后加入下面三行語句即可。

        sudo yum-y install python-pip

        sudo pip install--upgrade pip

        sudo pip installflask

        3 結束語

        從以上課程所需的實驗搭建過程可見,只需進行很少的部署操作,3~5 min左右就能完成特定開發(fā)環(huán)境的搭建,方法簡單且易于掌握。該方法減少了開發(fā)環(huán)境不一致所導致的各類問題,簡化了實驗室的相關配置工作且擴展性強,方便了學生在其個人電腦上快速完成開發(fā)環(huán)境的搭建并保持與教學環(huán)境的完全一致,有利于學生深入理解課程本身的知識要點。通過共享目錄以及學生已熟悉的開發(fā)環(huán)境,一定程度上降低了學習Linux相關技術的門檻,保障了教學的順利實施。

        猜你喜歡
        宿主機配置文件網卡
        在DDS 中間件上實現(xiàn)雙冗余網卡切換的方法
        提示用戶配置文件錯誤 這樣解決
        搭建簡單的Kubernetes集群
        互不干涉混用Chromium Edge
        Server 2016網卡組合模式
        忘記ESXi主機root密碼怎么辦
        虛擬網絡實驗室在農村職校計算機網絡技術教學中的應用研究
        嵌入式計算機軟件測試關鍵技術的思考
        挑戰(zhàn)Killer網卡Realtek網游專用Dragon網卡
        嵌入式計算機軟件測試關鍵技術研究
        亚洲国产精品久久艾草| 日韩av无码精品一二三区| 欧美激情一区二区三区成人 | 一区二区三区视频在线观看| 亚洲愉拍99热成人精品热久久 | 国产精品麻豆A在线播放| 99久久久久久亚洲精品| 国产日产亚洲系列首页| 日日噜噜夜夜狠狠va视频v| 人妻少妇被猛烈进入中文字幕 | 亚洲aⅴ天堂av天堂无码麻豆| 亚洲亚洲网站三级片在线| 亚洲国产精品成人一区| 日韩精品第一区二区三区| 免费人成网ww555kkk在线| 无码一区二区三区AV免费换脸| 日本经典中文字幕人妻| 成人国产精品一区二区八戒网| 中文无码日韩欧| 国产午夜亚洲精品不卡福利| 国产精品无码久久久久下载| 麻豆成人久久精品二区三区免费| 精品人妻久久一区二区三区| 18禁无遮拦无码国产在线播放| 欧美日韩国产成人高清视| 亚洲天堂av社区久久 | 初尝人妻少妇中文字幕| 亚洲av无码乱码国产精品fc2| 九月色婷婷免费| 亚洲sm另类一区二区三区| 国产精品成人观看视频国产奇米| 欧美肥胖老妇做爰videos| 亚洲国产精品线观看不卡| 亚洲精品一区二区三区四区| 丰满少妇作爱视频免费观看 | 亚洲国产av无码精品无广告| 欧美最猛黑人xxxx黑人表情| 色婷婷久久免费网站| 亚洲丰满熟女一区二亚洲亚洲 | 狼色在线精品影视免费播放 | 欧美顶级少妇作爱|