1 概述
通過安裝部署Puppet C/S模型,實作Puppet Server端管理所有被控制機的整個生命周期:從初始化到軟體更新、從配置檔案建立到測試部署、從系統維護到伺服器遷移等。Puppet能夠持續化的與被控制機進行互動,進而實作配置檔案的及時檢測更新。結合SVN版本控制系統,puppet可在更新之前将目前正在運作的環境以版本的方式儲存到SVN版本控制系統中,友善以後通過puppet更新出錯或者需要復原到之前的某一個環境時快速恢複。
2 關于Puppet
2.1 Puppet簡介
Puppet是由Puppetlabs公司開發的系統管理架構和工具集,被用于IT服務的自動化管理。由于良好的聲明式語言和易于擴充的架構設計以及可重用可共享的子產品,使得Google、Cisco、Twitter、RedHat、New York Stock Exchange等衆多公司和機構在其資料中心的自動化管理中用到了puppet。同時,puppet在Openstack中也發揮着重要的作用:Openstack-intra社群将其用于Openstack wiki系統,持續內建系統等等的運維管理;此外社群的puppet-openstack項目用于完成Openstack服務的自動化部署和管理,目前已經在stackforge中托管并通過Openstack的Gerrit系統來管理代碼送出;此外,Cisco,RedHat,Miriantis等多家公司的Openstack發行版或部署工具中均使用到了puppet-openstack。目前,Puppet在UnitedStack的日常運維管理和産品的自動化部署中也起到了重要作用。
- 基于Ruby開發,并使用Apache 2.0 license協定授權的開源軟體,分企業版和開源版;
- 主要由Luke Kanies和他的公司Puppet Labs開發;
- 基于C/S架構,它既能以用戶端-服務端的方式運作,也可以獨立運作;
- Puppet對于系統管理者是抽象的,隻依賴于ruby與facter;
- 可以通過伺服器端觸發或者節點自動同步的方式進行互動;
- Puppetlabs官網http://www.puppetlabs.com/ ;
- 目前最新版本為3.4.3;
注:2.7.0以前使用GPLv2協定授權 。
2.2 Puppet功能
Puppet 能管理多達将40多種資源管理,例如:file、user、group 、host、package、service、cron、exec、yumrepo等,适合管理一台主機或者虛拟機的整個生命周期:從初始化安裝到軟體更新,從系統維護到伺服器遷移,從SSH配置到Apache虛拟主機建立。Puppet被設計成能夠持續化的與被控制機進行互動,和Cobbler不同的是Puppet不僅僅提供一個搭建主機系統的服務,它還提供管理作業系統之上應用伺服器的工具。
2.3 Puppet内部工作流程
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauUjMzEldTt2X25UbHFUQml1M4lnYkRGZNFTbvl2S39CXCVzLcJjMvwVMw00LcJDMzZWe39CXt92Yu8GdjFTNuMzcvw1LcpDc0RHaiojIsJye.jpg)
2.4 Puppet模型
部署:通過C/S模式或者S模式進行部署,通過觸發或者主動定時同步進行更新
配置語言及資源抽象:通過Puppet語言定義一系列的具有依賴關系的資源将主機系統上的配置、服務等元素進行抽象,并以狀态的形式表現出來。
事物層:對Puppt文法配置進行解釋和編譯然後同步到agent上應用配置,并向Master端傳回運作結果
2.5 Puppet目錄結構
2.5.1 Puppet目錄結構:
- manifests/init.pp必須存在
- 主配置為puppet.conf
2.5.2 Puppet子產品結構:
- files目錄存放檔案
- manifests目錄存放pp檔案
- templates目錄存放erb模版
2.6 關于嗅探器facter
facter是一個系統盤點工具,它提供的一個标準方式去獲得用戶端環境變量等相關資訊,并自動建立為可以被Puppet使用的變量。
Facter能獲得哪些資訊
2.7 Puppet開源版與企業版對比
3 總結
此文是在大神www.kisspuppet.com部落格的基礎上,結合自身學習所得。在後續Puppet系列中,将會介紹Puppet自動化配置管理平台的搭建、Puppet與SVN的結合、Puppet利用Nginx多端口實作負載均衡等技術。