《Linux自動化運(yùn)維實(shí)戰(zhàn)》從實(shí)用的角度出發(fā),詳細(xì)介紹了Linux自動化運(yùn)維領(lǐng)域的相關(guān)理論、技術(shù)與應(yīng)用,包括Shell企業(yè)編程基礎(chǔ)、Shell編程高級企業(yè)實(shí)戰(zhàn)、自動化運(yùn)維發(fā)展、Puppet自動運(yùn)維企業(yè)實(shí)戰(zhàn)、Ansible自動運(yùn)維企業(yè)實(shí)戰(zhàn)、SaltStack自動運(yùn)維企業(yè)實(shí)戰(zhàn)。 《Linux自動化運(yùn)維實(shí)戰(zhàn)》免費(fèi)提供與書中內(nèi)容相關(guān)的視頻課程講解,以指導(dǎo)讀者深入地進(jìn)行學(xué)習(xí),詳見前言中的說明。 《Linux自動化運(yùn)維實(shí)戰(zhàn)》既可作為高等學(xué)校計(jì)算機(jī)相關(guān)專業(yè)的教材,也可作為系統(tǒng)管理員、網(wǎng)絡(luò)管理員、Linux運(yùn)維工程師及網(wǎng)站開發(fā)、測試、設(shè)計(jì)等人員的參考用書。
本叢書融入作者十多年Linux運(yùn)維經(jīng)驗(yàn),盡是干貨。通過對Linux技術(shù)領(lǐng)域重要知識點(diǎn)的剖析及簡單明了的實(shí)例介紹,幫助讀者在較短的時間內(nèi)掌握Linux云計(jì)算相關(guān)運(yùn)維技能,成為專業(yè)的Linux高級技術(shù)人才。書中結(jié)構(gòu)清晰,內(nèi)容全面,由淺入深,講解很詳細(xì),是難得的將理論 概念 實(shí)戰(zhàn)結(jié)合于一體的書籍,十分適合作為手邊的實(shí)戰(zhàn)參考書,相信能給讀者帶來新的想法和收獲。
Linux 是當(dāng)今三大操作系統(tǒng)(Windows、macOS、Linux)之一,其創(chuàng)始人是林納斯·托瓦茲①。
林納斯·托瓦茲 21 歲時用 4 個月的時間首次創(chuàng)建了 Linux 內(nèi)核,于 1991 年 10 月 5 日正式對
外發(fā)布。Linux 系統(tǒng)繼承了 UNIX 系統(tǒng)以網(wǎng)絡(luò)為核心的思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操
作系統(tǒng)。
20 世紀(jì) 90 年代至今,互聯(lián)網(wǎng)飛速發(fā)展,IT 引領(lǐng)時代潮流,而 Linux 系統(tǒng)是一切 IT 的基石,
其應(yīng)用場景涉及方方面面,小到個人計(jì)算機(jī)、智能手環(huán)、智能手表、智能手機(jī)等設(shè)備,大到服
務(wù)器、云計(jì)算、大數(shù)據(jù)、人工智能、數(shù)字貨幣、區(qū)塊鏈等領(lǐng)域。
為什么寫《Linux 自動化運(yùn)維實(shí)戰(zhàn)》這本書?這要從我的經(jīng)歷說起。我出生在貴州省一個貧
困的小山村,從小經(jīng)歷了砍柴、放牛、挑水、做飯,日出而作、日落而歸的樸素生活,看到父
母一輩子都生活在小山村里,沒有見過大城市,所以從小立志要走出大山,要讓父母過上幸福
的生活。正是這樣的信念讓我不斷地努力。大學(xué)畢業(yè)至今,我在北漂的 IT 運(yùn)維路上已走
過了十多年:從初創(chuàng)小公司到國有企業(yè)、機(jī)關(guān)單位,再到圖吧、研修網(wǎng)、京東商城等 IT 企業(yè),
分別擔(dān)任過 Linux 運(yùn)維工程師、Linux 運(yùn)維架構(gòu)師、運(yùn)維經(jīng)理,直到現(xiàn)在創(chuàng)辦的京峰教育培訓(xùn)
機(jī)構(gòu)。
一路走來,很感謝生命中遇到的每一個人,是大家的幫助,讓我不斷地進(jìn)步和成長,也讓
我明白了一個人活著不應(yīng)該只為自己和自己的家人,還要考慮到整個社會,哪怕只能為社會貢
獻(xiàn)一點(diǎn)點(diǎn)價(jià)值,人生就是精彩的。
為了幫助更多的人通過技術(shù)改變自己的命運(yùn),我決定和團(tuán)隊(duì)同事一起編寫這本書。雖然市
面上關(guān)于 Linux 的書籍有很多,但是很難找到一本關(guān)于 Shell 企業(yè)編程基礎(chǔ)、Shell 編程高級企業(yè)
實(shí)戰(zhàn)、自動化運(yùn)維發(fā)展、Puppet 自動運(yùn)維企業(yè)實(shí)戰(zhàn)、Ansible 自動運(yùn)維企業(yè)實(shí)戰(zhàn)、SaltStack 自動
運(yùn)維企業(yè)實(shí)戰(zhàn)等內(nèi)容的詳細(xì)、全面的主流技術(shù)書籍,這就是編寫本書的初衷。
① 創(chuàng)始人全稱是 Linus Benedict Torvalds(林納斯·本納第克特·托瓦茲)。
II Linux 自動化運(yùn)維實(shí)戰(zhàn)
配套資源
程序代碼、面試題目、學(xué)習(xí)路徑、工具手冊、簡歷模板等資料,請掃描下方二維碼下載
或者到清華大學(xué)出版社官方網(wǎng)站本書頁面下載。
配套資源
作者精心錄制了與 Linux 開發(fā)相關(guān)的視頻課程(3000 分鐘,144 集),便于讀者自學(xué)。掃
描封底文泉課堂刮刮卡中的二維碼進(jìn)行綁定后即可觀看(注:視頻內(nèi)容僅供學(xué)習(xí)參
考,與書中內(nèi)容并非一一對應(yīng))。
雖然已花費(fèi)大量的時間和精力核對書中的代碼和內(nèi)容,但難免存在紕漏,懇請讀者批評
指正。
吳光科
2023 年 3 月
前 言
致謝
ACKNOWLEDGEMENT
感謝 Linux 之父林納斯·托瓦茲,他不僅創(chuàng)造了 Linux 系統(tǒng),還影響了整個開源世界,也影
響了我的一生。
感謝我親愛的父母,含辛茹苦地?fù)狃B(yǎng)我們兄弟三人,是他們對我無微不至的照顧,讓我有
更多的精力和動力去工作,去幫助更多的人。
感謝常青帥、孫娜、潘志付、薛洪波、王中、朱愉、左堰鑫、齊磊、周玉海、周泊江、吳
嘯烈、衛(wèi)云龍、劉祥勝、馮圣國及其他摯友多年來對我的信任和鼓勵。
感謝騰訊課堂所有的課程經(jīng)理及平臺老師,感謝 51CTO 副總裁一休及全體工作人員對我及
京峰教育培訓(xùn)機(jī)構(gòu)的大力支持。
感謝京峰教育培訓(xùn)機(jī)構(gòu)的每位學(xué)員對我的支持和鼓勵,希望他們都學(xué)有所成,最終成為社
會的中流砥柱。感謝京峰教育首席運(yùn)營官蔡正雄,感謝京峰教育培訓(xùn)機(jī)構(gòu)的辛老師、朱老師、
張老師、關(guān)老師、兮兮老師、小江老師、可馨老師等全體老師和助教、班長、副班長,是他們
的大力支持,讓京峰教育能夠幫助更多的學(xué)員。
最后要感謝我的愛人黃小紅,是她一直在背后默默地支持我、鼓勵我,讓我有更多的精力
和時間去完成這本書。
吳光科
2023 年 3 月
第 1 章 Shell 企業(yè)編程基礎(chǔ). 1
1.1 Shell 編程入門.1
1.2 Shell 腳本及編寫 Hello World 程序 3
1.3 Shell 編程3
1.3.1 變量詳解 3
1.3.2 系統(tǒng)變量 4
1.3.3 環(huán)境變量 4
1.3.4 用戶變量 5
1.4 if 條件語句實(shí)戰(zhàn) 6
1.5 Shell 編程括號和符號詳解 7
1.5.1 括號詳解 7
1.5.2 符號詳解 8
1.6 MySQL 數(shù)據(jù)庫備份腳本 8
1.7 LNMP 一鍵自動化安裝腳本 9
1.8 for 循環(huán)語句實(shí)戰(zhàn).13
1.9 while 循環(huán)語句實(shí)戰(zhàn).14
1.10 case 選擇語句實(shí)戰(zhàn) 17
1.11 select 選擇語句實(shí)戰(zhàn) 19
1.12 Shell 編程函數(shù)實(shí)戰(zhàn) .20
1.13 Shell 編程四劍客21
1.13.1 find .21
1.13.2 sed 23
1.13.3 awk .27
1.13.4 grep.30
1.14 Shell 數(shù)組編程.32
第 2 章 Shell 編程高級企業(yè)實(shí)戰(zhàn) . 35
2.1 Shell 編程 Linux 系統(tǒng)備份腳本35
2.2 Shell 編程收集服務(wù)器信息腳本 .37
2.3 Shell 編程拒絕惡意 IP 登錄腳本39
2.4 Shell 編程 LAMP 部署腳本 40
VI Linux 自動化運(yùn)維實(shí)戰(zhàn)
2.5 Shell 編程 LNMP 部署腳本 44
2.6 Shell 編程 MySQL 主從復(fù)制腳本 .47
2.7 Shell 編程修改 IP 及主機(jī)名腳本50
2.8 Shell 編程 Zabbix 安裝配置腳本 53
2.9 Shell 編程 Nginx 虛擬主機(jī)腳本55
2.10 Shell 編程 Nginx、Tomcat 腳本 57
2.11 Shell 編程管理 Linux 用戶和組腳本.60
2.12 Shell 編程 Vsftpd 虛擬用戶管理腳本64
2.13 Shell 編程 Apache 多版本軟件安裝腳本.66
2.14 Shell 編程局域網(wǎng) IP 探活腳本 .68
2.15 Shell 編程 Apache 虛擬主機(jī)管理腳本 72
2.16 Shell 編程實(shí)現(xiàn) Apache 高可用腳本73
2.17 Shell 編程拒絕黑客攻擊 Linux 腳本.75
2.18 Shell 編程 mysqldump 數(shù)據(jù)庫自動備份腳本.77
2.19 Shell 編程 MySQL 主從自動配置腳本 79
2.20 Shell 編程部署 Tomcat 多實(shí)例腳本 81
2.21 Shell 編程 Nginx 日志切割腳本84
2.22 Shell 編程 Tomcat 實(shí)例和 Nginx 均衡腳本 84
2.23 Shell 編程密碼遠(yuǎn)程執(zhí)行命令腳本96
2.24 Shell 編程密碼遠(yuǎn)程復(fù)制文件腳本97
2.25 Shell 編程 Bind DNS 管理腳本 .99
2.26 Shell 編程 Docker 虛擬化管理腳本 105
2.27 Shell 編程腳本. 109
2.27.1 Shell 編程采集服務(wù)器硬件信息腳本 109
2.27.2 Shell 編程 Linux 系統(tǒng)初始化腳本 109
2.27.3 Shell 編程 Xtrabackup 數(shù)據(jù)庫自動備份腳本 110
2.27.4 Shell 編程 Linux 服務(wù)器免密鑰分發(fā)腳本 . 110
2.27.5 Shell 編程 Nginx 多版本軟件安裝腳本. 110
2.27.6 Shell 編程自動收集軟件、端口、進(jìn)程腳本. 111
2.27.7 Shell 編程 LVS 負(fù)載均衡管理腳本 111
2.27.8 Shell 編程 Keepalived 管理腳本 . 111
2.27.9 Shell 編程 Discuz 門戶網(wǎng)站自動部署腳本 111
2.27.10 Shell 編程監(jiān)控 Linux 磁盤分區(qū)容量腳本 . 112
第 3 章 自動化運(yùn)維發(fā)展 113
3.1 傳統(tǒng)運(yùn)維方式簡介 113
3.2 自動化運(yùn)維簡介 114
目錄 VII
3.3 自動化運(yùn)維的具體內(nèi)容. 114
3.4 建立高效的 IT 自動化運(yùn)維管理 114
3.5 IT 自動化運(yùn)維工具 115
3.6 IT 自動化運(yùn)維體系 116
第 4 章 Puppet 自動運(yùn)維企業(yè)實(shí)戰(zhàn) 117
4.1 Puppet 入門 . 117
4.2 Puppet 工作原理 118
4.3 Puppet 安裝配置 119
4.4 Puppet 企業(yè)案例演示 122
4.5 Puppet 常見資源及模塊. 124
4.6 Puppet file 資源案例 126
4.7 Puppet package 資源案例 . 129
4.8 Puppet service 資源案例. 131
4.9 Puppet exec 資源案例 133
4.10 Puppet cron 資源案例. 136
4.11 Puppet 日常管理與配置. 138
4.11.1 Puppet 自動認(rèn)證 138
4.11.2 Puppet 客戶端自動同步. 139
4.11.3 Puppet 服務(wù)器端主動推送. 140
4.12 Puppet 批量部署案例. 141
4.12.1 Puppet 批量修改靜態(tài) IP 案例 142
4.12.2 Puppet 批量配置 NTP 同步服務(wù)器 . 143
4.12.3 Puppet 自動部署及同步網(wǎng)站 . 145
第 5 章 Ansible 自動運(yùn)維企業(yè)實(shí)戰(zhàn) 148
5.1 Ansible 工具特點(diǎn). 148
5.2 Ansible 運(yùn)維工具原理 . 148
5.3 Ansible 管理工具安裝配置 149
5.4 Ansible 工具參數(shù)詳解 . 151
5.5 Ansible ping 模塊實(shí)戰(zhàn) 152
5.6 Ansible command 模塊實(shí)戰(zhàn) 152
5.7 Ansible copy 模塊實(shí)戰(zhàn) . 154
5.8 Ansible YUM 模塊實(shí)戰(zhàn) 156
5.9 Ansible file 模塊實(shí)戰(zhàn) . 157
5.10 Ansible user 模塊實(shí)戰(zhàn) 159
5.11 Ansible cron 模塊實(shí)戰(zhàn) 160
5.12 Ansible synchronize 模塊實(shí)戰(zhàn) . 162
VIII Linux 自動化運(yùn)維實(shí)戰(zhàn)
5.13 Ansible Shell 模塊實(shí)戰(zhàn). 164
5.14 Ansible service 模塊實(shí)戰(zhàn) 166
5.15 Ansible Playbook 應(yīng)用 168
5.16 Ansible 配置文件詳解 174
5.17 Ansible 性能調(diào)優(yōu). 175
第 6 章 SaltStack 自動運(yùn)維企業(yè)實(shí)戰(zhàn) 179
6.1 SaltStack 運(yùn)維工具特點(diǎn) . 179
6.2 SaltStack 運(yùn)維工具簡介 . 179
6.3 SaltStack 運(yùn)維工具原理 . 180
6.4 SaltStack 平臺配置實(shí)戰(zhàn) . 181
6.5 SaltStack 節(jié)點(diǎn) Hosts 及防火墻設(shè)置 181
6.6 SaltStack 管理工具安裝配置 182
6.7 SaltStack 工具參數(shù)詳解 . 183
6.8 SaltStack ping 模塊實(shí)戰(zhàn) . 185
6.9 SaltStack cmd 模塊實(shí)戰(zhàn) 185
6.10 SaltStack copy 模塊實(shí)戰(zhàn) . 186
6.11 SaltStack pkg 模塊實(shí)戰(zhàn). 187
6.12 SaltStack service 模塊實(shí)戰(zhàn) 188
6.13 SaltStack 配置文件詳解 . 189
6.14 SaltStack State 自動化實(shí)戰(zhàn) . 190
6.14.1 SLS 文件企業(yè)實(shí)戰(zhàn)案例一 192
6.14.2 SLS 文件企業(yè)實(shí)戰(zhàn)案例二 192
6.14.3 SLS 文件企業(yè)實(shí)戰(zhàn)案例三 193
6.14.4 SLS 文件企業(yè)實(shí)戰(zhàn)案例四 193
6.14.5 SLS 文件企業(yè)實(shí)戰(zhàn)案例五 194
6.14.6 SLS 文件企業(yè)實(shí)戰(zhàn)案例六 195
6.14.7 SLS 文件企業(yè)實(shí)戰(zhàn)案例七 195
6.14.8 SLS 文件企業(yè)實(shí)戰(zhàn)案例八 196