Ansible是DevOps語(yǔ)言之一,是*一款可以讀/寫跨平臺(tái)的“Infrastructure-as-code”工具,從系統(tǒng)管理者到開(kāi)發(fā)者,都可使用Ansible自動(dòng)化部署并維護(hù)整個(gè)應(yīng)用的生命周期,并持續(xù)交付。Ansible是Github上*熱門的開(kāi)源自動(dòng)化社區(qū)之一,當(dāng)前已經(jīng)超過(guò)1000人為Github上的Ansible做過(guò)貢獻(xiàn)?!禔nsible自動(dòng)化運(yùn)維》一書將帶領(lǐng)讀者探索Ansible自動(dòng)化運(yùn)維的神奇之旅,為運(yùn)維工作節(jié)省時(shí)間、節(jié)約成本,并支持云環(huán)境應(yīng)用部署。這本書的作者都是資深運(yùn)維人員,作者在2013年就創(chuàng)立了“Ansible中國(guó)用戶組”QQ群(群號(hào):142851673),也相當(dāng)活躍,當(dāng)前專業(yè)會(huì)員已達(dá)1000人。
本書由資深運(yùn)維人員聯(lián)手打造,通過(guò)大量實(shí)例,詳細(xì)講解Ansible自動(dòng)化運(yùn)維方式與技巧。
從*基礎(chǔ)的架構(gòu)解析、安裝配置,到典型應(yīng)用場(chǎng)景與案例分析,作者分享了自己在工作中的實(shí)戰(zhàn)經(jīng)驗(yàn),是掌握大規(guī)模集群運(yùn)維管理的必備參考。
本書由一線運(yùn)維人員聯(lián)手打造,通過(guò)大量實(shí)例,詳細(xì)講解Ansible這個(gè)工具的自動(dòng)化運(yùn)維方式與技巧;從基礎(chǔ)的架構(gòu)解析、安裝配置,到典型應(yīng)用案例分析,作者分享了自己在工作中的實(shí)戰(zhàn)經(jīng)驗(yàn),對(duì)各類開(kāi)發(fā)運(yùn)維人員提供了翔實(shí)的指南。主要內(nèi)容包括:Ansible架構(gòu)及安裝,Ansible 組件、組件擴(kuò)展、API,playbook詳解、*佳實(shí)踐案例分析,用ansible-vault保護(hù)敏感數(shù)據(jù),Ansible與云計(jì)算的結(jié)合,部署Zabbix組件、Haproxy + LAMP架構(gòu),以及Ansible在大數(shù)據(jù)環(huán)境的應(yīng)用實(shí)戰(zhàn)等。
陳金窗,資深運(yùn)維技術(shù)人員,曾就職于金山、姬慕石等互聯(lián)網(wǎng)公司,目前在天翼云負(fù)責(zé)服務(wù)VIP客戶運(yùn)營(yíng)。從事IT基礎(chǔ)架構(gòu)運(yùn)維技術(shù)與管理十幾年中,負(fù)責(zé)過(guò)多個(gè)大型IT運(yùn)維項(xiàng)目,對(duì)大規(guī)模系統(tǒng)運(yùn)維技術(shù)有深刻理解,樂(lè)于分享。2013年組建了Ansible中國(guó)用戶組QQ群,分享了大量文章和技術(shù)細(xì)節(jié),極大地促進(jìn)了Ansible技術(shù)的推廣與應(yīng)用。
沈燦,運(yùn)維圈知名博主“燦哥”,曾就職于藍(lán)訊、京東、Yottaa等互聯(lián)網(wǎng)公司,對(duì)CDN和自動(dòng)化運(yùn)維技術(shù)有著豐富的工作經(jīng)驗(yàn),樂(lè)于分享,有很多技術(shù)文章和講座廣為流傳。
劉政委,資深運(yùn)維人員,從事大型在線游戲運(yùn)維7年多,對(duì)系統(tǒng)集成、游戲自動(dòng)化運(yùn)維技術(shù)有豐富的經(jīng)驗(yàn),同時(shí)在社區(qū)分享了大量文章,廣受好評(píng)。
前 言
第1章 Ansible架構(gòu)及特點(diǎn) 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與其他配置管理的對(duì)比 21
1.4 Ansible與DevOps 22
1.5 本章小結(jié) 26
第2章 Ansible安裝與配置 27
2.1 Ansible環(huán)境準(zhǔn)備 27
2.2 安裝Ansible 30
2.2.1 直接用源碼安裝 30
2.2.2 用包管理工具安裝 32
2.3 配置運(yùn)行環(huán)境 34
2.3.1 配置Ansible環(huán)境 34
2.3.2 使用公鑰認(rèn)證 36
2.3.3 配置Linux主機(jī)SSH無(wú)密碼訪問(wèn) 36
2.4 Ansible小試身手 38
2.4.1 主機(jī)連通性測(cè)試 38
2.4.2 在被管節(jié)點(diǎn)上批量執(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基本語(yǔ)法 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最佳實(shí)踐 107
5.1 優(yōu)化Ansible速度 107
5.2 目錄結(jié)構(gòu) 113
5.3 定義多環(huán)境 115
5.4 灰度發(fā)布與檢測(cè) 115
5.5 統(tǒng)一管理 116
5.6 使用ansible-shell交互命令行 116
5.7 本章小結(jié) 118
第6章 擴(kuò)展Ansible組件 119
6.1 擴(kuò)展facts 119
6.2 擴(kuò)展模塊 125
6.3 callback插件 130
6.4 lookup插件 137
6.5 Jinja2 filter 139
6.6 本章小結(jié) 143
第7章 用ansible-vault保護(hù)敏感數(shù)據(jù) 144
7.1 了解ansible-vault如何保護(hù)數(shù)據(jù) 145
7.1.1 高級(jí)加密標(biāo)準(zhǔn) 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)用場(chǎng)景 148
7.3.1 實(shí)踐場(chǎng)景1:保護(hù)Ansible role中的敏感數(shù)據(jù) 149
7.3.2 實(shí)踐場(chǎng)景2:使用加密做用戶認(rèn)證 151
7.3.3 實(shí)踐場(chǎng)景3:保護(hù)Nginx中的SSL密鑰 152
7.4 本章小結(jié) 155
第8章 Ansible與云計(jì)算 156
8.1 了解云平臺(tái)管理流程 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 配置部署以及測(cè)試 186
10.4 擴(kuò)容與維護(hù) 188
10.5 本章小結(jié) 189
第11章 大數(shù)據(jù)環(huán)境的應(yīng)用實(shí)戰(zhàn) 190
11.1 某運(yùn)營(yíng)商大數(shù)據(jù)環(huán)境 191
11.2 準(zhǔn)備大數(shù)據(jù)集群環(huán)境 192
11.2.1 安裝操作系統(tǒng) 195
11.2.2 操作系統(tǒng)初始化 198
11.2.3 Ansible無(wú)口令密鑰執(zhí)行環(huán)境 204
11.2.4 安裝、配置JDK 205
11.3 部署Hadoop集群 207
11.3.1 準(zhǔn)備Hadoop基礎(chǔ)角色 209
11.3.2 部署NameNode角色 219
11.3.3 部署資源管理器角色 221
11.3.4 部署DataNode角色 222
11.4 部署后Hadoop初始化與驗(yàn)證 223
11.4.1 部署后初始化 223
11.4.2 部署后Hadoop驗(yàn)證 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 安裝、配置控制主機(jī) 230
12.2.2 被管Windows主機(jī)配置 230
12.2.3 配置資源清單 232
12.2.4 測(cè)試被管Windows主機(jī)的連通性 234
12.2.5 常見(jiàn)問(wèn)題處理 235
12.3 搭建Ansible管理活動(dòng)目錄Windows環(huán)境 236
12.4 支持管理Windows模塊 239
12.5 常用Windows管理實(shí)例 240
12.6 本章小結(jié) 244
第13章 網(wǎng)絡(luò)自動(dòng)化管理的應(yīng)用實(shí)戰(zhàn) 246
13.1 網(wǎng)絡(luò)管理也自動(dòng)化了 246
13.2 Ansible官方集成的網(wǎng)絡(luò)角色 249
13.3 生成配置文件及部署 251
13.3.1 生成網(wǎng)絡(luò)配置模板 252
13.3.2 部署配置模板 255
13.4 通過(guò)SNMP方式配置網(wǎng)絡(luò) 257
13.5 網(wǎng)絡(luò)設(shè)備廠商提供接口實(shí)現(xiàn)自動(dòng)化 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實(shí)現(xiàn)任務(wù)異步化 290
14.5 使用jQuery Ajax異步請(qǐng)求 297
14.6 本章小結(jié) 300
附錄A Ansible.cfg配置文件參數(shù)詳解 301
附錄B YAML與Jinjia 306
附錄C Ansible pull模式 312
附錄D SSH Forward模式 316