天天看点

运维前线:一线运维专家的运维方法、技巧与实践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变量分类图

继续阅读