深度實踐OpenStack基于Python的OpenStack組件開發》

      網友投稿 1458 2022-05-30

      云計算與虛擬化技術叢書

      深度實踐OpenStack:

      基于Python的OpenStack組件開發

      喻 濤 田 亮 張家龍 趙利軍 李 飛 著

      Foreword 序

      2014年年底,我在從事OpenStack工作兩年多之后第一次在北京環球貿易中心接觸到了李華和他們的海云團隊,之后我們團隊與海云也有過多次技術交流,我個人也聆聽過李華對OpenStack現實困境和未來發展的各種看法。我被李華和他們創業團隊的遠見,以及在云計算事業里的決斷氣魄而折服,也為他們在OpenStack領域的低調實干精神感到欽佩。

      后來,由于英特爾公司對海云捷迅公司的投資關系,我們英特爾研發團隊與海云創業團隊形成了穩定的合作模式,建立了穩固的合作關系,在工作中發展了深厚的友誼。我們主要在上游社區負責英特爾平臺相關的功能開發,而海云除了開發OpenStack功能之外,更多是要在客戶那邊負責OpenStack部署和實施。也正是因為這樣,我們也從海云那邊得到了第一手客戶需求信息和部署實施經驗。

      2015年年中,李華毫不吝嗇地送給我一本內部交流資料用于學習。該內部交流資料是培訓企業運維人員,如何一步一步在企業內部用OpenStack部署工具,從零開始搭建云計算系統的,內容基本覆蓋了所有OpenStack關鍵項目的基礎用法,非常接地氣。對于我這樣一名以OpenStack代碼開發出身的開發人員來說,受益良多。而且我們研發團隊圍繞著固定幾個關鍵項目進行開發,很難接觸到OpenStack全局,也很少有機會接觸到為支撐一個企業內部私有云所需的所有OpenStack組件的工作原理,這本內部交流資料使我拓寬了視野,增長了見識。

      這次欣聞海云即將出版這本書,并將用于企業培訓,我特別期待它能早日面世。從李華那里拿到電子版后,我快速瀏覽了一遍,它除了會講述OpenStack那些子項目的用法之外,還有眾多的背景介紹,比如KVM、Open vSwitch和Ceph等,甚至還有海云部署案例分析。這本書的內容比我當年拿到的內部交流資料的內容還要豐富和完整,在感謝海云對OpenStack社區慷慨分享的同時,我相信讀者一定能從書中學到更全面、更深入的OpenStack知識,并運用到自己的生產部署和實踐開發中。

      王慶 博士

      OpenStack基金會個人獨立董事

      英特爾開源技術中心網絡和存儲部門開發經理

      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博大精深,版本更迭較快,文中有失效或分析不對的地方還請讀者批評指正。

      目  錄?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

      《深度實踐OpenStack:基于Python的OpenStack組件開發》

      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

      OpenStack 云計算

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:PyQt 布局:創建具有專業外觀的 GUI 應用程序
      下一篇:微服務下使用GraphQL構建BFF
      相關文章
      亚洲国产日韩在线人成下载| 亚洲成a人片在线观看无码专区| 亚洲精品tv久久久久久久久| 国产成人综合亚洲| 亚洲精品一二三区| 亚洲成人网在线观看| 亚洲视频一区二区在线观看| 久久久久久亚洲精品中文字幕| 国产亚洲精品国产| 久久亚洲国产精品| 亚洲av女电影网| 激情内射亚洲一区二区三区| 亚洲综合在线视频| 久久久久亚洲AV成人无码网站| 亚洲AV区无码字幕中文色| 无码乱人伦一区二区亚洲一| 亚洲AV综合色区无码另类小说| 狠狠色伊人亚洲综合成人| 亚洲国产精品一区第二页| 亚洲AV无码乱码国产麻豆穿越 | 亚洲免费二区三区| 亚洲w码欧洲s码免费| 国产成人亚洲合集青青草原精品 | 国产成人综合亚洲一区| 亚洲av无码天堂一区二区三区| 亚洲Av无码乱码在线znlu| 亚洲精品老司机在线观看| 国产亚洲大尺度无码无码专线| 亚洲午夜未满十八勿入网站2| 久久伊人久久亚洲综合| 亚洲激情黄色小说| 最新国产精品亚洲| 朝桐光亚洲专区在线中文字幕| 亚洲国产精品尤物YW在线观看| 亚洲中文字幕在线第六区| 亚洲国产日韩一区高清在线| 亚洲人成伊人成综合网久久| 亚洲人成色4444在线观看| 亚洲成年看片在线观看| 亚洲精品二区国产综合野狼| 久久精品九九亚洲精品|