Puppet 2.7安装配置与扩展

服务器:10.1.20.154 ~ 155,RHEL 5.4
puppet服务器端:10.1.20.154 test_1.com
puppet客户端:10.1.20.155 test_2.com

一、概况
Puppet基于C/S架构,服务器端保存着客户端的所有配置代码,称为manifest,客户端下载manifest后,根据其内容对本机进行配置,如软件的安装、文件的管理、用户的管理等。

Uinux/Linux里的软件、用户、文件以及crontab等,在puppet里统一称之为“资源”,每种资源都有其对应的属性,如文件资源的权限属性,一些资源的共有属性称为元属性。manifest里的代码主要由这些资源和资源的属性构成。

从puppet 2.6.0开始,puppet简化了可执行命令,使用puppet + subcommand的方式来完成所有的操作。如:puppetmasterd用puppet master替代,puppetd用puppet agent替代等等,这样一来,命令的作用非常明确,从字面意思就可以看出来。可使用命令puppet help查看详细用法。
这种变化也反应到了puppet配置文件puppet.conf中,如:关于master的配置被写入[master]配置段中,关于agent的配置被写入[agent]配置段中等等。
puppet配置文件目录默认是/etc/puppet,文件名为puppet.conf,文件中包含多个配置段,配置段中包含一系列缩进过的 setting = value行。
配置段包括:
[main]:始终生效,但是其中的设置可以被后面配置段中相同的设置覆盖掉
[agent]:对puppet agent生效
[master]:对puppet master和puppet cert生效
[user]:仅对puppet aply模式生效,一般可能用不到
生成默认配置文件:
puppet master --genconfig >puppet.conf
puppet agent --genconfig >puppet.conf

二、Puppet组件:
Puppet:主程序,依赖软件Ruby、Facter;
Facter:主机资料收集器,把收集到的主机资料发送给puppet master;
Dashboard: Puppet图形管理界面,可选组件,要求Ruby 1.8.7;
MCollective:Puppet调度器,可选组件,解决多个agent同时向master请求时造成的性能下降问题,需要中间件的支持,可选择rabbitmq或activemq。

三、安装:
Puppet版本:2.7.19,Facter版本:1.6.13,Ruby版本:1.9.3;
这里忍不住要说一下,最开始看官方网站,只说puppet dashboard要求ruby >1.8.6,后来等到我准备安装dashbaord时,仔细看了一下manual,才发现它要求ruby版本是1.8.7,而使用ruby 1.9.x会有问题,这也太他妈坑爹了。但我也懒得重新搞,所以放弃了dashboard。
ruby 1.8.7是08年放出的,到现在都4年了,生命周期即将终结,ruby开发团队已经停止对该版本的维护了。但很多ruby的周边软件要么是08年发布的,到现在没有更新过,要么是跟ruby 1.9.x有冲突。这方面的例子不单单只有dashboard和mongrel。我对ruby的印象非常的不好,每月的编程语言排行榜上,ruby基本上每次都是前十名垫底,这不是没有道理的。
根据puppet的README.md,ruby 1.8.5、1.8.7和1.9.2经过了puppet官方测试,其它版本要自行承担风险。但由于1.9.3修复了之前版本的很多漏洞,我还是决定使用ruby最新版本。
因为虚拟机不能连网,只能使用源码安装的方式,所有软件先下载到本地然后上传到服务器。
大致过程:修改主机名,时间同步,添加防火墙,添加puppet用户,安装依赖,安装puppet。
客户端与服务器端执行相同的操作。
时间同步:略,SSL认证时需要。
修改主机名及host表:略, Puppet证书需要。
注: Puppet证书使用的主机名必须是FQDN(完全合格域名/全称域名),即主机名+域名的格式。
用户名添加:useradd -M -s /sbin/nologin puppet
依赖安装: ruby、facter,ruby需要YAML库的支持。

yaml安装:
yaml是一种语言,而libyaml库是yaml的C语言实现。参考:http://zh.wikipedia.org/zh-cn/YAML和http://pyyaml.org/wiki/LibYAML

  1. tar -xf yaml-0.1.4.tar.gz && cd yaml-0.1.4
  2. ./configure && make && make install
  3. echo '/usr/local/yaml/lib' >/etc/ld.so.conf.d/libyaml.conf
  4. ldconfig
注:configure时没有指定--prefix,因为如果指定,在安装完ruby,使用gem时,如gem -v或使用gem安装软件时会提示错误:
/usr/local/ruby-1.9/lib/ruby/1.9.1/yaml.rb:56:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby。
openssl安装:
  1. tar -xf openssl-1.0.1c.tar.gz && cd openssl-1.0.1c
  2. ./config --prefix=/usr/local/openssl-1.0.1 -fPIC
  3. make && make install
ruby安装:
  1. tar -xf ruby-1.9.3-p286.tar.gz && cd ruby-*
  2. ./configure --prefix=/usr/local/ruby-1.9
  3. make && make install
  4. echo 'export PATH=$PATH:/usr/local/ruby-1.9/bin:/usr/local/ruby-1.9/sbin/' >>/etc/profile
  5. source /etc/profile
facter安装:
  1. tar –xf facter-1.6.13.tar.gz && cd facter-*
  2. ruby install.rb
facter安装时可能遇到的错误:
 
Could not load openssl Ruby library; cannot install
解决办法:进入ruby的源码目录下的ext/openssl,执行ruby extconf.rb命令。具体如下:
  1. cd ruby-1.9.3-p286/ext/openssl
  2. ruby extconf.rb --with-openssl-lib=/usr/local/openssl-1.0.1/lib/ --with-openssl-include=/usr/local/openssl-1.0.1/include/
  3. make && make install
puppet开源版安装,可以选择官方网站下载,也可以到github下载,两个地址如下:
http://puppetlabs.com/misc/download-options/
https://github.com/puppetlabs/puppet
  1. tar -xf puppet-2.7.19.tar.gz && cd puppet-*
  2. ruby install.rb
  3. cp conf/RedHat/* /etc/puppet

相关推荐