基礎(chǔ)設(shè)施即代碼:模型驅(qū)動的DevOps [美]史蒂文·卡特
定 價:59 元
- 作者:[美]史蒂文·卡特[美]杰森·金[美]喬什·路錫安[美]邁克·尤恩克斯
- 出版時間:2024/3/1
- ISBN:9787111750512
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP311.52
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書詳細(xì)闡述了基礎(chǔ)設(shè)施即代碼的概念、原理、設(shè)計方法以及實踐,幫助讀者深入理解基礎(chǔ)設(shè)施即代碼的本質(zhì)和價值。書中通過大量的案例和實踐經(jīng)驗,展示了如何運(yùn)用基礎(chǔ)設(shè)施即代碼來提高企業(yè)生產(chǎn)力,改變數(shù)據(jù)走向,優(yōu)化流量模式。
無論您是網(wǎng)絡(luò)工程師或者網(wǎng)絡(luò)安全工程師、架構(gòu)師還是領(lǐng)導(dǎo)者,本書都將幫助您以更高的效率、安全性、響應(yīng)能力和彈性來滿足所有網(wǎng)絡(luò)運(yùn)營的需求
Preface前 言
互聯(lián)網(wǎng)建立在網(wǎng)絡(luò)基礎(chǔ)設(shè)施之上。許多技術(shù)、經(jīng)濟(jì)和社會活動都依賴于互聯(lián)網(wǎng)。然而,令人遺憾的是,在過去的30年里,組織部署和維護(hù)這些關(guān)鍵網(wǎng)絡(luò)的方式幾乎沒有發(fā)生有意義的變化。網(wǎng)絡(luò)基礎(chǔ)設(shè)施的運(yùn)營通常是一項人力密集且需要手動操作的過程,容易出錯且響應(yīng)緩慢。DevOps模型通過可靠的自動化工具和流程,可以提高基礎(chǔ)設(shè)施運(yùn)營的靈活性、規(guī)模、安全性和合規(guī)性。盡管DevOps在云基礎(chǔ)設(shè)施的應(yīng)用程序開發(fā)和管理方面發(fā)揮著重要作用,但在將DevOps應(yīng)用于網(wǎng)絡(luò)基礎(chǔ)設(shè)施方面,目前尚缺乏一種全面且結(jié)構(gòu)化的方法。
與應(yīng)用于程序的DevOps不同,應(yīng)用于網(wǎng)絡(luò)基礎(chǔ)設(shè)施的DevOps面臨著需要管理元素的數(shù)量和每個元素的數(shù)據(jù)量的巨大挑戰(zhàn)。從本質(zhì)上講,這使得網(wǎng)絡(luò)基礎(chǔ)設(shè)施的DevOps成為一個數(shù)據(jù)管理問題。網(wǎng)絡(luò)供應(yīng)商使用數(shù)據(jù)模型來組織每個獨(dú)立網(wǎng)元中的數(shù)據(jù)并規(guī)范其API,但不同供應(yīng)商的數(shù)據(jù)模型甚至同一供應(yīng)商的不同設(shè)備的數(shù)據(jù)模型都存在差異。模型驅(qū)動的DevOps試圖對組織整個基礎(chǔ)設(shè)施中數(shù)據(jù)模型和代碼加以規(guī)范化。從某種意義上說,模型驅(qū)動的DevOps旨在提供一種將DevOps應(yīng)用于網(wǎng)絡(luò)基礎(chǔ)設(shè)施的具有復(fù)用性和確定性的方式,同時具備與應(yīng)用于云基礎(chǔ)設(shè)施的DevOpes相同的優(yōu)勢。
愿景
這本書包含了我們多年來在IT領(lǐng)域的經(jīng)驗和在咨詢、管理領(lǐng)域的所學(xué),以及我們將其應(yīng)用于解決當(dāng)今客戶需求時所面臨的挑戰(zhàn)。利用這樣的經(jīng)驗,我們尋求提供一種將DevOps應(yīng)用于基礎(chǔ)設(shè)施運(yùn)營的全面方法。這本書奠定了廣泛的基礎(chǔ),幫助開發(fā)人員和運(yùn)營商應(yīng)用為基礎(chǔ)設(shè)施DevOps制定的詳細(xì)、規(guī)范的方法。此外,它還解決了導(dǎo)致許多組織失敗的人為因素和組織因素。
本書的內(nèi)容簡明易懂且實用。我們認(rèn)為,成為網(wǎng)絡(luò)運(yùn)營人員或網(wǎng)絡(luò)工程師所需的技能已經(jīng)發(fā)生了根本性的變化。API(應(yīng)用程序接口)已經(jīng)取代了CLI(命令行接口)。本書旨在幫助網(wǎng)絡(luò)運(yùn)營商和工程師重新調(diào)整他們的技能,按照操作云基礎(chǔ)設(shè)施的方式來操作他們的基礎(chǔ)設(shè)施。為了加強(qiáng)這種方法,我們添加了一個虛構(gòu)的故事情節(jié),以說明組織在實施這種變革時所面臨的挑戰(zhàn)。
我們將重點(diǎn)放在結(jié)果上,并提供大量的代碼來幫助實現(xiàn)這些結(jié)果。我們專注于行業(yè)中標(biāo)準(zhǔn)的工具和方法。在可能的情況下,我們使用開源或免費(fèi)工具。當(dāng)必須選擇供應(yīng)商解決方案時,我們會選擇適合實現(xiàn)的方式。也就是說,不同的組件或者不同的供應(yīng)商,并不會對我們提出的原則、框架甚至代碼產(chǎn)生顯著的影響。
讀者對象
我們深入研究了模型驅(qū)動的DevOps,并通過開源配套代碼庫中的用例和具體示例對其進(jìn)行了定義。本書面向IT基礎(chǔ)設(shè)施團(tuán)隊,還適用于希望在各個階段將安全性納入其基礎(chǔ)設(shè)施的網(wǎng)絡(luò)安全團(tuán)隊。另外,本書也適合希望了解現(xiàn)代基礎(chǔ)設(shè)施的最佳實踐的個人以及業(yè)務(wù)和技術(shù)領(lǐng)導(dǎo)者,因為這些實踐與通過團(tuán)隊實現(xiàn)高質(zhì)量成果息息相關(guān)。
組織方式
本書各章內(nèi)容的組織邏輯如下:首先,我們研究為什么網(wǎng)絡(luò)基礎(chǔ)設(shè)施的運(yùn)營需要改變,然后探索需要改變的內(nèi)容,最后展示如何改變它。模型驅(qū)動的DevOps的參考實現(xiàn)(reference implementation)為讀者全面應(yīng)用所學(xué)的技術(shù)和概念提供了指導(dǎo)。有了這一堅實的技術(shù)基礎(chǔ),我們將在最后一章討論在進(jìn)行大規(guī)模的操作更改時需要考慮的重要人為因素。
本書還提供一些練習(xí),這些練習(xí)可讓讀者獲得實踐經(jīng)驗,以更好地理解技術(shù)細(xì)節(jié),并檢測所學(xué)到的知識。
為了提供一些背景信息并幫助說明本書中的諸多概念,每章都從一位名叫鮑勃的網(wǎng)絡(luò)工程師的虛構(gòu)故事開始。鮑勃在ACME公司工作,這是一家具有典型組織結(jié)構(gòu)的常規(guī)公司。最重要的是,它以大量人力手動操作鍵盤的方式來運(yùn)營網(wǎng)絡(luò)基礎(chǔ)設(shè)施。在CIO(首席信息官)的指導(dǎo)
下,鮑勃開始了DevOps之旅。正是通過了解他的挑戰(zhàn)、失敗和成功,我們看到了網(wǎng)絡(luò)基礎(chǔ)設(shè)施在傳統(tǒng)運(yùn)營模式下的問題,以及如何通過自動化實現(xiàn)DevOps,進(jìn)而實現(xiàn)真正的業(yè)務(wù)轉(zhuǎn)型。
章節(jié)結(jié)構(gòu)
本書的每一章都構(gòu)建在前一章的基礎(chǔ)之上。模型驅(qū)動的DevOps的實現(xiàn)過程是一個旅程,這樣的章節(jié)安排旨在引導(dǎo)讀者逐步完成整個旅程。
第1章說明了為什么網(wǎng)絡(luò)基礎(chǔ)設(shè)施的傳統(tǒng)運(yùn)營模式需要改變,簡要概述了DevOps如何解決傳統(tǒng)模式的諸多問題,并探討了DevOps未被廣泛用于本地IT基礎(chǔ)設(shè)施的原因。
第2章定義了業(yè)務(wù)轉(zhuǎn)型的目標(biāo),討論了模型驅(qū)動的DevOps的高級框架,并介紹了可信數(shù)據(jù)源和數(shù)據(jù)模型等概念。
網(wǎng)絡(luò)基礎(chǔ)設(shè)施要成為業(yè)務(wù)轉(zhuǎn)型的推動者,就需要擺脫開箱即用的CLI管理模式。第3章說明了API是新的CLI,并探討了可以利用并擴(kuò)展API的方法。
盡管能夠利用API以編程方式使用網(wǎng)絡(luò)基礎(chǔ)設(shè)施,但讀者不必成為一個程序員。第4章探討了如何使用數(shù)據(jù)模型、可信數(shù)據(jù)源、配置管理工具和模板工具等將網(wǎng)絡(luò)基礎(chǔ)設(shè)施“變成”代碼。這些工具讓“基礎(chǔ)設(shè)施即代碼”成為可能,從而像在“云服務(wù)”中一樣操作網(wǎng)絡(luò)基礎(chǔ)設(shè)施。
基礎(chǔ)設(shè)施即代碼非常強(qiáng)大,但與許多強(qiáng)大的東西一樣,如果不加區(qū)分地應(yīng)用,會帶來很大的風(fēng)險。第5章探討了版本控制系統(tǒng)、數(shù)據(jù)驗證工具、仿真平臺和CI/CD的概念。這些工具共同實現(xiàn)了基礎(chǔ)設(shè)施即代碼的大規(guī)模安全使用以及自動化的合法
Steven Carter史蒂文·卡特在大學(xué)、政府研發(fā)實驗室和私營企業(yè)擁有超過25年的行業(yè)經(jīng)驗。他曾在多個行業(yè)會議上發(fā)表演講,并在技術(shù)期刊上撰寫博客和文章。他曾擔(dān)任系統(tǒng)管理員,運(yùn)行世界上一些最大他方面擁有廣泛的經(jīng)驗,包括運(yùn)營、嵌入式軟件開發(fā)和銷售。在過去的5年中,他一直為紅帽Ansible和思科系統(tǒng)咨詢公司工作,并為世界上許多最大的組織進(jìn)行編碼,這些組織通過合并DevOps來實現(xiàn)其運(yùn)營的現(xiàn)代化和安全。他目前擔(dān)任Cisco Systems的首席DevOps工程師,創(chuàng)建CI/CD管道,用于在安全和保密環(huán)境中部署云應(yīng)用程序和網(wǎng)絡(luò)基礎(chǔ)設(shè)施。他擁有計算機(jī)工程學(xué)士學(xué)位、計算機(jī)科學(xué)碩士學(xué)位、工商管理碩士學(xué)位和路由與交換CCIE學(xué)位。
Jason King杰森·金是Cisco的解決方案架構(gòu)師,支持公共部門社區(qū)。在思科的11年中,他專注于云、自動化、可編程性和高性能計算。在加入思科之前,他在勞倫斯·利弗莫爾國家實驗室花了10年時間構(gòu)建和調(diào)試了一些世界上最大的HPC集群。他擁有計算機(jī)科學(xué)碩士學(xué)位和路由和交換CCIE學(xué)位。
Contents目 錄
譯者序
前言
致謝
第1章 頓開茅塞 1
1.1 企業(yè)IT成為業(yè)務(wù)風(fēng)險源 1
1.2 災(zāi)難現(xiàn)場的觀察結(jié)果 3
1.2.1 缺少良好的架構(gòu) 4
1.2.2 人為錯誤 4
1.2.3 人比機(jī)器慢 4
1.2.4 自動化測試缺失 4
1.2.5 惡性循環(huán) 4
1.2.6 缺乏敏捷性 5
1.3 DevOps 5
1.3.1 什么是DevOps 5
1.3.2 應(yīng)用程序與基礎(chǔ)設(shè)施 6
1.3.3 利用大規(guī)模自動化 7
1.4 為什么企業(yè)IT部門不采用
DevOps 7
1.4.1 人為因素 7
1.4.2 業(yè)務(wù)因素 8
第2章 良方妙法 9
2.1 目標(biāo):業(yè)務(wù)轉(zhuǎn)型 12
2.1.1 IT設(shè)施的瓶頸 12
2.1.2 業(yè)務(wù)轉(zhuǎn)型 13
2.1.3 DevOps行動手冊 13
2.2 為什么選擇模型驅(qū)動的
DevOps 14
2.2.1 網(wǎng)絡(luò)基礎(chǔ)設(shè)施的不同之處 14
2.2.2 什么是模型驅(qū)動的DevOps 15
2.2.3 什么是數(shù)據(jù)模型 15
2.2.4 可信數(shù)據(jù)源 18
2.2.5 作為框架的DevOps 18
2.3 DevSecOps的內(nèi)置安全性 19
第3章 可調(diào)用的基礎(chǔ)設(shè)施 21
3.1 API 23
3.2 平臺化 27
3.2.1 物理硬件配置 27
3.2.2 統(tǒng)一控制點(diǎn) 28
3.2.3 北向API與南向API 28
3.2.4 API 和功能規(guī)范化 28
3.2.5 編織化服務(wù) 29
3.2.6 可伸縮性 29
第4章 基礎(chǔ)設(shè)施即代碼 31
4.1 為什么采用基礎(chǔ)設(shè)施即代碼 33
4.2 可信數(shù)據(jù)源 34
4.3 數(shù)據(jù)模型 34
4.3.1 數(shù)據(jù)模型編碼格式 36
4.3.2 數(shù)據(jù)模型描述語言 38
4.3.3 通用IaC工具 39
4.3.4 組織結(jié)構(gòu) 40
4.3.5 可信數(shù)據(jù)源的類型 43
4.4 源代碼 51
第5章 持續(xù)集成/持續(xù)部署 58
5.1 CI/CD概述 61
5.1.1 應(yīng)用程序與基礎(chǔ)設(shè)施的
區(qū)別 62
5.1.2 CI/CD實踐 63
5.2 源代碼管理 64
5.2.1 核心功能 64
5.2.2 協(xié)作功能 65
5.2.3 SCM總結(jié) 67
5.3 持續(xù)集成工具 67
5.3.1 CI引擎 68
5.3.2 持續(xù)集成工具的工作方式 69
5.3.3 工作流程示例 69
5.4 基礎(chǔ)設(shè)施仿真工具 71
5.5 測試和驗證 77
5.5.1 語法檢查 78
5.5.2 元數(shù)據(jù)格式/模型驗證 79
5.5.3 功能測試 81
5.5.4 測試和驗證總結(jié) 86
5.6 持續(xù)部署 86
5.7 持續(xù)監(jiān)控 87
第6章 落地實施 89
6.1 模型驅(qū)動的DevOps框架的參考
實現(xiàn) 91
6.2 目標(biāo) 92
6.3 DevOps路線圖 92
6.3.1 架構(gòu) 93
6.3.2 仿真 95
6.3.3 自動化 96
6.3.4 測試 109
6.3.5 部署 118
第7章 事在人為 121
7.1 文化和變革的需求 122
7.2 從“為什么”開始 123
7.3 組織 123
7.3.1 領(lǐng)導(dǎo)力 123
7.3.2 楷模 123
7.3.3 組建一個團(tuán)隊 124
7.3.4 打破藩籬 124
7.3.5 社區(qū) 125
7.3.6 新的工具 125
7.3.7 組織級變革的小結(jié) 128
7.4 個人 128
7.4.1 編程與自動化的對比 129
7.4.2 版本控制工具 130
7.4.3 數(shù)據(jù)格式 130
7.4.4 API 130
7.4.5 模板化 131
7.4.6 Linux/UNIX 132
7.4.7 擁抱變革 133