一、
先阐述一下今天碰到的问题,是有关ruby版本的问题,报错如下:
err: Could not request certificate: SSL_connect returned=1 errno=0
state=SSLv3 read server certificate B: certificate verify failed. This
is often because the time is out of sync on the server or client
Exiting; failed to retrieve certificate and waitforcert
is disabled
这个报错,查到的资料说一方面可能是两端的时间不同步,还有就是ruby的版本问题,资料说是ruby
1.9.2的版本不会在/var/lib/ssl/certs中不会生成ca.pem文件,并给了参考http://blog.sina.com.cn
/s/blog_645c42180100syt8.html
我的客户端是ruby1.8.7,我试验的master是ruby 1.9.3p194
我只是对两端的时间进行了同步,并重新认证了一遍,然后配置依旧生效,这提到的版本问题,我想或许是最新的版本对这个问题有解决,或者是客户端的ruby版本不能比master高。
今天开始我们的第二篇,这篇我们将在linux平台进行安装配置并应用。
puppet是C/S模式的应用服务,在这种模式下,puppetmaster包含了我们的配置数据,而puppetagent则使用SSL协议连接到
master并取回需要的配置。在大部分平台上,puppet的配置位于/etc/puppet目录,puppet的主配置文件是
puppet.conf,它位于/etc/puppet/puppet.conf,这个文件将在puppet安装的时候被创建,如果没有,也可以使用命令
创建一个简单的配置文件
#puppetmasterd --genconfig > puppet.conf
二、
我们采用linux的平台来进行我们的学习之旅,其实Windows下只需要替换相应配置文件的路径就可以了。
简单介绍下我们的实验环境
puppet的客户端和服务器是通过ssl链接的,在服务器有一个自签名的根证书,在安装软件的时候自动生成。注意:要在安装软件以前先设置主机名,因为
生成证书的时候要把主机名写入证书,如果证书生成好了再改主机名,就连不上,这是很多初学者遇到的问题。每个客户端的证书要经过根证书签名才能和服务器连
接。所以首先要在客户端执行下面的命令来请求服务器签名证书。
主机名要设置为FQDN格式,并写到hosts文件里
hosts文件为:
172.16.1.1 master.puppet.com master
172.16.1.2 slave.puppet.com slave
三、
按照前一篇的安装方式,我们安装好puppet master
#yum install -y puppet-server
我们在puppet.conf中添加一个条目,certname,配置项certname指定了puppet master的名字,如下
[master]
certname=master.puppet.com
添加certname配置的目录有两个:它会使证书相关的问题解决起来更容易,冰洁解决了在目前许多linux主机上都存在的Ruby
SSL代码错误,这个错误导致了我们需要手动指定puppet
master的SSL证书使用的名字。建议同时为我们的puppet创建一个DNS别名,添加到hosts和DNS配置中。
接下来我们需要添加site.pp,他包含了我们想要管理的配置的基本信息
site.pp文件告诉puppet去哪里寻找并载入指定的客户端配置,这个文件放在/etc/puppet/manifests中,首先创建site.pp,是因为没有它,puppet将拒绝启动。
启动我们的puppetmaster
#service puppetmaster start
四、
连接第一个Agent,安装puppet agent
#yum install puppet
只需要配置好hosts文件即可,当然也可以类似master,在puppet.conf文件里添加master信息,但注意添加字段
[main]
server=master.puppet.com
之后启动服务
#service puppet start
五、
puppet客户端连接到puppet master
# puppetd --test --server master.puppet.com
执行上面的命令,客户端将生成证书,并且把证书签名请求发到服务器端。登录到服务器端,执行下面的命令查看是否有客户端的证书请求
server:
#puppetca --list
slave.puppet.com
看到有客户端的证书请求,可以用下面的命令对所有证书请求签名:
#puppetca -s slave.puppet.com或者puppet cert --sign slave.puppet.com意思是对指定的hosts的证书进行签名
#puppetca -s -a或者puppet cert --sign --all意思是对所有在等待的证书进行签名
六、
创建第一个配置
再次之前我们将一下pupp的组件、配置语言和能力,puppet将包含配置数据的文件成为清单,puppet清单有许多主要组件组成:
资源(resources):独立的配置项
文件(files):能发送到agent的元属性文件
模板(templates):能发送到agent的模板参照文件
节点(nodes):用于指定每一个agent的配置
类(classes):资源的容器
定义(definitions):资源的组合容器
这些组件由一个包含变量、条件、数组和其他特性的配置语言包装起来。
首先简单的配置site.pp文件,以前一篇的测试文件进行配置
#node ’slave.puppet.com‘ {
file { "/tmp/1.txt":
content => "hello,world",
}
}
master针对于slave.puppet.com的配置完成了,然后去agent上执行
#puppetd --test --server master.puppet.com
此时,客户端将会从服务器下载并执行,在/tmp目录下生成叫做1.txt的文件。
注:摘录网上这部分常出现的错误
FAQ
1. 连接master的时候出现如下报错:
dnsdomainname: Unknown host
解决办法:检查机器主机名的设置,以及是否添加进hosts。
2. 连接master的时候出现如下报错:
err: Could not request certificate: getaddrinfo: Name or service not known
解决办法:服务器端没有配置hosts域名绑定,在hosts中添加。
3. 连接master的时候出现如下报错:
warning: peer certificate won't be verified in this SSL session
解决办法:服务端还没有返回签发证书,使用puppet cert --list查看
4. 连接master的时候出现如下报错:
err: Could not retrieve catalog from remote server: certificate verify failed
解决办法:客户端和服务器端时间不同步,SSL连接需要依赖主机上的时间是否正确。执行更新时间的命令:/sbin/ntpdate asia.pool.ntp.org
阅读(1586) | 评论(0) | 转发(0) |