集中管理服务器 PUPPET(一) 部署 与 添加节点

一.FAQ


Q: puppet是什么?

A: puppet英语原意是木偶,在这里,pupet指的是一个开源的管理软件.用于集中管理服务器.由于该软件管理服务器的方式相似于操纵木偶,因此软件的名字叫作puppet.node

Q:puppet对我有用吗?

A:若是你是linux unix freebsd 或者 mac os 系统管理员,puppet对你颇有用,若是你是windows用户,暂时对你没用. 若是你管理着上成百上千台的服务器,可是还在用 for 循环加 ssh或者 expect 的方式来管理服务器,那么你应该尝试下puppet了.除非你想成天在不一样的服务器上登入登出. 而不考虑挤出点时间来玩或者学习新的东西.linux

Q:puppet已经能用到生产环境了吗?

A:是的,彻底没有问题,google 也用puppet管理了超过6000台的苹果桌面系统,下面是官方的puppet用户列表. who using puppet shell

Q: puppet 证书认证错误

A: puppet客户端和服务器端是经过ssl链接来保证安全性,ssl链接用到的证书是x.509证书。 puppet会本身生成证书。无论是在客户端仍是在服务器端。
ssl在链接的时候,会对比证书里面的CN名字是否和主机名匹配,若是不匹配就会报证书验证错误。这是最多见的问题。vim

解决这个问题的方法就是,首先固定机器的主机名,而后删除puppet已经本身生成的ssl目录,例如/etc/puppet/ssl. 从新运行puppet来生成新的证书。不一样方法安装的puppet,ssl的路径不同,在debian下面是/var/lib/puppet/sslwindows

同时在服务器端和客户端都这样操做。centos

所谓固定机器的主机名,就是保证主机名配置文件里面配置的主机名(debian 是/etc/hostname,centos 是在/etc/sysconfig/network里面的HOSTNAME) 和 执行 hostname命令打印出来的主机名一致。安全


 

二.建立部署 Creating a Deployment

1.安装部署

标准Puppet Enterprise 部署包括:ruby

  • 由许多Puppet 管理组成的 虚拟/物理机 节点。服务器

  • 至少一个配置好节点的Puppet管理服务端。dom

  • 至少有一个控制台。支持PuppetDB

  • 要求有本身的DNS主机,要求有正反向解析。

官方文档废话太多了。不列了,说干货。

准备两个虚拟机,一台是管理端,一台是客户端。

这里准备两台centos6虚拟机作实验。


Puppet对Rubu的支持

Ruby version    puppet2.6    puppet2.7    puppet3.0

1.85                支持            支持            不支持

1.8.7               支持            支持            支持

1.9.3               不支持         不支持          支持

1.9.0/1/2         不支持        不支持            不支持

1.8.1/6            不支持        不支持            不支持


Puppet的安装步骤

  1. 安装Ruby Ruby-libs Ruby-shadow,进行用户和组管理

  2. 安装Facter Puppet Pupper-server

  3. 设置主机名、域名解析或者指定hosts

  4. 经过命令/etc/init.d/puppetmaster start 启动server或者以非进程的方式启动server

    经过命令puppet master --no-daemonize --verbose查看相关日志与输出

  5. 在客户端配置文件Puppet.conf制定server端,在终端运行puppet agent -test或直接运行puppet agent --test --server.domain.com 与master交互完成签名认证

  6. 在server上配置节点信息,告诉客户端要作什么

  7. 检查语法是否错误,采用puppet parser validate test.pp

  8. 客户端再次运行配置 puppet agent --test


在Linux下安装(Puppet3.x,RHEL5.X+,CentOS5.x+)

使用包管理器安装 

puppet官方源http://yum.puppetlabs.com

使用源时肯定系统版本,以更改baseurl

[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.4 (Final)
[root@localhost ~]# vim /etc/yum.repos.d/puppet.repo
[puppet-labs]
name=puppet-labs-repo
baseurl=http://yum.puppetlabs.com/el/6Server/products/x86_64/
gpgcheck=0
enabled=1
[root@localhost ~]# yum list
...
[root@localhost ~]# yum -y install ruby ruby-libs ruby-shadow
...
[root@localhost ~]# ruby -v
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
首先安装puppetlabs-release.noarch
[root@localhost ~]# yum install puppetlabs-release.noarch
...
服务端安装
[root@localhost ~]# yum install puppet-server
...
客户端安装
[root@localhost ~]# yum install puppet
而后在服务端和客户端改写hosts
[root@localhost ~]# vim /etc/hosts
192.168.181.42 puppet.domain.com
192.168.181.43 agent.domain.com

配置防火墙

iptables -A INPUT -p tcp --dport 8140 -j ACCEPT

配置主机配置文件

服务端
[root@localhost ~]# vim /etc/puppet/manifests/site.pp
node default { file { "/tmp/puppettest1.txt": content => "hello,First Puppet test"; }}
[root@localhost ~]# service puppetmaster start
客户端
[root@agent ~]# service puppet start
客户端发起验证
[root@agent ~]# puppet agent --server puppet.domain.com --test
Info: Caching certificate for ca
Info: csr_attributes file loading from /etc/puppet/csr_attributes.yaml
Info: Creating a new SSL certificate request for agent.domain.com
Info: Certificate Request fingerprint (SHA256): 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00
Info: Caching certificate for ca
Exiting; no certificate found and waitforcert is disabled
服务端
[root@localhost ~]# puppet cert --list
  "agent.domain.com" (SHA256) 09:3C:54:13:5B:AF:00:3E:B3:6E:18:C6:79:84:EB:A8:70:2C:B2:B0:04:7E:42:23:5C:1B:1E:44:B0:5C:39:00
[root@localhost manifests]# puppet cert sign agent.domain.com
Notice: Signed certificate request for agent.domain.com
Notice: Removing file Puppet::SSL::CertificateRequest agent.domain.com at '/var/lib/puppet/ssl/ca/requests/agent.domain.com.pem'
签署成功
客户端
验证配置
[root@agent ~]# puppet agent --test --server puppet.domain.com
Info: Caching certificate for agent.domain.com
Info: Caching certificate_revocation_list for ca
Info: Caching certificate for agent.domain.com
Info: Retrieving plugin
Info: Caching catalog for agent.domain.com
Info: Applying configuration version '1386938219'
Notice: /Stage[main]/Main/Node[default]/File[/tmp/puppettest1.txt]/ensure: defined content as '{md5}69edbc23ca13613a136d61fb4f662d5e'
Info: Creating state file /var/lib/puppet/state/state.yaml
Notice: Finished catalog run in 0.03 seconds
[root@agent ~]# more /tmp/puppettest1.txt
hello,First Puppet test

签署其余注意

客户端从新签名时,须要是删除'hostname'.pem

Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}

服务端也须要删除签名相关文件

find $(puppet master --configprint ssldir) -name "$(puppet master --configprint certname).pem" -delete

删除某台客户端的认证信息,使用命令

puppet cert --clean {node certname}

同时

Find /var/lib/puppet/ssl/ -iname 'hostname'.pem -exec /bin/rm -rf {}


因为本人极度厌烦大便和尤半图(桌面linux),自悟去吧。

使用源码器安装

后续添加。

在Windows下安装使用

后续添加。

相关文章
相关标签/搜索