摘要:而且恰巧接觸到了強(qiáng)大的,所以經(jīng)過(guò)不斷的摸索,我最終能夠利用非常方便對(duì)自己的代碼進(jìn)行調(diào)試。但是其他的組件應(yīng)該也是適用,特別是除外與不依賴于特定環(huán)境的組件。安裝目前支持,和。我們暫且先用后者做一個(gè)自己的鏡像,并以調(diào)試為例。
背景
從工作開(kāi)始就一直做openstack的開(kāi)發(fā),期間經(jīng)歷了做私有云的開(kāi)發(fā),到現(xiàn)在在做公有云網(wǎng)絡(luò)控制器的開(kāi)發(fā)。開(kāi)發(fā)調(diào)試的時(shí)候,最讓我頭疼的是不是調(diào)試代碼和找bug。而是將自己改動(dòng)的OpenStack部署到測(cè)試環(huán)境進(jìn)行測(cè)試,哪怕是一個(gè)簡(jiǎn)單的業(yè)務(wù)邏輯修改?;旧?0%以上的時(shí)間都花在了部署環(huán)境上。由于后面要開(kāi)發(fā)的業(yè)務(wù)邏輯實(shí)在太多,時(shí)間太短。而且恰巧接觸到了強(qiáng)大的docker,所以經(jīng)過(guò)不斷的摸索,我最終能夠利用docker非常方便對(duì)自己的Neutron代碼進(jìn)行調(diào)試。方便到什么程度?只要不與數(shù)據(jù)傳輸層相關(guān),neutron業(yè)務(wù)代碼的調(diào)試就如本地調(diào)試python腳本一樣。再也不需要部署任何環(huán)境,甚至都不需要安裝。由于我現(xiàn)在只做OpenStack neutron的開(kāi)發(fā),以下的介紹都基于neutron。但是其他的OpenStack組件應(yīng)該也是適用,特別是除nova外與不依賴于特定環(huán)境的組件。
基本思路利用docker的共享volume將自己的neutron代碼庫(kù)映射到容器里面,在容器內(nèi)部再將這些代碼軟連接到python的dist-packages里面。如果這一步軟連接都想省掉,則可以將本地代碼庫(kù)直接映射到容器的dist-packages里面。由于容器內(nèi)的代碼與本地主機(jī)是共享的,所以本地的修改可以自動(dòng)應(yīng)用容器里面。這意味著,你用pycharm修改了neutron的一個(gè)業(yè)務(wù)邏輯,只要在容器里將對(duì)應(yīng)的neutron服務(wù)重啟即可。
開(kāi)發(fā)環(huán)境目前我的開(kāi)發(fā)環(huán)境是基于mac os,開(kāi)發(fā)工具是pycharm。但是本套調(diào)試方案也可以基于windows和linux。
安裝dockerDock目前支持windows,mac os和linux。其中windows server2016和linux都支持native模式。windows 10和mac os只能靠虛擬機(jī)里面的docker模式支持。以下是安裝方法:
Docker for Mac (macOS)
Docker for Windows (Microsoft Windows 10)
Ubuntu
CentOS
Windows native
制作鏡像注:windows的命令行是cmd,為了方便使用,建議下載一個(gè)方便的命令行工具,比如babun。
制作docker鏡像可以通過(guò)dockerfile,也可以使用base鏡像自己根據(jù)需要安裝好必要的工具后,再commit成一個(gè)新的鏡像。我們暫且先用后者做一個(gè)自己的鏡像,并以調(diào)試neutron為例。
下載鏡像
docker pull ubuntu:latest
運(yùn)行容器
docker run -it -v /your_neutron_repo:/neutron ubuntu:latest bash
安裝必要的軟件
運(yùn)行容器后,我們安裝一些必要的軟件.比如pip,git,telnet等等你后面覺(jué)得你會(huì)在debug code用的上的一些工具。但是最重要的是要把neutron的依賴包給裝上。
cd /neutron;pip install -r requirements
保存鏡像
docker commit container_id neutron:latest在容器里運(yùn)行neutron-server 啟動(dòng)容器
docker run -it -v /your_neutron/repo:/neutron/ -v /your_neutron_confs:/confs/ -p 9696:9696 --hostname server --name neutron_server neutron:lastest bash
配置-v選項(xiàng)是docker volume共享功能,可以將本地的文件夾映射到容器內(nèi)部,前面本地文件夾,后面是容器內(nèi)部的路徑.”your_neutron_confs"是neutron的配置文件(neutron庫(kù)里的etc/*.conf文件和*.ini文件),包含了mq的連接信息,mysql的連接信息等。之所把這個(gè)映射進(jìn)去是為了方便在外面修改這些配置文件,并將這些配置文件共享給其他的容器(比如dhcp-agent),
-p選項(xiàng)是docker的端口映射功能,由于neutron的api使用的9696端口,所以我們必須把容器內(nèi)部的9696端口映射出來(lái)。和-v一樣,前面的port是本地的port,后面的port是容器內(nèi)部的port
--hostname是指定容器的honstname
--name是指定容器的名稱
進(jìn)入容器后,我們先用install一下neutron的代碼,這樣的話可以在bin下生成neutron-server等可執(zhí)行文件。
cd /neutron;python setup.py install
刪除dist-packages下面的neutron代碼,并做好軟連接:
rm -rf /usr/local/lib/python2.7/dist-packages/neutron ln -s /neutron/neutron /usr/local/lib/python2.7/dist-packages/neutron啟動(dòng)服務(wù)
上面的都完成后就可以啟動(dòng)neutron-server了。
neutron-server --config-file /confs/neutron.conf
至此,neutron-server就已經(jīng)起來(lái)了。而你的代碼修改只是在本地的pycharm里面做即可,修改代碼后,想調(diào)試,直接將容器的服務(wù)重啟下就可以了。
Tips每次用完容器,可以不用刪除容器,下次直接start,再attach即可。這樣速度快,而且不用重新開(kāi)啟容器。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27043.html
摘要:本次分享給大家?guī)?lái)與能夠融合使用的一些玩法。計(jì)算節(jié)點(diǎn)的進(jìn)程不能在運(yùn)行在中。部署的過(guò)程需要拉取很多鏡像,需要耐心的等待。之前的計(jì)劃應(yīng)該是在版會(huì)添加的支持,差不多就是今年月份左右。 OpenStack是開(kāi)源Iaas云的事實(shí)標(biāo)準(zhǔn),功能大而全,除了能管理虛機(jī)同時(shí)也能管理容器,OpenStack項(xiàng)目中的Magnum、Kuryr、Kolla、Murano、Nova-docker等都是與容器場(chǎng)景很不...
摘要:本文并非虛擬化的科普文章,主要將我們?cè)谒接性茖?shí)踐過(guò)程中的一些思想和遇到的問(wèn)題拿出來(lái)跟大家討論分享。我們虛擬化實(shí)踐包含了傳統(tǒng)的基于協(xié)議的以及目前流行的。 引言 這里的虛擬化等于私有云。本文并非虛擬化的科普文章,主要將我們?cè)谒接性茖?shí)踐過(guò)程中的一些思想和遇到的問(wèn)題拿出來(lái)跟大家討論分享。我們虛擬化實(shí)踐包含了傳統(tǒng)的基于libvirt協(xié)議的KVM以及目前流行的docker。 為什么要虛擬化 虛擬化...
摘要:彼時(shí),從虛擬化管理到公有云,熱鬧異常。雖然年才明顯放棄公有云的全面競(jìng)爭(zhēng),但在年決定發(fā)起和開(kāi)源項(xiàng)目是,不說(shuō)明確,至少已經(jīng)隱隱覺(jué)得肯定搞不過(guò)亞馬遜了。年前賣的多火,被視為虛擬主機(jī)的升級(jí)版。當(dāng)然不是新堆棧,而是傳統(tǒng)堆棧。 還記得在十多年前,SaaS鼻祖SalesForce喊出的口號(hào)『No Software』嗎?SalesForce在這個(gè)口號(hào)聲中開(kāi)創(chuàng)了SaaS行業(yè),并成為當(dāng)今市值460億美元的Saa...
摘要:開(kāi)源云平臺(tái)中的拼圖玩具對(duì)于云平臺(tái),如今基本就意味著開(kāi)源。明與暗角力開(kāi)源云平臺(tái)中的拼圖玩具為什么會(huì)產(chǎn)生這種混淆正如之前談到由兩大部分組成和的計(jì)算引擎。 開(kāi)源云平臺(tái)中的拼圖玩具?對(duì)于云平臺(tái),如今基本就意味著開(kāi)源。提及開(kāi)源技術(shù),著實(shí)在云計(jì)算和大數(shù)據(jù)下火起來(lái)。面對(duì)撲面而來(lái)的云服務(wù),無(wú)論是何種服務(wù)對(duì)于企業(yè)和用戶來(lái)說(shuō)都是熟悉的陌生人,熟悉是因?yàn)橹涝朴?jì)算的人都能說(shuō)出IaaS、PaaS和SaaS這幾個(gè)詞,...
閱讀 1878·2019-08-30 15:53
閱讀 3204·2019-08-30 15:44
閱讀 2813·2019-08-26 13:31
閱讀 1957·2019-08-26 12:10
閱讀 802·2019-08-26 11:01
閱讀 2133·2019-08-23 15:32
閱讀 1590·2019-08-23 13:43
閱讀 2545·2019-08-23 11:58