內容簡介
全書共分八部分,按預備篇(第1、2章)、Python篇(第3、4章)、開發基礎(第5、6、7章)、Horizon開發篇(第8、9章)、Nova開發篇(第10章)、Neutron開發篇(第11章)、測試篇(第12章)和擴展篇(附錄A~D)的順序,循序漸進地對OpenStack展開深度剖析。零基礎入門,全方位涵蓋瞭OpenStack的基礎知識,同時結閤大量企業內部資料和實踐案例,適閤作為OpenStack初學者及相關開發人員的參考資料。
目錄
目 錄?Contents
序
前 言
第1章 OpenStack企業工程師的成長
及工作介紹 1
1.1 Horizon界麵工程師的工作內容 1
1.2 Neutron網絡工程師的工作內容 2
1.3 Nova資深工程師的工作內容 3
1.4 本章小結 5
第2章 開發環境的搭建 6
2.1 Windows開發環境的搭建 6
2.1.1 Git的安裝 6
2.1.2 JDK的安裝與配置 12
2.1.3 Python的安裝與配置 15
2.1.4 PyCharm的安裝與配置 19
2.2 Linux開發環境的搭建 24
2.2.1 Vim編輯器 24
2.2.2 PyCharm編輯器 25
2.3 Eclipse開發環境的搭建 26
2.3.1 安裝Eclipse的PyDev插件 26
2.3.2 安裝Eclipse的EGit插件 26
2.4 Launchpad賬號 26
2.4.1 Launchpad賬號注冊 26
2.4.2 上傳SSH keys 27
2.4.3 補充相關賬號與信息 30
2.5 Git的使用 32
2.5.1 設置Git全局配置 32
2.5.2 安裝git-review 工具並驗證 33
2.5.3 提交代碼步驟 33
2.5.4 Git管理流程圖 35
2.6 本章小結 35
第3章 Python語言基礎 36
3.1 Python概述 36
3.2 Python基礎 37
3.2.1 編碼 37
3.2.2 縮進與分隔 37
3.2.3 命名規範 38
3.2.4 注釋 39
3.2.5 執行 39
3.2.6 代碼的調試 40
3.2.7 幫助的使用 41
3.3 Python數據類型 42
3.3.1 變量 42
3.3.2 數字與錶達式 44
3.3.3 字符串和列錶 45
3.3.4 元組 49
3.3.5 字典 50
3.3.6 其他類型 50
3.4 流程控製 51
3.4.1 if語句 51
3.4.2 while循環 52
3.4.3 for循環 53
3.4.4 continue和break 53
3.4.5 異常處理 53
3.4.6 else的特殊用法 54
3.5 函數 55
3.5.1 函數基礎 55
3.5.2 函數參數 55
3.5.3 函數體和返迴值 57
3.5.4 再論類型和循環 58
3.5.5 生成器 60
3.5.6 可調用的變量 62
3.5.7 變量作用域 63
3.6 本章小結 64
第4章 Python模塊 65
4.1 SQLAlchemy 65
4.1.1 安裝 SQLAlchemy 65
4.1.2 使用 SQLAlchemy對數據庫操作 65
4.1.3 使用 ORM 67
4.1.4 完整示例 69
4.2 logging模塊 70
4.2.1 logging的使用 70
4.2.2 若乾重要的概念 71
4.2.3 logging工作流程 73
4.2.4 日誌配置 74
4.3 Eventlet 77
4.3.1 greenlet 77
4.3.2 GreenThread 78
4.4 WSGI 81
4.4.1 RESTful API介紹 81
4.4.2 WSGI簡介 82
4.4.3 簡單的WSGI 83
4.4.4 運行WSGI服務 84
4.4.5 Middleware 86
4.5 PasteDeploy 87
4.5.1 PasteDeploy安裝 87
4.5.2 Paste配置文件 87
4.5.3 改進WSGI 89
4.6 WebOb 90
4.6.1 Python裝飾器說明 90
4.6.2 簡單示例 91
4.6.3 添加自己的中間件 91
4.6.4 其他特性 92
4.7 routes模塊 92
4.7.1 routes模塊概述 92
4.7.2 使用示例 93
4.8 綜閤實例 94
4.9 本章小結 98
第5章 RabbitMQ 99
5.1 RabbitMQ簡介 99
5.2 RabbitMQ流程 101
5.2.1 單嚮發送消息 101
5.2.2 隊列 103
5.2.3 交換 106
5.2.4 路由 109
5.2.5 主題 111
5.2.6 RPC調用 114
5.3 RabbitMQ 持久化 119
5.4 本章小結 120
第6章 DevStack 121
6.1 DevStack介紹 121
6.2 操作係統的安裝與配置 121
6.2.1 VMware虛擬機的配置 121
6.2.2 係統配置 123
6.3 環境準備與配置 126
6.3.1 DevStack準備 126
6.3.2 配置local.conf文件 127
6.4 安裝DevStack 128
6.5 環境驗證 128
6.5.1 登錄驗證 128
6.5.2 創建網絡 130
6.5.3 創建實例 132
6.5.4 驗證實例網絡 134
6.5.5 OpenStack版本 136
6.6 錯誤分析 136
6.6.1 日誌目錄 136
6.6.2 使用Git下載代碼齣錯 137
6.6.3 網絡配置錯誤 137
6.6.4 重新部署 137
6.7 本章小結 138
第7章 開發小試 139
7.1 screen簡介 139
7.1.1 screen的進入 139
7.1.2 screen的使用 140
7.1.3 screen的退齣 142
7.2 API調試 142
7.2.1 API 142
7.2.2 RESTClient工具 145
7.2.3 Curl實驗 151
7.2.4 錯誤分析 155
7.3 OpenStack界麵主題的修改 157
7.3.1 替換logo 157
7.3.2 修改樣式 159
7.4 本章小結 164
第8章 Django框架 165
8.1 安裝Django 165
8.2 Django的架構 169
8.3 創建項目 170
8.3.1 Django管理工具 171
8.3.2 測試站點 172
8.3.3 增加一個APP 174
8.4 使用數據庫 176
8.4.1 連接數據庫 176
8.4.2 創立模型 177
8.4.3 顯示記錄 179
8.5 模闆 180
8.5.1 使用模闆 180
8.5.2 流程分析 182
8.5.3 使用循環 182
8.5.4 模闆繼承 184
8.6 錶單 185
8.6.1 提交錶單(GET方法) 185
8.6.2 提交錶單(POST方法) 186
8.7 存儲數據 187
8.8 錶單對象 188
8.9 admin管理 190
8.9.1 默認管理 190
8.9.2 復雜的模型 191
8.9.3 自定義頁麵 192
8.9.4 Inline顯示 193
8.9.5 列錶頁的顯示 194
8.10 錯誤分析 196
8.11 本章小結 198
第9章 Dashboard的開發 199
9.1 Dashboard概述 199
9.2 源碼解析 200
9.2.1 UI整體結構 200
9.2.2 初識Dashboard 201
9.2.3 項目結構 203
9.3 自定義Dashboard和Panel 207
9.3.1 手工啓動Dashboard工程 207
9.3.2 創建Dashboard 207
9.3.3 創建mypanel 208
9.3.4 編寫代碼 209
9.3.5 驗證代碼 215
9.4 復雜的action table 217
9.4.1 定義view 217
9.4.2 增加URL 219
9.4.3 定義action 220
9.4.4 測試 220
9.5 Horizon開發相關內容 222
9.5.1 漢化 222
9.5.2 workflows 222
9.5.3 JavaScript 224
9.6 錯誤分析 225
9.7 本章小結 227
第10章 Nova組件 228
10.1 組件介紹 228
10.1.1 OpenStack的版本 228
10.1.2 組件的組成 228
10.1.3 組件之間的關係 229
10.1.4 API的使用 230
10.2 虛擬創建過程詳解 230
10.3 Nova源碼分析 233
10.3.1 目錄結構 233
10.3.2 重要目錄詳解 236
10.4 Nova調用關係分析 240
10.4.1 創建虛擬機過程源碼追溯 240
10.4.2 創建虛擬機過程調用流程函數分析 241
10.4.3 Nova和AMQP的關係 243
10.5 開始實踐 246
10.6 API V2.1說明 248
10.6.1 compatibility 249
10.6.2 Validation 249
10.6.3 Microversion 249
10.7 編碼 251
10.7.1 示例編碼 251
10.7.2 官方代碼參考 252
10.7.3 Nova代碼實現示例 258
10.8 調試並修復nova-compute的所有協程卡住的問題 262
10.9 本章小結 269
第11章 Neutron組件 270
11.1 Neutron基礎 270
11.1.1 服務及組件介紹 270
11.1.2 Neutron架構 271
11.1.3 Neutron抽象齣的概念 272
11.1.4 Linux網絡基礎 272
11.2 實例網絡詳解 273
11.2.1 硬件配置及網絡拓撲 273
11.2.2 各個節點服務關係及說明 274
11.2.3 場景舉例 277
11.3 Neutron的源碼分析 282
11.3.1 目錄結構 283
11.3.2 重要目錄詳解 285
11.3.3 Neutron啓動分析 288
11.4 Neutron組件擴展 293
11.4.1 編寫代碼 293
11.4.2 重啓服務 295
11.4.3 測試 296
11.5 本章小結 297
第12章 測試技術 298
12.1 OpenStack測試基礎 298
12.2 單元測試 299
12.3 集成測試 301
12.4 本章小結 303
附錄A Mitaka國內代碼貢獻 304
附錄B Newton新特性 307
附錄C Ocata版本新特性 309
附錄D Git代碼管理命令 314
前言/序言
Preface 前 言為什麼寫這本書從2010年7月至今,OpenStack已經發布瞭15個版本,並成為雲計算基礎架構(IaaS)的事實標準。目前OpenStack也被國內企業接受,包括中國移動通信集團公司、中國電信集團公司、中國銀聯股份有限公司、中國國電集團公司等都在直接或間接使用OpenStack。
隨著雲的普及,越來越多的業務部署並運行在OpenStack雲中,原生的OpenStack的界麵及功能已經遠遠不能滿足需求,有規模的企業尋求定製自己的OpenStack,其中包括界麵的定製、計算和網絡等功能的增強等。而與OpenStack相關的創業公司經過幾年的發展,都已經有瞭自己成熟的産品,這些公司如今不再為溫飽而四處奔波,也已經從“賣人”轉嚮齣售自有産品。隨著OpenStack創業公司規模不斷擴大,原有人員遠遠不能滿足需求,熟悉OpenStack開發的人員更是難尋,除瞭在“雲圈子”尋找人纔外,很大一部分是從Java、C++等專業人纔中進行招聘,這些新人進入公司後,經過一段時間的培訓,纔能逐漸進入OpenStack開發的角色。
缺少OpenStack開發人員的原因主要有以下幾方麵。
1)開發人員首先要熟悉Linux操作係統,然後要熟悉OpenStack的相關概念,同時需要具有OpenStack相關安裝部署經驗。
2)開發人員要有良好的英文基礎,能夠看懂官方的英文文檔。
3)OpenStack的開發語言為Python,很多高校沒有開設相關課程,需要開發人員自己學習。
4)開源軟件需要用到很多開源工具,包括Git、Curl、Jenkins等,這些工具都需要開發人員掌握。
這些條件和要求整閤到一起,難度就陡然增加瞭,一名普通計算機專業的本科畢業生要從事OpenStack開發相關工作,至少要在OpenStack的開發企業中培訓學習3個月左右;而一個雲計算的開發企業,每次招收的畢業生、培養的新人是有限的,加在一起不超過韆人,這些人員遠遠不能滿足市場的需求。由此看來,OpenStack開發人員還是非常緊缺的,其待遇也是很不錯的。
本書的主要內容和特色本書是根據北京海雲捷迅科技有限公司內部培訓教程重新整理編輯而成,內容包括Python語言基礎及開發優化的原則和OpenStack組件及開發方麵的知識,是一本係統、全麵、講解深入的開發類書籍,值得所有Python和OpenStack從業人員學習參考。本書特色如下:
1)有針對性地講解瞭與OpenStack相關的Python專業知識。
2)全方位涵蓋瞭OpenStack的技術知識,包括DevStack、開發基礎、API調用、源碼及結構分析、功能擴展等。
3)堪稱零基礎入門。本書包含詳盡的操作步驟,還有詳細圖示操作指引及錯誤分析,帶領讀者步入OpenStack開發的殿堂。
4)第一次公開OpenStack開發企業內部資料——工程師的成長資料及資深工程師的日常工作記錄,極具參考價值。
本書的知識體係全書共分八個部分:
第一部分(第1、2章):首先以若乾名企業內部OpenStack開發人員的成長曆程為例,講解OpenStack開發人員應具備的知識體係;然後講解瞭基本開發環境的搭建。
第二部分(第3、4章):不同於市麵上的Python教材,本書以企業內部教程為主綫,從企業應用角度講解Python基礎知識、優化原則和OpenStack中Python相關的模塊知識。
第三部分(第5~7章):講述瞭消息隊列、DevStack開發環境及開發的相關知識,其中包含一些基本概念和技巧,是OpenStack開發人員必須掌握的入門知識。
第四部分(第8、9章):本部分首先用很多實例講解瞭Horizon的開發框架Django,然後講瞭Horizon界麵結構,分析瞭Horizon的源代碼,最後用示例完成Horizon的開發測試過程。
第五部分(第10章):本部分首先詳述瞭Nova啓動實例的流程,接著分析瞭Nova的源碼,最後用示例講述瞭微模塊的開發過程。
第六部分(第11章):本部分首先講述瞭OpenStack的部署拓撲和實例的數據流嚮分析,接著對Neutron的啓動流程進行瞭跟蹤分析,最後擴展瞭Neutron的extensions模塊並測試其功能。
第七部分(第12章):本部分主要講述瞭OpenStack測試的相關內容,包含開發人員個人的單元測試和團隊的模塊集成測試技術,為代碼整閤打好基礎。
第八部分(附錄A~D):首先附錄A講述瞭國內企業對OpenStack社區的貢獻;附錄B、C分彆對OpenStack的Newton和 Ocata版本新特性進行瞭說明;附錄D列舉齣Git代碼管理命令供讀者參考,希望可以為讀者指明學習的方嚮。
本書麵嚮的讀者本書適用於想從事OpenStack開發及深入學習OpenStack的相關人員。本書也可以作為OpenStack的培訓教材。
如何閱讀本書OpenStack強調實踐,希望讀者能夠把書中的示例代碼都手動輸入一遍,在輸入運行代碼的過程中可能會齣現輸入錯誤、語法錯誤等,讀者可以自己嘗試獨立解決相關問題,逐漸增加自己的編程經驗。
一定要去閱讀和分析官方的源碼,然後自己嘗試去修改源碼,隻有這樣纔能鍛煉自己的開發能力,逐步成為優秀的OpenStack開發人員。
緻謝本書參考瞭部分官方文檔以及北京海雲捷迅科技有限公司的內部資料,得到瞭該公司周徵晟、張加龍、葉東燦、郭姍、伍軍、徐奡等開發人員的大力支持;還要感謝北京海雲捷迅科技有限公司的張徵宇和李華,在他們的大力支持下本書纔得以完成。
感謝雲技術社區創始人肖力老師,是肖老師推薦瞭華章分社楊福川副主編,還要感謝齣版社其他工作人員,有瞭他們的共同努力,本書纔得以正式齣版。
由於編撰時間有限,加上OpenStack博大精深,版本更迭較快,文中有失效或分析不對的地方還請讀者批評指正。
深度實踐OpenStack:基於Python的OpenStack組件開發 下載 mobi epub pdf txt 電子書
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心
評分
☆☆☆☆☆
可以用一個詞形容我的心情:惡心;四個人寫一本書還寫這麼爛,真的是沒誰瞭。為什麼說爛呢,幾乎所有的python代碼都沒有正確的縮進,也就是說,所有的代碼如果寫到程序裏,都不會正常運行。四個傢夥你們到底行不行,其他的語言,不講究縮進就算瞭,這是python啊,縮進亂瞭,就等於大寫的BUG。定價還那麼貴。這麼不認真,就不要學人傢寫書騙錢,OK?惡心