下面是我在openqrm中去安装、配置、使用puppet。
1、 首先要弄懂puppet是什么,个人觉得这个实在太重要了,不然很难理解puppet的使用。
Puppet是数据中心中,自动配置工具。客户端通过向服务器请求,将需要配置的服务,
或者操作命令从服务器端pull到本地,然后再应用运行。从而达到对众多节点的管理
puppet有两种结构:serverless模式、C/S模式。建议从serverless出发理解其结构特征。
这里从C/S模式来描述puppet结构。
具体结构参考:
http://docs.puppetlabs.com/learning/agent_master_basic.html
在以上的结构中,Puppet使用ssl认证来保护master与agent之间的通信,所以没用通过认证,agent就不能完全运行,agent必须通过认证。
当agent发起一个请求之后,master就会去agent进行认证,认证通过之后,master会编译其上写好的manifest代码,并在agent上创建一个catalog信息。Agent会将catalog中保存的configuration应用到其自身之上,即安装软件、或者配置某个服务等等。
这里有几个术语说明一下:
Manifest:是一个使用puppet语言写成的代码(这个语言是puppet自带的,应该是为了统一接口,或者为了实现其RAL而创立的),以.pp为后缀,这些代码总的来说,就描述了agent需要完成的操作。C/S模式下,manifest是放在master端的,serverless模式,manifest位于agent端。在C/S模式下,master负责对manifest进行编译。
Catalog:就是所有将要被应用到agent端的资源集(资源可以是文件、用户、服务、甚至是一段shell命令)
关于其他属性请参考:
http://docs.puppetlabs.com/learning/agent_master_basic.html
2、 大致了解了puppet的结构,现在就将如何在openqrm中使用他。
首先要安装,客户端、和服务器端(这里最好让服务器端是与openqrm端处于同一端)
我的环境是客户端为centos 5.4,服务器端为 rhel6,这里采用yum安装方法:
rpm -ivh http://yum.puppetlabs.com/el/6/products/i386/puppetlabs-release-6-1.noarch.rpm
客户端:
yum install puppet –y
服务端:
Yum install puppet-server –y
其中会发现会有有些依赖包没有安装,可能需要手动下载安装。
或者直接下载rpm进行安装:
下载地址:http://yum.puppetlabs.com/el/5/products/i386/
注意:要在openqrm中使用puppet必须要在服务器端(master)安装 puppet服务器,(puppet客户端(agent)可选)
3、 配置puppet。
*首先是前期环境:dns。Puppet 的agent和master是通过主机名进行识别对方的。所以要配置dns。
或者如果只是测试,可以修改agent与master端/etc/hosts文件,是双方都能识别对方。
*注意agent与master双方的时钟要一致,可以自己搭建ntp服务器,或者直接同步国家标准时间服务器:
ntpdate 210.72.145.44
*agent端配置: /etc/pupper/puppet.conf [agent]模块: server = 服务器端主机名(hostname) certname = agent主机名 report = true pluginsysc = false(如果你有自己定义的plugin,需要将其设定为true,如果没有就设为false,一样OK)
这部分概念参考:
[url]http://docs.puppetlabs.com/guides/plugins_in_modules.html
http://docs.puppetlabs.com/puppet/2.7/reference/modules_fundamentals.html
[/url]
*服务器(master端)配置。
我的试验环境中,采用了默认配置,什么都没改。
4、 使用puppet:
在客户端:
Puppet agent –test
若出现,如下信息
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
info: Creating a new SSL certificate request for yyp102
info: Certificate Request fingerprint (md5): 8C:78:19:09:BB:7E:44:9C:44:D6:93:29:EA:7D:CF:9A
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
warning: peer certificate won't be verified in this SSL session
Exiting; no certificate found and waitforcert is disabled
说明agent端没有获得master端的认证,
这是在master端执行:
puppet cert list
warning: You have configuration parameter $templatedir specified in [puppetmasterd], which is a deprecated section. I'm assuming you meant [master]
yyp102 (8C:78:19:09:BB:7E:44:9C:44:D6:93:29:EA:7D:CF:9A)
可以看到有个yyp102还没有需要认证,执行:
puppet cert sign yyp102。
说明:
有的时候,有需要agent重新申请认证:
在master端
puppet cert clean yyp102
在agent端:
rm -f /var/lib/puppet/ssl/certs/yyp102.pem
puppetd --test --trace --debug
没有看到异常错误就代表,此时配置是OK的
5、 结合openqrm使用:
在正确配置了puppet之后,启动openqrm中puppet插件,并在openqrm的deployment/puppet/apply选择,已有的资源(这个资源是openqrm的资源,不是puppet中的资源),然后选择某个资源之后,会看到puppet默认配置group,
选中其中的组件,并update。
这时
cd /etc/puppet/manifests (这个目录,不知道记没记错,如果不在这个目录,就到
openqrm所在的目录。默认为/usr/share/openqrm/plugin/puppet/etc/puppt/manifests/目录)
[root@yyp manifests]# ls
appliances classes groups site.pp
会在appliances 目录下生成一个以刚刚openqrm资源命名的.pp文件。这里以之前的yyp102为例。
注意,这里的命名中多了一个oqnet.org,这个是puppet默认的域名,为了能做到自动化,请将puppet的域名改掉(具体怎么改,我也没试过)
[root@yyp manifests]# cat appliances/yyp102.oqnet.org.pp
node 'yyp102.oqnet.org' {
include webserver
}
之所以要提一下这个“多了一个oqnet.org”,原因是,如果我的客户端yyp102没有域名,
这里需要将“oqnet.org”去掉,不然时延的时候就报错。
注:既然是学习openqrm集成puppet的使用,这里要看看webserver的内容。
6、 以上配置,
在agent端运行:
[root@yyp102 puppet]# puppetd --test --trace --debug
这时就能看到运行结果。
还可以在master端运行一个命令,也同样可以将配置应用到agent端。
puppet kick -d --host yyp102
具体请参考:
http://blog.sina.com.cn/s/blog_4e424e210100plcw.html
7、 要写自己manifest,必须要学习puppet语言。
以上为原创,转载请注明出处。