集中配置管理工具puppet安装使用方法详解

简介: Puppet是开源的基于Ruby的一种Linux、Unix平台的集中配置管理工具,puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. puppet使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。

Puppet是开源的基于Ruby的一种LinuxUnix平台的集中配置管理工具,puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. puppet使用自有的puppet描述语言,可管理配置文件、用户、cron任务、软件包、系统服务等。puppet把这些管理实体称之为资源,puppet的设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。

Puppet 在部署时要求所有机器有完整的域名,如果没有 DNS 服务器提供域名的话,可以在两台或多台机器上设置主机名(注意要先设置主机名再安装 Puppet,因启动Puppet 时会把主机名写入证书,客户端和服务端通信需要这个证书)。

一、 安装puppet

1)  修改服务器端主机名

#hostname server.f.com

#echo “10.0.211.5       server.f.com” >>/etc/hosts

#echo “102.168.202.80       client.f.com” >>/etc/hosts

#echo “HOSTNAME=server.f.com”>>/etc/sysconfig/netwo  rk-scripts/ifconfigeth0

2)  修改客户端主机名(这里笔者做测试所以就部署了一台agent客户机)

#hostname client.f.com

#echo “102.168.202.80       client.f.com” >>/etc/hosts

#echo “102.168.202.80       client.f.com” >>/etc/hosts

#echo “HOSTNAME=client.f.com”>>/etc/sysconfig/netwo   rk-scripts/ifconfigeth0

3)  vi /etc/resolv.conf

#search localdomain        #注释掉这行,不然造成后面无法认证

4)  Server端安装程序

a)#使用yum安装ruby运行环境

#yum install ruby ruby-libs ruby-rdoc 

b)#安装epel

rpm  –Uvh

ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm

c)安装puppet相关程序

yum -y install puppet puppet-server facter

5)  客户端程序agent安装

a)     #使用yum安装ruby运行环境

#yum  install ruby ruby-libs ruby-rdoc 

b)     #安装epel

rpm  –Uvh

ftp://ftp.sunet.se/pub/Linux/distributions/yellowdog/yum/6.2/extras/RPMS/epel-release-5-3.noarch.rpm

c)     #安装puppet相关程序

yum -y install puppet  facter

二、 配置puppet

1.Server端配置

2. Agent端配置

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

#vi /etc/puppet/puppet.conf

# 添加如下配置

server =server.f.com       

runinterval = 3600                      

listen = true

三、 启动puppet服务

在服务器和客户端进行同步时间

#/sbin/ntpdate time.nist.gov

服务端主程序的启动:

1)  第一次启动时可以使用puppet master --verbose --no-daemon命令进行启动,这样我们可以看到这个启动过程并能够准确定位故障。

在这里笔者使用service puppetmaster start命令启动puppet主服务。

客户端程序启动:

2)  service puppet start

四、 请求证书及证书授权

3)在客户端执行如下命令请求服务端颁发证书
puppetd --test server server.f.com

 报错如下(如果没有报错的同志这一部分就不要看啦,浪费时间)

/usr/lib/ruby/site_ruby/1.8/puppet/application/agent.rb:53:in `handle_serve': uninitialized constant Puppet::Network::Handler (NameError)

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:347:in `send'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:347:in `parse_options'

        from /usr/lib/ruby/1.8/optparse.rb:1247:in `call'

        from /usr/lib/ruby/1.8/optparse.rb:1247:in `order!'

        from /usr/lib/ruby/1.8/optparse.rb:1205:in `catch'

        from /usr/lib/ruby/1.8/optparse.rb:1205:in `order!'

        from /usr/lib/ruby/1.8/optparse.rb:1279:in `permute!'

        from /usr/lib/ruby/1.8/optparse.rb:1300:in `parse!'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:353:in `parse_options'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:302:in `run'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:420:in `hook'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:302:in `run'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:411:in `exit_on_fail'

        from /usr/lib/ruby/site_ruby/1.8/puppet/application.rb:302:in `run'

        from /usr/sbin/puppetd:4

博主怀疑是ruby版本的问题使用ruby –v 显示ruby目前的版本为1.8.5所以去ruby官网下载最新版本程序安装包并安装

#wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz

#tar –zxvf ruby-1.9.3-p327.tar.gz

#cd ruby-1.9.3-p327

#./configure

#make && make install

问题解决再次执行puppetd --test server server.f.com
4)服务器端查看是否有请求证书的客户端服务器
puppetca
list

client.f.com (D1:8F:72:CA:DE:4B:65:C1:3D:FB:14:90:EA:87:7F:48)
5)服务器端签名授权
puppetca
s client.f.com  //只签名指定的客户端

#puppetca s a       //对所有客户端全部签名

6)查看验证签名,注意前面的+号,说明已经签名

[root@server ~]# puppetca -a --list

