一 Puppet学习之puppet的安装和配置

注意事项:

A:客户端和服务器端版本要一致。如果版本不一致的话,那么高版本的只能是puppet server,另一台只能为puppet客户端,也就是说puppet 服务端的版本可以 大于或者等于客户端版本,不可以小与,因为有些同学有些是yum安装的

B:由于SSL证书依赖时间同步。请注意服务端与客户端保持一致。推荐使用ntp 同步时间。

C:由于基于主机名,推荐使用FQDN,标准格式。认证过后请不要随便修改主机名。



 

Puppet学习之puppet的安装和配置

一、Puppet简介

Puppet基于ruby语言开发的自动化系统配置工具,可以C/S模式或独立运行,支持对所有UNIX及类UNIX系统的配置管理,最新版本也开始支持对Windows操作系统有限的一些管理Puppet适用于服务器管的整个过程 ,比如初始安装、配置更新以及系统下线。

二、Puppet的安装

Puppet的安装方式支持源码安装、yum安装以及rubygem安装。官网推荐使用yum来安装puppet,方面以后的升级、管理、维护。Centos可以采用yum来安装,但是Centos的默认源中没有puppet包,因此需要先安装epel包。Epel是企业版Linux附加软件包(Extra Packages for Enterprise Linux)的缩写,是一个由特别兴趣小组创建、维护并管理的,针对红帽企业版Linux(RHEL)及其衍生发行版(比如CentOSScientific Linux)的一个高质量附加软件包项目。

1. Master的安装

yum -y install ruby ruby-libs ruby-shadow

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

rpm -Uvh epel-release-6-8.noarch.rpm

yum -y install puppet puppet-server facter

2. Agent的安装

yum install ruby ruby-libs ruby-shadow

wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm

rpm -Uvh epel-release-6-8.noarch.rpm

yum -y install puppet facter

 

         至此如果安装过程不报错的话,puppet已经安装成功了。( 服务端和客户端的版本都是 2.6.18-3.el5.noarch )

三、Puppet的简单配置

1. Master的配置

先来看看puppet主目录下都有什么文件已经每个文件是做什么用的:

ls -1 /etc/puppet/

auth.conf       #定义puppet masteracl文件

fileserver.conf   #定义puppet master文件服务器的配置文件

manifests        #puppet脚本主文件目录,site.pp文件必须存在

modules            #puppet模块目录

puppet.conf     #puppet主配置文件

ssl                     #存放ssl证书的目录

刚开始的话, puppet.conf不需要配置就可以满足。

需要更改hosts文件,注意hosts要和主机名对应。

vim  /etc/hosts添加如下内容:

10.1.4.218 puppet.zhang.com puppet (master)

10.1.4.213 node1.zhang.com node1 (client)

10.1.4.214 node2.zhang.com node2 (client)

大家要根据实际情况加,我这里是一个master,两个agent

2. Agent的配置

Agent的配置主要是更改agent上的/etc/puppet/puppet.conf文件的[agent]部分。

agentvim /etc/puppet/puppet.conf 添加如下配置

server = puppet.zhang.com        #master服务器的地址

runinterval = 3600               #每隔多久的时间进行自动更新,时间单位为秒

listen = true                    #客户端作为一个服务进行监听,允许其它的机器触发puppet运行允许远程触发puppet的节点配置

 

四、puppet的启动和停止

1. Master的启动和停止

Master的启动

/etc/rc.d/init.d/puppetmaster start

也可以以采用 service puppetmaster start启动

第一次启动建议采用puppet master --verbose --no-daemonize方式启动,有助于测试和调试错误,如果采用后面这种方式,你可以看到启动的整个过程,启动过程会做一些初始化的工作,为master创建本地证书认证中心,证书和key。并打开socket等待client的连接。你可以在/etc/puppet/ssl目录看到相关的文件和目录。

Master的停止

/etc/rc.d/init.d/puppetmaster stop

也可以以采用 service puppetmaster stop停止

更改多选项可以使用/etc/rc.d/init.d/puppetmaster –h查看

2. Agent的启动和停止

Agent的启动

/etc/rc.d/init.d/puppet start

也可以采用service puppet start来启动

调试的时候可以采用

puppet agent --server=puppet.zhang.com --no-daemonize --verbose   


的方式来启动,这样启动我们可以看到agent是如何和master建立连接的。

Agent的停止

/etc/rc.d/init.d/puppet stop

也可以采用service puppet stop来停止。

 

五、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

    5.[root@client tmp]# puppet agent --server=master.puppet.com   #客户端默认按照自己的配置文件设置的时间来和服务端进行同步,使用这个命令可以立刻同步!!
        Could not prepare for execution: Could not create PID file: /var/run/puppet/agent.pid

        如果同步时出现这样的错误! 说明你的puppet已经在运行了,puppet运行的时候会生成一个agent.pid文件里面放的是puppet的进程号!!

        因此解决这个问题有两个方法1: /etc/init.d/puppet stop   停止suppet服务! 然后在执行 puppet agent --server=master.puppet.com

                                         方法2: 执行  puppet agent --server=master.puppet.com  --test   #添加 --test 参数!!


另一篇比较不错的puppet安装博客!! http://wgkgood.blog.51cto.com/1192549/869630


如果不想让puppet自动同步,想让他手动推送方法如下:

如4楼兄弟所说滴,我们可以直接执行puppet agent --server=192-9-117-162-app.com --test --no-client ,这样不会去跟master同步,看官方文档里面有这样一段记录:
runinterval
How often puppet agent applies the client configuration; in seconds. Note that a runinterval of 0 means “run continuously” rather than “never run.” If you want puppet agent to never run, you should start it with the --no-client option. Can be specified as a duration.
Default: 30m 
大致的意思是puppet客户端默认跟服务端同步时间为30分钟,如果runinterval为0的话,代表时刻同步;如果我们想客户端一直不跟服务端主动同步,可以在puppet客户端启动脚本里面增加 --no-client即可,然后重启puppet客户端服务即可。
具体修改方法如下:
vi /etc/init.d/puppet 
找到 [ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="--server=${PUPPET_SERVER} "这一行,然后在最末尾添加--no-client 
添加后的效果:
[ -n "${PUPPET_SERVER}" ] && PUPPET_OPTS="--server=${PUPPET_SERVER} --no-client"
然后重启客户端puppet,/etc/init.d/puppet restart ,这样客户端就不会主动跟服务端同步了(记得把/etc/puppet/puppet.conf里runinterval注释(⊙o⊙)哦)。
然后去服务端执行puppet kick -d --host 客户端主机名 即可实现只想推送功能。

文章来自: http://bbs.linuxtone.org/thread-22751-1-1.html  (我还没亲自实验)

你可能感兴趣的:(一 Puppet学习之puppet的安装和配置)