第一課:Puppet 入門介紹
目前存在多個不同的配置管理軟件,各有優劣,本屆課程做簡要介紹對比,講解puppet基本原理和入門知識。
課程內容:
運維自動化軟件簡要介紹和對比
Puppet安裝(master/agent,standalone模式),升級,主要配置選項簡要介紹,支持系統和平臺,Ruby環境依賴(RVM簡要介紹)。
基本工作原理,編譯和catalogs。
核心配置文件。
puppet的第一個基本配置文件。
第二課:Puppet基本命令和語法
puppet實現了自己的DSL,本節課講解puppet的語法。
課程內容:
puppet基本命令
語法風格。
保留關鍵字,命名規范
變量(作用域),數據類型
表達式,條件語句
functions(函數/方法)
檢查puppet配置的命令。
第三課:資源和資源類型
puppet的資源是整個puppet配置更為核心的地方,puppet對整個系統的管理主要依賴于資源實現。本節課程講解puppet資源和資源類型。
課程內容:
介紹RAL(Puppet’s resource abstraction layer),types和providers。
講解puppet資源和資源類型,核心資源類型。
獲取當前系統的存在資源和資源類型,manifest,并創建自己的puppet資源配置文件。
資源順序 ordering(元參數,order關鍵字, stage,auto-order)。
資源默認值。
資源標簽。
虛擬資源,導出資源。
第四課:Puppet 類,模塊,模版
puppet通過一定的抽象實現來對某一類特定資源進行管理,比如ssh,會包括配置管理和服務管理,軟件包管理幾個部分,如何抽象出成為一個‘組合’(module),如何適應不同的操作系統,如何抽象配置文件,實現代碼重用。
課程內容:
無參數類,有參數類,命名空間。
資源收集器。
puppet模塊。
文件和ERB模版,ERB模版語法。
defined types。
第五課:Facts和Hiera
facts為puppet提供了節點級別的metadata,使得puppet可以根據 facts進行個性化的配置,比如是否是云服務器,就可以針對性的對主機進行配置變更優化和升級等等操作。除了puppet自帶核心facts,也會涉及到如何自定義facts,來進一步增強puppet的功能。
如何重用已有的Puppet代碼,如何隔離敏感數據和配置(Hiera)。
課程內容:
facts(內置變量)
自定義facts
hiera介紹和使用
結合hire和facts以及環境變量。
第六課:節點管理
日常工作中會有不同類型的服務器,有的是物理服務器,有的是云服務器;有的是db服務器,有的是web服務器;那么如何進行有效節點管理/分類也成為我們眼前的一個難題,本節課講解節點分類的常見方法。如何有效的進行不同維度的節點管理。 比如,如何巧用環境變量來區分開發和測試環境,不同服務器的角色。
課程內容:
fqdn節點匹配,正則表達式匹配
外部節點分類器(ENC)
結合puppet環境變量和hiera,custom facts,自定義節點分類器(self-classifier)
第七課:大規模部署 和 版本控制
實際工作中可能有成百上千,成千上萬臺服務器需要管理維護,比如由于安全漏洞,要升級openssl到特定版本,本節課如何大規模部署puppet,同時在大規模集群環境下如何提高puppet的性能,puppet的架構如何擴展。
課程內容:
如何結合版本控制,環境變量,管理puppet的代碼。
puppet master節點瓶頸和擴展。
自動簽名。
文件資源管理優化。
第八課:Puppet 其它組件介紹
有些時候我們并不需要每一個模塊都自己編寫,我們也可以借鑒已有的代碼,如何迅速高效高質量完成工作是我們的目標,本節課講解如何借助已有的代碼迅速增加自己的puppet模塊。
有些時候我們需要不同agent節點共享其它節點的數據,比如db服務器的需要添加web節點ip作為白名單。
有些時候我們需要一些額外的功能,比如facts里面的某些配置是true 或者 false,但是是字符串變量,如何轉換成為boolean類型呢?
課程內容:
Puppet DB 和導出資源。
Puppet Dashboard。
Puppet Forge。
Puppet stdlib。
第九課:puppet整合實戰
以具體業務系統講解實際環境puppet配置管理。本節課內容會包含多個模塊設計和編碼。
第十課:Mcollective
并行作業執行系統,運維工程需要經常臨時執行一些命令以便檢查所有服務器特定文件內容,或者特定運行指標,甚至是下載特定文件等等,使用mco可以根據預定義的factor甚至是自定的特征批量執行任務命令。
課程內容:
mco 配置和使用。
|