天天看點

運維前線:一線運維專家的運維方法、技巧與實踐2.3 Puppet及Facter介紹

<b>2.3 puppet及facter介紹</b>

<b></b>

本節所要講的不是重複造輪子,而是如何有效地利用開源工具建構自己的平台。首先我們來看看cmdbuild操作界面,如圖2-4所示。

圖2-4 cmdbuild操作界面

從圖2-4中可以看出,cmdb的資訊收集可以是多種多樣、共融共存的:

(1)通過一些agent用戶端收集資訊,然後注冊到中心伺服器資料庫。

(2)通過監控系統收集,比如zabbix、nagios、ipmi等。

(3)通過配置管理工具收集,比puppet、saltstack、ansible等。

我在本文中使用配置管理工具puppet的facts來進行資訊收集,最主要的原因是,目前我使用的是puppet來管理所有的機器,是以使用facts最友善、簡單、快捷,成本低而且效率高,如果讀者使用的是ansible或其他配置管理工具來做管理,本文中所介紹的方法也可以通用。

2.3.1 什麼是puppet

通常定義:puppet是一個跨平台的集中化配置管理系統,它使用自身的描述語言,可管理配置檔案、使用者、cron、軟體包、系統服務等,puppet把這些統稱為“資源”。puppet設計的目标就是簡化對這些資源的安裝、配置、管理,以及妥善處理資源之間的依賴關系。

2.3.2 為什麼是puppet

puppet能夠幫助系統管理者友善、快速地管理所有機器,目前puppet已經能夠支援所有的用戶端,主流的有redhat、centos、gentoo、debian、ubuntu、solaris、suse、mac os x、freebsd、openbsd、windows,等等。

支援的資源衆多:目前puppet支援的資源有很多,其中常用的包括file、package、exec、service、group、host、router、yumrepo、user、cron、sshkey等,更多的相關資訊和使用方法可以參考https://docs.puppetlabs.com/references/latest/type.html。

第三方子產品衆多:目前puppet的第三方子產品衆多,基本包含了我們所能使用的全部軟體子產品,例如mysql、django、java、php、nginx、apche、openstack、ssh、tomcat、jboss、yum等。

2.3.3 什麼是facter

facter是puppet跨平台的系統性能分析庫。它能發現并報告每個節點的資訊,在puppet代碼中是以變量的形式出現的。它傳回的是每個agent的fact資訊,這些資訊包括主機名、ip位址、作業系統、記憶體大小及其他的系統配置選項,這些fact資訊在puppet agent運作的時候進行收集并傳遞給master,同時被自動建立為可以被puppet使用的變量。

2.3.4 facter的特點

facter最大的作用就是收集伺服器系統資訊,包括主機名、ip位址、作業系統、記憶體大小及其他的系統配置選項。這些系統配置選項正是cmdb所需要的基礎核心資料。

我們先來看看facter收集的系統資料,下面将列舉一些常用的系統資料,具體資訊如下。

(1)facter擷取fqdn資訊,在facter中fqdn=hostname + domain:

$ facter fqdn

puppet.domain.com

(2)facter擷取ip位址:

$ facter ipaddress

10.20.122.100

(3)facter擷取mac位址:

$ facter macaddress

00:1a:4a:25:e2:10

(4)facter擷取空閑記憶體大小:

$ facter memoryfree

1.61g

(5)facter擷取記憶體大小:

$ facter memorysize

1.83g

(6)facter擷取作業系統:

$ facter operatingsystem

centos

(7)facter擷取cpu資訊:

$ facter processors

{"models"=&gt;["intel core 2 duo p9xxx (penryn class core 2)", "intel core 2 duo p9xxx (penryn class core 2)"], "physicalcount"=&gt;2, "count"=&gt;2}

(8)facter擷取機器運作時間:

$ facter uptime

1 day

2.3.5 facter變量

facter目前的最新版本為3.4.1(截至本章寫作時),支援的變量有131個,所支援的變量可以在官方網站http://docs.puppetlabs.com/facter/latest/core_facts.html中檢視。facter所支援的變量可以按使用頻率簡單劃分為常用類型和不常用類型,具體如圖2-5所示。

圖2-5 facter變量分類圖

繼續閱讀