內容簡介
本書從零開始講解Python自動化運維工具和及其使用,通過上百個實際運維場景案例,幫助讀者理解並掌握自動化運維技術。本書分為16章,內容包括Python自動化運維概述、Python基礎運維技能、實戰多進程、實戰多執行緒、實戰協程、自動化運維工具(Ansible)、定時任務模組(APScheduler)、執行遠程命令的工具(Paramiko)、任務調度神器(Airflow)、分散式任務佇列(Celery)、Docker容器技術、主流的自動化配置工具、開源配置管理平台搭建、統一監控平台Zabbix、運維開發技術、DevOps方法論等。本書內容詳盡、示例豐富,適合廣大從事Python運維開發的初學者學習和參考,同時也可作為高等院校和培訓機構計算機及其相關專業的教材使用。
作者簡介
鄭征,計算機專業畢業,碩士,師從李雲飛教授,曾發表論文兩篇,獲兩項實用新型專利。工作多年來一直致力於運維開發及數據分析,從事銀行資料庫、作業系統、大型軟體系統相關的運維及開發工作,擅長Python、Shell、SQL。對自動化運維、監控、調度工具、資料庫技術有過細緻的研究,是Python語言的狂熱愛好者。長期專注於Python運維程式開發,致力於解決運維工作過程中的實際問題,提高運維工作的效率,減輕運維工作的負擔。
目錄
第1章 自動化運維與Python 1
1.1 自動化運維概述 1
1.1.1 自動化運維勢在必行 1
1.1.2 什麼是成熟的自動化運維平台 2
1.1.3 為什麼選擇Python進行運維 2
1.2 初識Python 6
1.3 Python環境搭建 6
1.3.1 Windows系統下的Python安裝 6
1.3.2 Linux系統下的Python安裝 9
1.4 開發工具介紹 13
1.4.1 PyCharm 13
1.4.2 vim 17
1.5 Python基礎語法 20
1.5.1 數字運算 20
1.5.2 字元串 22
1.5.3 列表與元組 27
1.5.4 字典 29
1.5.5 集合 31
1.5.6 函式 33
1.5.7 條件控制與循環語句 34
1.5.8 可疊代對象、疊代器和生成器 38
1.5.9 對象賦值、淺複製、深複製 42
1.6 多個例子實戰Python編程 46
1.6.1 實戰1:九九乘法表 46
1.6.2 實戰2:發放獎金的梯度 47
1.6.3 實戰3:遞歸獲取目錄下檔案的修改時間 48
1.6.4 實戰4:兩行代碼查找替換3或5的倍數 49
1.6.5 實戰5:一行代碼的實現 50
1.7 pip工具的使用 50
第2章 基礎運維技能 53
2.1 文本處理 53
2.1.1 Python編碼解碼 53
2.1.2 檔案操作 57
2.1.3 讀寫配置檔案 64
2.1.4 解析XML檔案 66
2.2 系統信息監控 73
2.3 檔案系統監控 78
2.4 執行外部命令subprocess 80
2.4.1 subprocess.run()方法 80
2.4.2 Popen類 82
2.4.3 其他方法 83
2.5 日誌記錄 83
2.5.1 日誌模組簡介 84
2.5.2 logging模組的配置與使用 85
2.6 搭建FTP伺服器與客戶端 91
2.6.1 搭建FTP伺服器 91
2.6.2 編寫FTP客戶端程式 95
2.7 郵件提醒 96
2.7.1 傳送郵件 96
2.7.2 接收郵件 101
2.7.3 將報警信息實時傳送至信箱 103
2.8 微信提醒 108
2.8.1 處理微信訊息 108
2.8.2 將警告信息傳送至微信 112
第3章 實戰多進程 115
3.1 創建進程的類Process 115
3.2 進程並發控制之Semaphore 119
3.3 進程同步之Lock 120
3.4 進程同步之Event 122
3.5 進程優先權佇列Queue 124
3.6 多進程之進程池Pool 125
3.7 多進程之數據交換Pipe 126
第4章 實戰多執行緒 129
4.1 Python多執行緒簡介 129
4.2 多執行緒編程之threading模組 133
4.3 多執行緒同步之Lock(互斥鎖) 136
4.4 多執行緒同步之Semaphore(信號量) 138
4.5 多執行緒同步之Condition 139
4.6 多執行緒同步之Event 140
4.7 執行緒優先權佇列(queue) 142
4.8 多執行緒之執行緒池pool 143
第5章 實戰協程 145
5.1 定義協程 145
5.2 並發 147
5.3 異步請求 148
第6章 自動化運維工具Ansible 153
6.1 Ansible的安裝 153
6.2 Ansible配置 154
6.3 inventory檔案 155
6.4 Ansible ad-hoc模式 157
6.5 Ansible playbooks模式 165
第7章 定時任務模組APScheduler 169
7.1 安裝及基本概念 169
7.1.1 APScheduler的安裝 169
7.1.2 APScheduler涉及的幾個概念 169
7.1.3 APScheduler的工作流程 170
7.2 配置調度器 172
7.3 啟動調度器 175
7.4 調度器事件監聽 179
第8章 執行遠程命令的工具Paramiko 182
8.1 介紹幾個重要的類 182
8.1.1 通道類 182
8.1.2 傳輸類 183
8.1.3 SSHClient類 184
8.2 Paramiko的使用 185
8.2.1 安裝Paramiko 185
8.2.2 基於用戶名和密碼的SSHClient方式登錄 185
8.2.3 基於用戶名和密碼的Transport方式登錄並實現上傳與下載 186
8.2.4 基於公鑰密鑰的SSHClient方式登錄 187
8.2.5 基於公鑰密鑰的Transport方式登錄 188
第9章 分散式任務佇列Celery 189
9.1 Celery簡介 189
9.2 安裝Celery 191
9.3 安裝RabbitMQ或Redis 192
9.3.1 安裝RabbitMQ 192
9.3.2 安裝Redis 193
9.4 第一個Celey程式 194
9.5 第一個工程項目 197
9.6 Celery架構 201
9.7 Celery 佇列 202
9.8 Celery Beat任務調度 205
9.9 Celery 遠程調用 206
9.10 監控與管理 209
9.10.1 Celery命令行實用工具 209
9.10.2 Web實時監控工具Flower 212
9.10.3 Flower的使用方法 213
第10章 任務調度神器Airflow 217
10.1 Airflow簡介 217
10.1.1 DAG 218
10.1.2 操作符——Operators 218
10.1.3 時區——timezone 219
10.1.4 Web伺服器——webserver 219
10.1.5 調度器——schduler 220
10.1.6 工作節點——worker 220
10.1.7 執行器——Executor 220
10.2 Airflow安裝與部署 220
10.2.1 線上安裝 221
10.2.2 離線安裝 223
10.2.3 部署與配置(以SQLite為知識庫) 223
10.2.4 指定依賴關係 228
10.2.5 啟動scheduler 228
10.3 Airflow配置MySQL知識庫和LocalExecutor 229
10.4 Airflow配置Redis和CeleryExecutor 236
10.5 Airflow任務開發Operators 238
10.5.1 Operators簡介 239
10.5.2 BaseOperator 簡介 239
10.5.3 BashOperator的使用 240
10.5.4 PythonOperator的使用 241
10.5.5 SSHOperator的使用 242
10.5.6 HiveOperator的使用 243
10.5.7 如何自定義Operator 244
10.6 Airflow集群、高可用部署 244
10.6.1 Airflow的四大守護進程 245
10.6.2 Airflow的守護進程是如何一起工作的 245
10.6.3 Airflow單節點部署 246
10.6.4 Airflow多節點(集群)部署 246
10.6.5 擴展worker節點 247
10.6.6 擴展Master節點 247
10.6.7 Airflow集群部署的具體步驟 249
第11章 Docker容器技術介紹 251
11.1 Docker概述 251
11.2 Docker解決什麼問題 252
11.3 Docker的安裝部署與使用 253
11.3.1 安裝Docker引擎 253
11.3.2 使用Docker 254
11.3.3 Docker命令的使用方法 255
11.4 卷的概念 258
11.5 數據卷共享 259
11.6 自製鏡像並發布 260
11.7 Docker網路 260
11.7.1 Docker的網路模式 261
11.7.2 Docker網路連線埠映射 262
11.8 Docker小結 262
第12章 主流自動化配置工具 263
12.1 配置引擎CFEngine 263
12.1.1 使用CFEngine的四個理由 263
12.1.2 CFEngine的安裝 265
12.1.3 CFEngine的配置 268
12.1.4 CFEngine政策示例 272
12.2 自動化運維工具Chef 275
12.2.1 Chef簡介 275
12.2.2 Chef的安裝 275
12.2.3 Chef的使用 279
12.3 Puppet 280
12.3.1 Puppet簡介 280
12.3.2 Puppet安裝和配置 281
12.3.3 Puppet配置語言 282
12.3.4 編寫第一個配置檔案 284
12.4 SaltStack 286
12.4.1 SaltStack的簡介 286
12.4.2 SaltStack的安裝與配置 287
12.4.3 SaltStack的使用 293
第13章 開源配置管理平台搭建 299
13.1 open-cmdb 299
13.1.1 open-cmdb功能介紹 300
13.1.2 open-cmdb開發環境部署 301
13.1.3 open-cmdb生產環境部署 305
13.2 藍鯨配置平台 313
13.2.1 藍鯨配置平台系統架構 313
13.2.2 藍鯨配置平台環境快速部署 314
第14章 統一監控平台Zabbix 319
14.1 Zabbix主要功能 319
14.2 Zabbix平台的技術術語 320
14.3 Zabbix的主要模組 321
14.4 Zabbix的安裝要求 322
14.5 Zabbix的安裝:從安裝包進行安裝 322
14.6 Zabbix的安裝:從容器進行安裝 325
第15章 運維開發相關技術 328
15.1 前端開發之Vue.js 328
15.1.1 新手學習Vue.js的先後順序 328
15.1.2 使用Vue.js實現一個demo 329
15.1.3 使用vue-cli創建工程並部署 336
15.1.4 流行的Vue.js UI庫 342
15.1.5 幾個開源的Vue.js管理項目 342
15.2 後端接口開發之FastAPI 343
15.2.1 FastAPI的安裝 343
15.2.2 編寫一個demo 344
15.2.3 安全與中間件 345
15.2.4 SQL與資料庫 348
15.2.5 測試與調試 353
15.3 WebSocket開發 358
15.3.1 WebSocket client的實現 358
15.3.2 WebSocket Server的實現 359
15.3.3 實現一個安全的WebSocket 360
15.3.4 基於WebSocket實現一個webshell 361
15.3.5 與主流框架集成的WebSocket 364
第16章 DevOps方法論 365
16.1 什麼是DevOps 365
16.2 DevOps成功的關鍵 366
16.3 DevOps最常用的10個工具 367
16.4 DevOps能為企業帶來哪些收益 368