Ansible是DevOps語言之一,是*一款可以讀/寫跨平臺的“Infrastructure-as-code”工具,從系統(tǒng)管理者到開發(fā)者,都可使用Ansible自動化部署并維護整個應(yīng)用的生命周期,并持續(xù)交付。Ansible是Github上*熱門的開源自動化社區(qū)之一,當前已經(jīng)超過1000人為Github上的Ansible做過貢獻?!禔nsible自動化運維》一書將帶領(lǐng)讀者探索Ansible自動化運維的神奇之旅,為運維工作節(jié)省時間、節(jié)約成本,并支持云環(huán)境應(yīng)用部署。這本書的作者都是資深運維人員,作者在2013年就創(chuàng)立了“Ansible中國用戶組”QQ群(群號:142851673),也相當活躍,當前專業(yè)會員已達1000人。
本書由資深運維人員聯(lián)手打造,通過大量實例,詳細講解Ansible自動化運維方式與技巧。
從*基礎(chǔ)的架構(gòu)解析、安裝配置,到典型應(yīng)用場景與案例分析,作者分享了自己在工作中的實戰(zhàn)經(jīng)驗,是掌握大規(guī)模集群運維管理的必備參考。
本書由一線運維人員聯(lián)手打造,通過大量實例,詳細講解Ansible這個工具的自動化運維方式與技巧;從基礎(chǔ)的架構(gòu)解析、安裝配置,到典型應(yīng)用案例分析,作者分享了自己在工作中的實戰(zhàn)經(jīng)驗,對各類開發(fā)運維人員提供了翔實的指南。主要內(nèi)容包括:Ansible架構(gòu)及安裝,Ansible 組件、組件擴展、API,playbook詳解、*佳實踐案例分析,用ansible-vault保護敏感數(shù)據(jù),Ansible與云計算的結(jié)合,部署Zabbix組件、Haproxy + LAMP架構(gòu),以及Ansible在大數(shù)據(jù)環(huán)境的應(yīng)用實戰(zhàn)等。
陳金窗,資深運維技術(shù)人員,曾就職于金山、姬慕石等互聯(lián)網(wǎng)公司,目前在天翼云負責服務(wù)VIP客戶運營。從事IT基礎(chǔ)架構(gòu)運維技術(shù)與管理十幾年中,負責過多個大型IT運維項目,對大規(guī)模系統(tǒng)運維技術(shù)有深刻理解,樂于分享。2013年組建了Ansible中國用戶組QQ群,分享了大量文章和技術(shù)細節(jié),極大地促進了Ansible技術(shù)的推廣與應(yīng)用。
沈燦,運維圈知名博主“燦哥”,曾就職于藍訊、京東、Yottaa等互聯(lián)網(wǎng)公司,對CDN和自動化運維技術(shù)有著豐富的工作經(jīng)驗,樂于分享,有很多技術(shù)文章和講座廣為流傳。
劉政委,資深運維人員,從事大型在線游戲運維7年多,對系統(tǒng)集成、游戲自動化運維技術(shù)有豐富的經(jīng)驗,同時在社區(qū)分享了大量文章,廣受好評。
前 言
第1章 Ansible架構(gòu)及特點 1
1.1 Ansible軟件及公司 2
1.1.1 Ansible應(yīng)用領(lǐng)域 3
1.1.2 Ansible軟件發(fā)布 5
1.1.3 Ansible公司服務(wù) 8
1.2 Ansible架構(gòu)模式 9
1.2.1 Ansible管理方式 10
1.2.2 Ansible系統(tǒng)架構(gòu) 11
1.2.3 任務(wù)執(zhí)行模式 13
1.3 Ansible特性 14
1.3.1 Ansible功能特性 14
1.3.2 Ansible與其他配置管理的對比 21
1.4 Ansible與DevOps 22
1.5 本章小結(jié) 26
第2章 Ansible安裝與配置 27
2.1 Ansible環(huán)境準備 27
2.2 安裝Ansible 30
2.2.1 直接用源碼安裝 30
2.2.2 用包管理工具安裝 32
2.3 配置運行環(huán)境 34
2.3.1 配置Ansible環(huán)境 34
2.3.2 使用公鑰認證 36
2.3.3 配置Linux主機SSH無密碼訪問 36
2.4 Ansible小試身手 38
2.4.1 主機連通性測試 38
2.4.2 在被管節(jié)點上批量執(zhí)行命令 39
2.5 獲取幫助信息 40
2.6 本章小結(jié) 42
第3章 Ansible 組件介紹 43
3.1 Ansible Inventory 43
3.2 Ansible Ad-Hoc 命令 49
3.3 Ansible playbook 56
3.4 Ansible facts 56
3.5 Ansible role 60
3.6 Ansible Galaxy 63
3.7 本章小結(jié) 63
第4章 playbook詳解 64
4.1 playbook基本語法 64
4.2 playbook變量與引用 70
4.3 playbook循環(huán) 81
4.4 playbook lookups 91
4.5 playbook conditionals 96
4.6 Jinja2 filter 99
4.7 playbook內(nèi)置變量 102
4.8 本章小結(jié) 106
第5章 Ansible最佳實踐 107
5.1 優(yōu)化Ansible速度 107
5.2 目錄結(jié)構(gòu) 113
5.3 定義多環(huán)境 115
5.4 灰度發(fā)布與檢測 115
5.5 統(tǒng)一管理 116
5.6 使用ansible-shell交互命令行 116
5.7 本章小結(jié) 118
第6章 擴展Ansible組件 119
6.1 擴展facts 119
6.2 擴展模塊 125
6.3 callback插件 130
6.4 lookup插件 137
6.5 Jinja2 filter 139
6.6 本章小結(jié) 143
第7章 用ansible-vault保護敏感數(shù)據(jù) 144
7.1 了解ansible-vault如何保護數(shù)據(jù) 145
7.1.1 高級加密標準 145
7.1.2 ansible-vault能夠加密什么 145
7.2 使用ansible-vault 146
7.2.1 創(chuàng)建加密數(shù)據(jù)文件 146
7.2.2 更新加密的數(shù)據(jù)文件 147
7.2.3 變更加密數(shù)據(jù)密鑰 148
7.3 典型應(yīng)用場景 148
7.3.1 實踐場景1:保護Ansible role中的敏感數(shù)據(jù) 149
7.3.2 實踐場景2:使用加密做用戶認證 151
7.3.3 實踐場景3:保護Nginx中的SSL密鑰 152
7.4 本章小結(jié) 155
第8章 Ansible與云計算 156
8.1 了解云平臺管理流程 156
8.2 Ansible AWS和OpenStack 157
8.3 Ansible與Docker 162
8.4 Ansible Jenkins 165
8.5 本章小結(jié) 169
第9章 部署Zabbix組件 170
9.1 了解部署流程 170
9.2 編寫業(yè)務(wù)roles 171
9.3 安裝部署 177
9.4 本章小結(jié) 179
第10章 部署HAProxy + LAMP架構(gòu) 180
10.1 了解整體架構(gòu)流程 180
10.2 編寫業(yè)務(wù)roles 181
10.3 配置部署以及測試 186
10.4 擴容與維護 188
10.5 本章小結(jié) 189
第11章 大數(shù)據(jù)環(huán)境的應(yīng)用實戰(zhàn) 190
11.1 某運營商大數(shù)據(jù)環(huán)境 191
11.2 準備大數(shù)據(jù)集群環(huán)境 192
11.2.1 安裝操作系統(tǒng) 195
11.2.2 操作系統(tǒng)初始化 198
11.2.3 Ansible無口令密鑰執(zhí)行環(huán)境 204
11.2.4 安裝、配置JDK 205
11.3 部署Hadoop集群 207
11.3.1 準備Hadoop基礎(chǔ)角色 209
11.3.2 部署NameNode角色 219
11.3.3 部署資源管理器角色 221
11.3.4 部署DataNode角色 222
11.4 部署后Hadoop初始化與驗證 223
11.4.1 部署后初始化 223
11.4.2 部署后Hadoop驗證 224
11.5 本章小結(jié) 226
第12章 Ansible管理Windows系統(tǒng) 227
12.1 Ansible管理Windows工作原理 228
12.2 搭建Ansible管理工作組Windows環(huán)境 229
12.2.1 安裝、配置控制主機 230
12.2.2 被管Windows主機配置 230
12.2.3 配置資源清單 232
12.2.4 測試被管Windows主機的連通性 234
12.2.5 常見問題處理 235
12.3 搭建Ansible管理活動目錄Windows環(huán)境 236
12.4 支持管理Windows模塊 239
12.5 常用Windows管理實例 240
12.6 本章小結(jié) 244
第13章 網(wǎng)絡(luò)自動化管理的應(yīng)用實戰(zhàn) 246
13.1 網(wǎng)絡(luò)管理也自動化了 246
13.2 Ansible官方集成的網(wǎng)絡(luò)角色 249
13.3 生成配置文件及部署 251
13.3.1 生成網(wǎng)絡(luò)配置模板 252
13.3.2 部署配置模板 255
13.4 通過SNMP方式配置網(wǎng)絡(luò) 257
13.5 網(wǎng)絡(luò)設(shè)備廠商提供接口實現(xiàn)自動化 259
13.5.1 管理Cisco NX-OS 259
13.5.2 管理JUNOS 269
13.5.3 管理Cumulus Linux 273
13.6 本章小結(jié) 279
第14章 Ansible API 280
14.1 runner API 280
14.2 playbook API 283
14.3 使用Flask封裝Ansible API 286
14.4 使用Celery實現(xiàn)任務(wù)異步化 290
14.5 使用jQuery Ajax異步請求 297
14.6 本章小結(jié) 300
附錄A Ansible.cfg配置文件參數(shù)詳解 301
附錄B YAML與Jinjia 306
附錄C Ansible pull模式 312
附錄D SSH Forward模式 316