源碼安裝openstack
A. 雲平台openstack中,cloudinit裝配,使用怎麼解決
雲平台openstack中,cloudinit安裝、使用
cloudinit是專為雲環境中虛擬機的初始化而開發的工具,它從各種數據源讀取相關數據並據此對虛擬機進行配置。常見的數據源包括:雲平台的metadata服務、ConfigDrive等,常見的配置包括:設定虛擬機的hostname、hosts文件、設定用戶名密碼、更新apt -get的本地緩存、調整文件系統的大小(注意不是調整分區的大小)等。
本文在openstack下進行測試。
(1)安裝
centos 6.4和ubuntu server 12.04的官方源中已經包含cloudinit,直接採用yum 或者 apt -get安裝即可
源碼地址:https://launchpad.net/cloud-init
(2)配置
配置文件/etc/cloud/cloud.cfg
user: root
disable_root: 0
manage_etc_hosts: True
preserve_hostname: False
cloud_init_moles:
- bootcmd
- resizefs
- set_hostname
- update_hostname
- update_etc_hosts
- ca-certs
- rsyslog
- ssh
cloud_config_moles:
- mounts
- ssh-import-id
- locale
- set-passwords
- grub-dpkg
- landscape
- timezone
- puppet
- chef
- salt-minion
- mcollective
- disable-ec2-metadata
- runcmd
- byobu
cloud_final_moles:
- rightscale_userdata
- scripts-per-once
- scripts-per-boot
- scripts-per-instance
- scripts-user
- keys-to-console
- phone-home
- final-message
配置文件大致分為兩部分,開頭的變數/參數定義部分、後邊要運行的模塊列表(包括三大類cloud_init_moles、cloud_config_moles、cloud_final_moles)。
各模塊在運行時,會根據之前定義的變數/參數的值,配置虛擬機的狀態。
這里舉一個簡單的例子,update_etc_hosts模塊(源文件:/usr/lib/python2.7/dist-packages/cloudinit/CloudConfig/cc_update_etc_hosts.py)
顧名思義,該模塊用來設置主機的hosts文件,其中就用到了hostname、fqdn、manage_etc_hosts等變數的值。模塊首先嘗試從cloudinit的配置文件中讀取這些變數的值,如果沒有定義,則嘗試從其他的數據源中獲取變數的值,例如對於openstac來講,可以從metadata service(http://169.254.169.254/latest/meta-data/hostname)獲取虛擬機的主機名。
(3)運行流程
cloudinit會在虛擬機啟動的過程中分四個階段運行,按照時間順序分為:cloud-init-local, cloud-init, cloud-config, cloud-final,例如對於centos:
cloud-init-local階段主要是運行本地的一些初始化腳本(緩存下來的腳本??)
cloud-init階段執行配置文件中名為cloud_init_moles下的所有模塊,如果模塊列表為空,則什麼都不運行。其他兩個階段類似,就不介紹了。
分階段執行的必要性在於,有些模塊的執行對系統當前的狀態會有要求(比如網路ready、文件系統掛載over),因此cloudinit抽象出了四個階段,編寫自己的初始化模塊時可以根據情況歸入不同的階段。
另外,模塊有多種運行模式,包括per-once、per-instance、per-always,對於模式為per-once的模塊,一旦運行完畢會在一個名為sem的目錄中創建一個信號文件,從而防止模塊的在下次啟動時重復運行。
B. 怎麼在OpenStack源碼社區貢獻代碼
1、簽署ICLA
注意一定要把信息填全,特別是settings/contact里下面那幾個,如果之前沒有在OpenStack Foundation注冊,會提示注冊。如果是代表公司,郵箱最好是公司(huawei)郵箱。
2、上傳自己的SSH Key
用於通過SSH向gerrit push代碼,方法參見:
3、配置Git Bash
git config --global user.name "XXX"
git config --global user.email "[email protected]"
注意跟gerrit賬戶一致。
4、安裝git-review
5、修改代碼
下載代碼
配置工程感知gerrit:
cd nova
git review -s
首先會確保能使用你的ssh key登錄gerrit,默認使用當前git環境變數配置的用戶,否則,會提示輸入gerrit用戶名,可以通過這個鏈接查看gerrit用戶名。
成功後,會在nova目錄下生成一個.gitreview目錄
先確保代碼是最新的:
git checkout master
git pull
新建分支,如果是blueprint,分支名是「bp/BP-NAME」,其中的BP-NAME是在launchpad上bp的名稱;如果是修復bug,分支明是「bug/BUG-NUMBER」,其中BUG-NUMBER可以在bug頁面上找到:
git checkout -b BRANTCH-NAME
6、提交代碼
在單獨的一行中寫summary(小於50個字元),然後第二段進行詳細的描述。如果是實現bp或修復bug,需註明:
blueprint BP-NAME
bug BUG-NUMBER
一個示例:
Adds some summary less than 50 characters ...Long multiline description of the change... Implements: blueprint authentication Fixes: bug #123456
修改完代碼後,記得跑通UT測試。
然後提交代碼,申請review
git commit -a
git review
7、review
提交review之後,可以查看狀態和信息,自動跑CI,然後代碼檢視專家就可以進行代碼檢視。
如果jenkins報了failure,可以查看日誌排錯。如果確認不是自己的patch導致,可以在comment里留言「recheck no bug」,重新跑test。
8、修改
如果review過程中,發現代碼需要修改,再次提交時直接使用已存在的Change-Id:
git commit -a --amend
git review
C. 源碼安裝openstack 的glance部分,沒有glance命令,怎麼安裝
我也是看到這部分沒有相關命令,我是直接檢查yum list是否有glance包,然後yum安裝glance一次。命令即可出現,並且後面很多配置文件和自啟動文件,包括nova.conf配置文件等等,老男孩都沒有放上去。後面,我都是自己手動寫入到文本引入進去。還是建議樓主,查看官方手冊。
D. ubuntu關機後怎麼重啟OpenStack服務,使用Devstack部署的
1、安裝git:
sudo apt-get install git
這個很簡單吧,但就是這個還著實讓我費了一番力氣。因為我擔心ubuntu初始的源不給力,所以剛安裝好便換成了國內的源,偏偏這國內的源無法安裝git,換了好機會仍然是這樣。(網路連接正常,不清楚為什麼會這樣)只能單獨下載包,然後手動安裝了,手動安裝
其實不難(下載到包,之後執行 dpkg -i <包名>),關鍵是得找對版本。
2、獲取devstack腳本:
git clone https://github.com/openstack-dev/devstack.git
3、執行:
cd devstack && ./stack.sh
腳本執行全程只需要按照提示設置幾個密碼,其他無需干預。我沒有讀腳本的源碼,但是根據執行過程的輸出信息大致總結出了他的執行過程:
(1)下載並安裝Openstack運行所需要的系統軟體,大概包括一些python的組件、mysql、rabbitmq-server等
(2)下載openstack組件,包括nova 、keystone、glance、noVNC、horizon等
(3)下載並安裝openstack源碼所依賴的python庫和框架
(4)安裝openstack各組件
(5)啟動各項服務
在較好的網路環境下,有人用不到十分鍾搞定了整個過程,但是我們公司網路環境不是很好,中間還中斷了幾次,大致都與網路有關。遇到較多的問題就是某些軟體無法下載,好在腳本會比較清楚報出錯誤信息,可以將安裝出錯的軟體手動安裝,之後重新執行腳本(最好不要用國內源,用歐美源應該比較靠譜)。過程雖然不是很順利,但是最後還是成功了,看到了dashboard界面。耗時大約3小時。
E. 如何在windows下安裝openstack的依賴包
本文主要講述在windows系統中如何安裝openstack源代碼的依賴包,以便於在windows操作系統下進行源碼閱讀。為了可以在windows下閱讀openstack源碼,首先我們需要在windows系統下安裝python2.7。安裝好後將python目錄配置到系統的環境變數中(我的電腦->屬性->高級->環境變數)。可以在命令行輸入echo %PATH%觀察系統其值是否發生了變化。如果發生了變化可以繼續安裝pip。如果沒有包括python的路徑則需要注銷電腦,重新登陸或者重啟電腦。
為了完成pip的安裝,首先需要安裝setuptools,下載完成後解壓,然後使用命令行進入到解壓後的目錄,輸入pythonsetup.py install進行安裝。安裝完成後就可以下載pip進行安裝了,其安裝過程與setuptools一樣。在pip安裝完成後,需要修改Path環境變數,將python目錄下的Scripts添加進環境變數。然後參考上一段的做法激活環境變數後就可以使用pip方面地安裝擴展包了。
在完成上面的操作後就可以安裝openstack源代碼中所需要的擴展包的。其安裝命令主要是pip installrequirements.txt 或者pip install-r tools/requirements。至於執行哪個命令要根據openstack組件的源代碼結構而定。
下面主要說明安裝過程可能出現的問題。
1)distutils.errors.DistutilsError: Setup script exited with error:Unable to find vcvarsall.bat
注意:系統可能需要安裝vs2008,因為windows python以來vc++ 2008版本的。
2)UnicodeDecodeError:'ascii' codec can't decode byte 0xb2 in position 0: ordinal not in range
3)以下這些擴展包需要手動安裝或者下載安裝,不能使用pip安裝
A.pyOpenSSL
B.lxml
C.cffi
D.pycparser
E.thrift
F.mysql-python
F. Centos6下安裝openstack yum install -y openstack-utils 會出錯
在你的軟體源裡面沒有這個軟體包,建議你修改軟體源或者下載源碼包編譯安裝
G. 如何學習OpenStack與精通OpenStack好書推薦 00 OpenStack中國社區
如何學習OpenStack與精通OpenStack好書推薦
Joshua
2013-9-25
OpenStack的官方文檔在開源世界裡應該說做得還是很不錯的,如果你只是想隨便跑一下運行一下的話, 看看這些文檔應該足夠了。
但是如果它出問題了呢?由於還未真正懂OpenStack,可能你會感到:
一是解這個問題會很累;
二是經常性的沒有思路,不知道如何下手;
三是花費的時間成本也不會少,會成十上百倍的大增;
四是下次遇到類似的問題可能依然不清楚,依然耽誤時間;
五是由於未理解把不是問題的問題當成問題;
六是由於未理解也容易出方向性問題得不償失;
七是一直看不到系統的全貌與本質始終在一個局部打轉轉,長時間處於惡性循環中;
八是同樣沒有真正理解給別人講的時候也講不明白,問個問題別人都不知道你在問什麼耽誤大家時間;
這樣,無論對於公司還是對於你自己來說都是損失,不會有好效果,對於此類問題,筆者給出的葯方就是系統性學習,沒有捷徑。
可能有人以為,系統性學習看起來在內功修煉未開竅之前會沒有效率,那特錯特錯了,俗話說得好,磨刀不誤砍柴工,你的Skill的提高帶來的將是效率的成幾 何倍數的提升。這也是為什麼IT領域永遠是20%的人干80%的活,看看Linux,看看Hadoop,看看那些創業公司就知道了。
既然從事了碼農這一行,怎麼著都是一個累,但是系統性學習了,開竅了,那就一勞永逸的解決這些問題了,上層再怎麼變,底層的Linux內核或者網路這些知 識卻不會變,並且萬變不離其蹤,有了這些底層牢靠的基礎,是非常容易理解上層的變動的。這就會步入良性循環,你算算這其中的好處帳吧,呵呵。
下面是筆者這一年半學習OpenStack的歷程,僅供參考:
1,首先隨便找幾篇架構方面的理論文章,心裡清楚它是干什麼的。
2,看代碼之前,首先得會用。會用可以看官方的文檔,我反正是沒看,因為早期的文檔並不像現在這么豐富。我直接看的devstack的腳本,照著它那腳本一步步手工源碼安裝一遍之後就基本能解決所有的安裝使用方面的最基礎的問題了。
3,做為一個程序員,首先debug得先行,使用pydev創建開發環境,在debug的過程中,你就知道它的運行流程了,當然現在有文檔講它的運行流程,但早期也少見啊。再怎麼著,也沒有你自己debug一遍來的印象深吧。
4,稍微fix一些bug,任何一個小bug都會把你帶到實際代碼之中去,遇到很多腳踏實地的問題。但是這個不用太多,因為你還要省時間出來系統性學習消化了。
5,多review社區那些高質量的代碼,尤其是看那些對你理解代碼有代表性的patch。每一個patch背後都會有它的背景知識,這個就需要系統性的學習了,剛開始一兩周可能稍微影響效率一點,但接下來馬上帶來的效率提升就會大豐收了,絕對是劃算的買賣。
6,反復地看,反復的加深印象,好記性不如爛筆頭,慢慢隨著你知識的廣度的提高,你就能隨意觸類旁通了。如果再有機會對某一領域進行深度的探索時,你也總能把握住方向,出了問題就從理論上都能想像得到可能問題出在哪個環節,站得高,看得遠,還輕松。
這期間筆者也系統性地學習了下列25本書,不包括電子文檔等。基本原則就是:
1,想精通python的話,隨便找本python的書花個半天時間了解一下就可以開始寫代碼瞭然後遇到什麼回過頭來再翻閱什麼就行了,然後想精通 python的話最應該看的是C編程的書,如UNIX編程的大塊頭,慢慢啃吧,神馬進程死鎖啊,同步啊等等思想都在里頭了,因為技術都是相通的,當然,世 間萬事萬物都是相通的,技術和非技術也是通著的。
2,學OpenStack當然要看OpenStack的代碼,但也不是全看,筆者在之初就很少直接盯著看Neutron的代碼,而是系統性學習它背後的知 識,然後再回過頭來你就會發現原來這些代碼都是按你心裡預想的步驟來寫的。舉個例子,筆者最初想評審IPSec VPN的代碼,直接上去看肯定看不懂,算了,不看了,回過頭先花半天系統性過一下IPSec的理論與Linux下的IPSec的具體實現 strongwan的用法,再花一個小時回過頭來仔細研究代碼,你就會發現這些代碼都是順著你的思路來走的,這樣又能review到點子上,也節省時間, 更輕松人不累,還能學到東西。我相信你直接一上來就對著這個patch干看,不系統的話,估計看兩天也是一知半解吧,就像社區某些不是很懂的人一樣看不懂 又要量化的數字就盡提一些莫名其妙的python的用法相關的comment。又累又沒效果也沒學到什麼東西。Python也就是一個殼,掌握它遠沒有掌 握裡面的領域知識更有意義。社區的有些core他們永遠被那些量化的數字糾纏著,有美麗的光環,但很少有時間來掌握領域知識的,頂多多熟悉了點 python了而已,不熟悉,又要評審,就只能莫名的-2,不能服眾,影響了組件的穩定性,延遲了openstack在企業的部署。
總之,系統性最重要,那才是正規軍,非游擊隊。
這些書包括:
1, Computer network, version 5, the teaching material of the university of China, Publishing House of Electronics Instry, Xie Xiren
2, IPv6 technology, Publishing House of Tsinghua University, Huawei company
3, Cloud computing, second editon, Publishing House of Electronics Instry, Liupeng
4, Got Git: The Deinitive Guide of Git, China Machine Press, Jiang Xin
5, Python Core Program, PRENTICE HALL, Wesley J. Chun
6, The Python Standard Library by Example, Doug Hellmann
7, The storage network technology and application, Publishing House of Tsinghua University, Lu Shiwen
8, Network Warrior, O』REILLY, Gary A. Donahue
9, Network traffic monitoring and control, www.buptpress.com, Liu Fang
10, IPSec VPN design, ciscopress.com, Vijay Bollapragada, Mohamed Khalid, Scott Wainner
11, MPLS and VPN Architectures, ciscopress.com, Ivan PepeInjak, Jim Guichard
12, Technology & Practice of Network attack & defense, Publishing house of electronics instry, Zhuge Jianwei
13, The Principles & Practive of Virtualization Technology, Publishing house of electronics instry, Guang Xiaoming
14, Operating systems Internals and Design Principles, Sixth Editioin, William Stallings
15, Linux Kernel Development Third Edition, PEARSON Ecation, Robert Love
16, Understanding Linux network Internals, O』REILLY, Christian Benvenuti
17, Linux Device Drivers, O』REILLY, Jonathan Corbet, Alessandro Rubini & Greg Kroah-Hartman
18, Linux Kernel Hacks, O』REILLY, Munehiro IKEDA, Naohiro Ooiwa, Hiroshi Shimanmoto, Akio Takebe
19, Understanding the Linux kernel, Third Edition, O」REILLY, Daniel P. Bovet & Marco Cesati
20, Advanced Programming in the UNIX Environment Second Edition, TURING PEARSON, W. Richard Stevens Stephen A. Rago
21, Embedded Linux Primer, A Practica Real-World Approach, Second Edition, TURING PEARSON, Christopher Hallinan
22, Understanding the Eembedded Linux Device Driver Program, Publishing House of Electronics Instry, Cao Guohui
23, Custom your Own Linux System Step by Step, Posts & Telecom Press, Sun Haiyong
24, Puppet Master, Orion Children』s, Joanne Owen
25, Linux Iptable Firewall
H. 「openstack」自動化部署有哪些工具
Fuel比較值得推薦
這是Mirantis出品的部署安裝工具,2013年10月份,推出他的3.2版本,讓人很震撼,基本算是把Openstack所有的部署都web化,你可以太多的選擇:尤其是網路,存儲。這基本都是大家學習的榜樣。已經敢和企業簽訂SLA。
目前國內杜玉傑,九州雲,在做該項目的漢化工作和考慮日後的技術支持。
Devstack
這應該算是Openstack最早的安裝腳本,他是通過直接git源碼,進行安裝,目的是讓開發者可以快速搭建一個環境。目前這套腳本可以在Ubuntu和Fedora下跑的很好。
如果你想了解新版本的功能,通過Devstack是一個最佳選擇。我第一次成功安裝Openstack,就是用這個。
Diablo安裝腳本
這算是我知道的第一個基於ubuntu 源的安裝腳本,當時Diablo發布的時候,有bug,keystone和Horizon無法一起工作,ubuntu 11.10源里的包也是有相同的bug,並且Ubuntu 官方並不打算維護和升級。這位作者個人身份,維護了Diablo 版本後來的升級,打包,並且寫了一套腳本。
這套腳本,其實寫的非常好,我同事改造了一下,就可以安裝Essex版本。目前正在改進,用來安裝Folsom版本。
Stackops
Openstack起步的時候,官方的安裝文檔,其實基本都是來自Stackops,當時他們提供Openstack的部署服務。你下載一個iso,裝完一個ubuntu系統後,就會轉到他們的web,你填寫相關的配置參數,通過chef進行部署。
Stackops在Chef上是比較強悍的,包括Dell的Crowbar,也是和他合作,才搞定Chef。不過我的理解,他的Chef 腳本是沒有開源的。
Stackops通過商業定製,進行收費。目前感覺有點走下坡路,業內的聲音比較小了。對openstack的新版本支持比較慢,Essex支持,到9月份才支持。目前還沒有任何關於Folsom 的支持。
Crowbar
在Openstack上,Dell是有點郁悶,中國的那句老話,起個大早,趕個晚集。Openstack剛發布的時候,Dell就號稱要做一個工具部署,不過畢竟是硬體公司,對軟體還是比較外行。
Dell的Crowbar,是一個iso,裝完後,你可以在web界面進行Openstack的部署,底下其實也是使用Chef。集成了Nagios監控,安裝OS是dell自己開發的,有點創新。
以前Dell的Crowbar一個大的特色就是可以遠程設置機器的Raid和Bios,這是從Dell,我才知道可以這樣做。不過也正因為這個特色,導致廠商綁定,還有Dell自己如何定位Crowbar,當初還想搞一個商業的版本,結果後來放棄。
Crowbar目前的開發,其實應該是遇到問題,任何做部署工具的,應該都是一個很好的失敗的案例。後續的發展,維護,更新都是問題。
Maas+Juju
這是Canonical推出的部署工具,可以用在Openstack的部署,類似Puppet,Chef 的部署工具。Maas是用於安裝ubuntu,juju是用於部署應用。
I. openstack自動化部署有哪些工具
Fuel比較值得推薦
這是Mirantis出品的部署安裝工具,2013年10月份,推出他的3.2版本,讓人很震撼,基本算是把Openstack所有的部署都web化,你可以太多的選擇:尤其是網路,存儲。這基本都是大家學習的榜樣。已經敢和企業簽訂SLA。
目前國內杜玉傑,九州雲,在做該項目的漢化工作和考慮日後的技術支持。
Devstack
這應該算是Openstack最早的安裝腳本,他是通過直接git源碼,進行安裝,目的是讓開發者可以快速搭建一個環境。目前這套腳本可以在Ubuntu和Fedora下跑的很好。
如果你想了解新版本的功能,通過Devstack是一個最佳選擇。我第一次成功安裝Openstack,就是用這個。
Diablo安裝腳本
這算是我知道的第一個基於ubuntu 源的安裝腳本,當時Diablo發布的時候,有bug,keystone和Horizon無法一起工作,ubuntu 11.10源里的包也是有相同的bug,並且Ubuntu 官方並不打算維護和升級。這位作者個人身份,維護了Diablo 版本後來的升級,打包,並且寫了一套腳本。
這套腳本,其實寫的非常好,我同事改造了一下,就可以安裝Essex版本。目前正在改進,用來安裝Folsom版本。
Stackops
Openstack起步的時候,官方的安裝文檔,其實基本都是來自Stackops,當時他們提供Openstack的部署服務。你下載一個iso,裝完一個ubuntu系統後,就會轉到他們的web,你填寫相關的配置參數,通過chef進行部署。
Stackops在Chef上是比較強悍的,包括Dell的Crowbar,也是和他合作,才搞定Chef。不過我的理解,他的Chef 腳本是沒有開源的。
Stackops通過商業定製,進行收費。目前感覺有點走下坡路,業內的聲音比較小了。對openstack的新版本支持比較慢,Essex支持,到9月份才支持。目前還沒有任何關於Folsom 的支持。
Crowbar
在Openstack上,Dell是有點郁悶,中國的那句老話,起個大早,趕個晚集。Openstack剛發布的時候,Dell就號稱要做一個工具部署,不過畢竟是硬體公司,對軟體還是比較外行。
Dell的Crowbar,是一個iso,裝完後,你可以在web界面進行Openstack的部署,底下其實也是使用Chef。集成了Nagios監控,安裝OS是dell自己開發的,有點創新。
以前Dell的Crowbar一個大的特色就是可以遠程設置機器的Raid和Bios,這是從Dell,我才知道可以這樣做。不過也正因為這個特色,導致廠商綁定,還有Dell自己如何定位Crowbar,當初還想搞一個商業的版本,結果後來放棄。
Crowbar目前的開發,其實應該是遇到問題,任何做部署工具的,應該都是一個很好的失敗的案例。後續的發展,維護,更新都是問題。
Maas+Juju
這是Canonical推出的部署工具,可以用在Openstack的部署,類似Puppet,Chef 的部署工具。Maas是用於安裝ubuntu,juju是用於部署應用。