發表於2024-11-27
在雲時代,Chef作為DevOps運動的重要工具之一,主要用於實現自動化配置管理和運維,幫助大大小小的企業解決各種運維問題。本書針對剛開始接觸配置管理的開發人員和係統管理員,闡述瞭如何在短短幾分鍾或者幾個小時之內搭建和部署應用,而不像以往那樣要花幾天或者幾周時間。
本書介紹如何寫基於Ruby的Chef代碼,通過實例來引導讀者逐步掌握各種Chef工具和配置管理概念。隻要略懂命令行,熟悉基本的係統管理,就可以通過本書迅速掌握Chef。
Chef作為 DevOps運動的重要工具之一,用於快速實現雲端自動化配置管理。全書共16章,主題涉及Chef配置管理、Ruby及其語法、如何寫Chef recipe,如何用Test Kitchen管理沙盒測試環境,如何用Chef客戶端管理單個節點,Chef cookbook如何寫和如何用,如何用Chef服務器管理多個節點,搜索、數據包、角色、開發環境和測試等都有介紹。
本書是一本介紹Chef基礎架構自動化平颱的入門書,有比較強的實操性,很適閤剛開始接觸Chef、配置管理和自動化編程的讀者閱讀和參考。
Mischa Taylor是一名Chef谘詢師,這傢位於西雅圖的高成長新創公司,主營業務為打造Chef平颱,快速實現自動化配置,並將業務過程移到雲端。他的興趣聚焦於打造高質量的産品和提升組織內部工程實踐的生産力。他能說會道且擅長指導,同時在軟件開發和神經網絡計算方麵也頗有專研和造詣。
Seth Vargo是HashiCorp的軟件工程師和開源倡導者。他先後任職於Chef (Opscode), CustomInk和匹茲堡的多傢新創公司。他對技術和組織文化有很強烈的愛好。在寫代碼和開源相關工作之餘,他喜歡參與本地用戶組和會議。他是匹茲堡DevOps Days的組織者。
閆諾,Chef創始工程師。在Chef軟件公司任職期間作為主要工程師研發瞭托管企業Chef服務。2011年離開Chef參與創辦消費者推薦搜索引擎公司Livestar,2013年並入以圖片為基礎的推薦、探索引擎公司Pinterest。在Pinterest任職期間,他參與構建綜閤性實時認知及響應平颱,後者服務於Pinterest的自動化垃圾內容處理、通知推送服務、廣告服務及內容推薦服務等。2015年底,他離開Pinterest,目前正在為解決新的工程挑戰而忙得樂此不彼。
閆諾畢業於美國華盛頓大學(西雅圖),大學主修應用及計算數學。平時對世界各地的文化和各類藝術很感興趣。工作之餘,時常為朋友圈內有需要的創業公司提供幫助,積極參與鼓勵大學生學習科學、技術、工程及數學的公益項目。
前言 .1
第1章 配置管理和Chef ...........7
什麼是配置管理 ........7
為什麼需要配置管理工具來實現IT自動化 ........8
Chef是什麼 ...9
為什麼企業需要Chef .9
接下來要做什麼 ......12
第2章 配置Chef開發環境 ..... 15
安裝一個適閤程序員使用的文本編輯器 ..........16
Chef開發工具 ..........17
在Linux下安裝Chef開發工具 ..18
在Windows下安裝Chef開發工具 .........32
小結 41
第3章 Ruby和Chef語法 ....... 43
Ruby概述 ....43
Ruby語法和案例......44
Chef語法和案例 ......54
第4章 如何寫第一個Chef配方單 ........... 61
創建代碼的目錄結構 ...........61
寫下第一個Chef配方單 .......62
驗證第一個Chef配方單 .......63
用配方單指定理想配置 .......65
卸載時,須明確指定不要做什麼 ........69
小結 71
第5章 用Test Kitchen管理沙盒測試環境 73
安裝Vagrant和VirtualBox ....75
啓動自己的第一個虛擬機 ...79
YAML概覽 .84
用.kitchen.yml配置Test Kitchen .........86
小結 87
第6章 用Chef客戶端管理節點 .. 89
什麼是節點 .89
在一個節點上創建沙盒環境 90
用Test Kitchen在節點上安裝Chef客戶端 .........91
第一次運行Chef客戶端 .......93
Chef客戶端的三種模式 .......95
命令行工具Ohai ......96
訪問節點信息 ..........98
小結 ..........100
第7章 撰寫和使用菜譜 ....... 103
你的第一個菜譜:每日消息 ..103
你的第一個菜譜:每日消息(使用Chef開發包) .....104
Cookbook_file資源簡介 ....106
你的第一個菜譜:每日消息(Chef客戶端) .107
Cookbook_file資源簡介 ....109
第一次運行Chef .... 110
驗證結果 .. 112
剖析Chef運行 ........ 113
菜譜結構 .. 116
必須瞭解的四個資源 ......... 119
Apache菜譜:手把手教你創建菜譜 .. 119
小結 ..........130
第8章 屬性 133
Motd-Attributes菜譜 ..........134
設定屬性 ..136
屬性優先級基礎 ....138
Include_Recipe ......139
屬性優先級 142
屬性排錯 ..143
小結 ..........146
第9章 用Chef服務器同時管理多個節點 147
手動安裝企業Chef .149
使用菜譜來自動化安裝企業Chef服務器 ........151
冪等性簡介 154
配置企業Chef服務器 .........159
測試連接 ..165
準備一個新節點 ....166
用Chef Solo配置Chef服務器 173
小結 ..........174
第10章 社區以及Chef-Client菜譜 ....... 175
使用社區菜譜 ........175
Chef-Client菜譜 .....177
Knife Cookbook Site插件 ..180
使用Knife Cookbook Site搜索社區菜譜 .........181
通過Knife Cookbook Site管理Chef服務器中的社區菜譜 ...........182
Chef-Client配方單 .184
配置Knife使用生産環境SSL設置 ......186
配置Chef-Client使用生産環境的SSL設置 ......188
小結 ..........196
第11章 Chef Zero .. 197
Test Kitchen和Chef Zero ...197
用Chef-Playground在宿主機器上運行Chef-Zero .......200
小結 ..........205
第12章 搜索 .......... 207
從命令行搜索 ........207
用Knife從命令行搜索 ........208
使用Test Kitchen從配方單中搜索 ..... 211
小結 ..........215
第13章 數據包 ....... 217
在配方單中使用數據包項目的數據創建本地用戶 .....222
驗證用戶 ..226
加密數據包 227
小結 ..........233
第14章 角色 .......... 235
創建一個網頁服務器角色 .236
屬性和角色 238
角色和搜索 239
角色菜譜 ..241
小結 ..........242
第15章 環境 .......... 243
創建一個開發環境 .244
屬性和環境 245
完整實例 ..247
小結 ..........258
第16章 測試 .......... 259
關於測試 ..259
重溫Apache菜譜 ....262
使用Serverspec進行自動化測試 ........266
使用Foodcritic進行自動化測試 .........283
使用ChefSpec進行自動化測試 ..........287
小結 ..........295
第17章 結語 .......... 297
詞匯錶 ......298
附錄A 開源Chef服務器 ...... 301
附錄B 托管企業Chef .......... 323
learning_chef-table.indd 9 16/6/28 下午3:32
第1章 配置管理和Chef
Chef是一個麵嚮(像你一樣的)信息科技(IT)專傢和軟件工程師的配置管理工具。由
於配置管理有許多不同的定義,所以讓我們先來解釋在本書中配置管理代錶的意思以及
為什麼你需要一個配置管理工具。我們同時會介紹Chef並講解為什麼你需要它。
什麼是配置管理
在IT行業中,配置管理是在將軟件應用程序發布給消費者的過程中對以下實體進行管理
的工程實踐:
? 硬件
? 軟件
? 基礎架構
? 人
? 流程
配置管理源於解決團隊工作中最基本的挑戰。當你是唯一的係統管理員並管理少量服務
器時,變化管理一般沒有多復雜;然而協調若乾係統管理員和工程師來管理數百甚至成
韆上萬個服務器和應用程序來支持巨大數量的用戶,則非常復雜,並往往需要一些工具
來支持。
現代的IT配置管理工具通常包含對Mark Burgesspass提齣的自動化和基於策略的理論之
實現。他在二十世紀九十年代末到韆禧早年間在奧斯陸大學學院任教授時開發瞭IT自動
化理論的如下核心思想。
? 配置改變必須由一種係統化的方式處理來保證係統的配置是正確和可靠的。
? 係統本身一定要有一些自救措施,從而錯誤可以自動被偵測到並修復而無需明確的
指令。
當下的IT配置工具的代錶包括CFEngine、Puppet、Microsoft Windows中的Desired State
Configuration引擎、Ansible、SaltStack以及(毫無疑問)Chef。
為什麼需要配置管理工具來實現IT自動化
在管理復雜的企業基礎架構時使用自動化配置管理工具,有很多至關重要的原因,以下
是其中四個重要原因。
? 一緻性。如果基礎架構是手動配置的,怎樣纔能知道所有的服務器的配置都一緻?
再者,怎樣纔能確定所有的服務器配置都符閤標準和安全需求?(比如說, 係統管
理員有沒有在相應係統裏記錄所發生的改變?)
使用一個配置管理工具來自動化重復的任務能使係統管理員事半功倍。當這些可重
復的任務非常艱難和復雜時,人工通常很難每次都將它們一模一樣地完成。而這正
好是電腦(配置管理工具)擅長做的事情。讓配置管理工具來自動化這些復雜的任
務可以讓係統管理員專注於其他人類擅長的重要的事情。
? 高效的變化管理。當基礎架構沒有使用配置管理工具而完全手動構建的時候,人們
通常害怕改變。長久以往,這些手動管理的服務器通常會包含大量難以理解和更改
的零碎配置。
在這些情況下,公司或組織機構一般會使用大量的流程去管理變化,而這些流程通
常希望最小化變化或最大化延遲變化的發生。這通常造成延遲發布用戶所需要的新
功能。
當服務器永遠可以輕鬆重建時,改變便不再可怕,相應的,管理變化的流程也會變
少。小的改變隨時可以發生,比如每天,甚至每天多次。
? 簡化重建。當服務器是手動建立的時候,從零重建往往不容易。那麼如果服務器在
災難性事件中被摧毀瞭怎麼辦?多久纔能恢復服務?
使用配置管理工具自動部署能幫助快速地恢復服務。與其在服務器上進行更新或部
署應用程序補丁(有可能是零碎的操作),係統管理員可以快速通過自動的方式建
立一個新的、完成更新的係統然後把舊的關掉。當重建很方便的時候,係統管理員
則更無懼對基礎架構進行快速的迭代和改變。
? 透明性。配置管理工具帶有監視和匯報功能。監視係統管理員所做的工作並不需要
很復雜的工具,但試圖理解一個包含若乾係統管理員和若乾軟件工程師,每天部署
若乾次軟件改變的工程團隊都做瞭些什麼,的確需要一個配置管理工具。
當基礎架構變化由自動化係統來完成時,所有改變都可以自動登記在相應的跟蹤係
統中來提高透明度,顯示齣團隊所做的有意義的工作。
Chef是什麼
Chef是可以用來配置和管理物理數據中心或雲中基礎架構的自動化平颱。可以把它部署
到公司最適閤的基礎架構類型中。可以用Chef來加速應用程序部署,甚至完成持續部署
流程。Chef的關鍵威力在於它將基礎架構變為代碼。
用代碼來錶示基礎架構意味著計算環境擁有一些與其應用程序一樣的屬性。
? 基礎架構可以有不同版本。
? 基礎架構可以被隨時重建。
? 基礎架構可以擁有完整的測試來保證正確性。
圖1-1展示瞭Chef的基本架構。
Chef開發包的組件可以幫助支持你在開發機器上寫Chef代碼;Chef服務器的組件可以幫
助延伸配置管理能力,使你可以管理成百上韆或更多的服務器。
為什麼企業需要Chef
當Adam Jacob在2009年最開始創建Chef時,他有三個重要的觀點來解決他在其他配置管
理工具中看到的不足。
1. 配置管理工具應該對雲基礎架構提供頂級支持。
2. 任何一個基礎架構都是獨一無二的。復雜的企業基礎架構要能夠極大地得益於將其
IT基礎架構和應用程序部署流程以代碼來建模。
3. 卓越的工具和點子來源於活躍的用戶社區。光靠一個人的力量是不夠的。
圖1-1:Chef架構
在過去的幾年裏,Chef在活躍社區的支持下發展成為一個強大的、與眾不同的配置管理
工具,相比其他産品,它具有以下優勢。
超強的可伸縮性
類似Facebook之類的客戶http://www.pcworld.com/article/2084900/facebook-uses-aseasoned-
chef-to-keep-servers-simmering.html[使用Chef管理上萬颱服務器],而僅僅
需要少量人力資源。
極其強大
Chef(客戶端)建立在Ruby編程語言之上,當你需要的時候,可以直接使用Ruby來
自定義Chef。
learning_chef-all.indd 10 16/6/28 下午2:49
配置管理和Chef | 11
多種用法
你可以通過很多方式使用Chef。Chef可以在無服務器模式獨立運行或配閤中央服務
器(Chef服務器)運行。你也可以選擇使用推送或拉(輪詢)模式(或兩種結閤)
來做部署。
開放
Che f完全開源並擁有一個非常活躍的由係統管理員和軟件工程師組成的用戶社
區。開源Chef被用來支持Dell的産品(https://www.cloudave.com/14174/opscodechef-
the-secret-sauce-behind-dell-open-source-crowbar/)、Facebook(https://www.
getchef.com/blog/2013/02/04/facebook-likes-opscode-and-private-chef/)和亞馬遜雲
服務(https://www.getchef.com/blog/2013/02/20/aws-opsworks-uses-opscode-chef-asdefault-
automation-engine/)。
透明
Chef分析平颱強化Chef,讓你可以在重要改變生效的時候收到通知來保證對標準的
遵循。
Chef獨特的特性體現齣強大的靈活性。你不需要為適應Chef而掙紮,而是讓Chef適應你
和你的環境。你可以部署到雲或本地基礎架構,也可以在代碼中描述任何資源,無論它
們和標準的配置有多麼不同。
使用Chef,通常並不需要從零開始寫描述基礎架構的代碼。許多標準的基礎架構配置和
任務的菜譜都已經在Chef超市(https://supermarket.chef.io/)中,免費的。
一旦掌握Chef,就可以用它來做以下事情。
? 完全自動化部署,包括內部和麵嚮用戶的係統。
? 自動化伸縮基礎架構。
? 讓基礎架構自我修復。
舉例而言,Tom Hallet使用Chef創建瞭一個叫SoloWizard的工具來自動化其Mac OS X開
發機器的部署。SoloWizard基於Pivotal Labs所做的促進開發者和最終用戶使用自動化的
工作。正像圖1-2中所示,SoloWizard允許你一鍵創建一個新的開發環境。你甚至可以通
過在一個簡單的網站上做選擇來個性化輸齣的腳本。此工具在SoloWizard網站(http://
www.solowizard.com)可以找到。
圖1-2:SoloWizard自動化創建Mac OS X開發工作站
接下來要做什麼
在本書的前半部分,我們會講解Chef客戶端的基本組件,展示如何利用代碼使基礎架構
可以進行版本控製和使其可以重復。我們會講到以下三個主題:
? Test Kitchen
? Chef Solo/Chef Local
? Cookbooks(菜譜)
learning_chef-all.indd 12 16/6/28 下午2:49
配置管理和Chef | 13
我們也會利用大量動手實例來讓你掌握和鞏固Chef基礎架構編程的基本要素。
在本書的後半部分,我們會介紹Chef服務器的基本要素,展示如何在基礎架構復雜度和
學習Chef:雲時代的配置管理與自動化運維技術 下載 mobi epub pdf txt 電子書 格式
學習Chef:雲時代的配置管理與自動化運維技術 下載 mobi pdf epub txt 電子書 格式 2024
學習Chef:雲時代的配置管理與自動化運維技術 下載 mobi epub pdf 電子書好書
評分需要用到的知識,買來看看
評分沒看
評分不錯 不錯 不錯 不錯 不錯
評分好好哈哈哈哈哈好好還好好
評分看下瞭解下瞭
評分於配置管理有許多不同的定義,所以讓我們先來解釋在本書中配置管理代錶的意思以及
評分例子不錯,但是資料少沒有辦法
評分好好哈哈哈哈哈好好還好好
學習Chef:雲時代的配置管理與自動化運維技術 mobi epub pdf txt 電子書 格式下載 2024