+ "client.f.com" (D1:8F:72:CA:DE:4B:65:C1:3D:FB:14:90:EA:87:7F:48)

+ "server.f.com" (B5:C6:D9:85:75:15:B9:9E:D6:60:13:D4:1D:C6:A7:65) (alt names: "DNS:puppet", "DNS:puppet.f.com", "DNS:server.f.com")

备注:也可以在puppetmaster端的puppet.conf加入这行:

autosign = true

服务端就自动签证书

7)验证证书是否正确

服务端:

md5sum /var/lib/puppet/ssl/ca/signed/client.f.com.pem

a87b73fddfce937dbfa7285b9819a8a7  /var/lib/puppet/ssl/ca/signed/client.f.com.pem

客户端:

md5sum /var/lib/puppet/ssl/certs/client.f.com.pem

a87b73fddfce937dbfa7285b9819a8a7  /var/lib/puppet/ssl/certs/client.f.com.pem

自此说明我们的puppetmaster和客户端的puppet已经建立通信啦。

8出现修改主机名问题引起无法认证,需要重新申请证书,操作以下两个步骤:

服务端:

m -rf /var/lib/puppet/ssl/ca/signed/client1.fcom.pem

客户端:

rm -rf /var/lib/puppet/ssl/ 

五、 puppet统一配置管理功能测试

9)在服务端创建site模版文件

vim /etc/puppet/manifests/site.pp

node default {

file {"/tmp/fengzhanhai.txt":

content=>"good morning!\n";}

上面的代码对默认连入的puppet客户端执行一个操作,/tmp目录生成一个txt文件,内容是good morning并自动回车换行

10初次创建pp文件,需要重启puppetmaster

[root@server ~]# service puppetmaster restart    

停止 puppetmaster                                        [确定]

启动 puppetmaster                                        [确定]

11客户端请求新配置

[root@client1 puppet-2.7.14]# puppetd --test --server server.f.com

可以去/tmp目录下验证是否创建了 /tmp/fengzhanhai.txt文件.

六、 个人建议

博主建议使用cron或者手动运行puppet比较符合公司业务需求,因为puppet是一个配置管理工具,在当我们修改了配置时去启用该服务是比较合理的通用做法。

相关文章
|
关系型数据库 网络安全 PostgreSQL
puppet连载14:安装puppetdb
yum install puppetdb puppetdb-terminus -y service puppetdb start vi /etc/puppet/puppet.
997 0
|
网络协议 应用服务中间件 Shell
puppet连载12:linux安装nginx、openresty
服务端在/puppet/soft 里建nginx1102setup.sh,内容: !/bin/bash yum -y install wget libtool expat-devel gcc gcc-c++ glibc automake autocon...
894 0
|
Java 应用服务中间件 Linux
puppet连载九:linux安装jdk、tomcat模块
安装jdk1.8.0_91和tomcat8.0.36 mkdir -p /etc/puppet/modules/linuxjdktomcat/{manifests,templates,files} vi /etc/puppet/modules/linuxjdktomcat/manifests/init.
1040 0
|
MySQL 关系型数据库 Linux
puppet连载10:linux安装percona57/56/55、sysbench、tpcc模块
在服务端/puppet/soft下建my.cnf,内容为https://www.jianshu.com/p/c63fc6c71279 在服务端/puppet/soft下建changemysql57pass.
1018 0
|
关系型数据库 MySQL Linux
puppet连载四:服务端安装dashboard
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import - curl -L get.rvm.io | bash -s stable source /etc/profile.
1194 0
|
Linux 开发工具 git
puppet连载七:linux基础组件安装模块
linux基础组件安装模块linuxbaseinstall 更换源,安装gcc gcc-c++ glibc-devel make ncurses-devel openssl-devel autoconf git mkdir -p /etc/puppet...
1046 0
|
网络安全 Apache Ruby
puppet连载三:服务端安装http、passenger
服务端安装插件: yum install -y ruby-devel ruby-libs rubygems libcurl-devel httpd httpd-devel apr-util-devel apr-devel mod_ssl gcc-c++...
1037 0
|
消息中间件
puppet 连载二:服务端和客户端安装(ActiveMQ、MCollective)
-------------------------------------服务端----------------------------------- 1、jdk安装 vi /etc/profile export JAVA_HOME=/usr/loca...
1099 0
|
网络协议 Apache
puppet 连载一:服务端和客户端安装(puppet、svn)
1、mkdir /puppet mkdir /puppet/soft 2、服务端安装dnsmasq:yum install -y dnsmasq cp /etc/dnsmasq.
1387 0
|
Linux Windows Ruby
puppet 服务端 客户端安装
转载:http://blog.51cto.com/ywzhou/1576141一、安装说明 官方安装向导https://docs.puppetlabs.com/guides/install_puppet/install_el.
1013 0