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