<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"=>["intel core 2 duo p9xxx (penryn class core 2)", "intel core 2 duo p9xxx (penryn class core 2)"], "physicalcount"=>2, "count"=>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變量分類圖