Puppet安装配置

 Puppet安装配置

前言:

    系统管理员经常陷入一系列的重复任务中:如升级软件包、管理配置文件、系统服务、用户管理、cron任务以及添加新的配置、修复错误等。这些任务通常是重复低效的,解决这类任务的第一反应是让他们自动化,于是出现了定制脚本。由于环境复杂,定制脚本和应用程序一再被重复开发,并且很难适合多种平台,灵活性和功能也很难保证,于是像Puppet这样的自动化配置管理工具便出现了。

在开源世界里,有很多配置工具可供选择,这个领域一些关键的产品有:

Puppet http://puppet.reductivelabs.com/

Puppet中文wiki:http://puppet.wikidot.com/

Ruby写成的配置管理工具,使用C/S架构,使用declarative language配置客户端。

Cfengine http://www.cfengine.org

最先发布的开源配置工具之一,1993年发布,同样是C/S架构,通常应用于教育机构。

LCFG http://www.lcfg.org/

C/S架构的配置管理工具,使用XML定义配置。

Bcfg2

Python编写的C/S架构的配置管理工具,使用规格书和客户机响应配置目标主机。

 

Puppet的工作模式:

    puppet有两种执行模式,一是直接运行puppetd file.manifest,这种方式做测试非常直接和方便;二是puppetd --server puppetmaster.server.com;前面一种是直接读取file.mainfest文件进行配置,后一种是从服务端下载manifest进行配置,也是最常用的工作模式:Puppet是一个C/S架构的配置管理工具,在中央服务器上安装puppet-server软件包(被称作Puppet master)。在需要管理的目标主机上安装puppet客户端软件(被称作Puppet Client)。当客户端连接上Puppet master后,定义在Puppet master上的配置文件会被编译,然后在客户端上运行。每个客户端默认每半个小时和服务器进行一次通信,确认配置信息的更新情况,不过建议做好通过crontab来实现即时性,同时也能缓解puppet-server服务器的负担。如果有新的配置信息或者配置信息已经改变,配置将会被重新编译并发布到各客户端执行。也可以在服务器上主动触发一个配置信息的更新,强制各客户端进行配置。如果客户端的配置信息被改变了,它可以从服务器获得原始配置进行校正。

 

安装puppet服务端与客户端

服务器端IP:172.16.10.10

客户端IP:172.16.10.20

1、添加外部源:

centos的官方软件库里面不包含puppet包,但是在epel项目里面有包含puppet

包. epel 是一个对rhel软件仓库的扩展,把一些有用的,但是rhel库没包含的

软件收集在一起做成的一个软件仓库. 

因此首先在centos上面安装epel,以 64位的centos6.2 举例,其他版本以此类推 

#rpm -ivh http://dl.iuscommunity.org/pub/ius/stable/Redhat/6/x86_64/epel-release-6-5.noarch.rpm

 

2、更改hosts文件和主机名:

puppet的客户端和服务器是通过ssl链接的,在服务器有一个自签名的根证书,在安 装软件的时候自动生成。注意:要在安装软件以前先设置主机名,因为生成证书的时候要把主机名写入证书,如果证书生成好了再改主机名,就连不上,这是很多初学者遇到的问题。每个客户端的证书要经过根证书签名才能和服务器连接。所以首先要在客户端执行下面的命令来请求服务器签名证书。

        主机名要设置为FQDN格式。例如服务器端为master.internel.test.com 客户端为slave.internal.test.com

hosts文件为:

172.16.10.10 master.internel.test.com

172.16.10.20 slave.internal.test.com

 

3、安装服务器端:

#yum install -y puppet-server

 

4、安装客户端:

#yum install puppet

 

5、服务器与客户端开放防火墙端口,关闭selinux。

tcp 8140

udp 8140

 

6、启动服务

server:/etc/init.d/puppetmaster start

client:/etc/init.d/puppet start

 

7、签名证书

client:

# puppetd --test --server master.internal.gexing.com

执行上面的命令,客户端将生成证书,并且把证书签名请求发到服务器端。登录到服务器端,执行下面的命令查看是否有客户端的证书请求

server:

#puppetca --list

slave.internal.test.com (26:C7:F9:87:EF:DC:F0:87:E3:77:CC:61:8E:E2:B9:20)

如果看到了客户端的证书请求,用下面的命令对所有证书请求签名:

#puppetca -s -a

 

8、测试

server:

puppetmaster的第一个执行的代码是在/etc/puppet/manifest/site.pp 因此这个文件必须存在,而且其他的代码也要通过代码来调用. 现在,建立一个最简单的site.pp文件,内容如下

node default {

file { "/tmp/test.txt":

content => "hello"}

}

上面的代码对默认连入的puppet客户端执行一个操作,在/tmp目录生成一个test.txt文件,

内容是hello,first puppet manifest. 回到客户端,执行下面的命令:

slave:

#puppetd --test --server master.internal.test.com

这样,客户端将会从服务器下载默认的执行代码,在/tmp目录下生成叫做test.txt的文件。

9、参考文档

http://code.google.com/p/puppet-manifest-share/downloads/list

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章