首页未分类 › Puppet学习笔记(CentOS6.3+Puppet3.01)

Puppet学习笔记(CentOS6.3+Puppet3.01)

下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那么热心,组织大家一起去学习。我就提前做一下功课。

2012年10月29日:参加完两天的培训,深刻体会到puppet的强悍,当然讲Puppet的朋友,还是非常有经验,不只是puppet经验,还有讲课的经验,学习一个新东西的经验。一个最大的收获:官方的文档非常好,把puppet读完,你就差不多。

概述

Puppet 是一个客户端/服务器(C/S)架构的配置管理工具,在中央服务器上安装 puppet-server 服务器(puppet master),在需要被管理的目标服务器上安装 puppet 客户端软件(puppet client)。

如果服务器端也安装客户端,那么还可以管理本地机器。简单点说,当你把puppet装好后,你可以利用puppet的管理功能,直接用puppet安装foreman。这是我希望实现的功能。

 

准备

我直接使用Centos 6.3,puppet官方的yum源,目前puppet版本已经是3.01。对os的要求也很简单

  1. 关闭selinux
  2. 关闭iptables,这是为了避免各种麻烦,你可以通过打开端口,而不需要关闭iptables
  3. 设置host文件,由于puppet需要用FQDN,一般实验环境都是没有dns,所以通过hosts文件设置
  4. 设置ntp,同步时间,这个也是必须的。
  5. 设置源,根据你希望使用的版本,设置不同的源.我是启用了EPEL和Puppet官方的源
  6. node06 为master (10.1.199.6)
  7. node08 为client (10.1.199.8)

这些设置,大家可以参考 vpsee的puppet文档

安装

Puppet 3.01,对很多以前版本的命令已经去掉,这也让大家看文档的时候,比较混乱。目前pre-2.6的命令,在3.0以后的版本,完全无法使用。这个大家要记住。这样更换后,其实也比较清晰。

 

 

服务器端

因为我们采用源安装,所有ruby的依赖关系都是自动解决。装服务器端的时候,其实也同时把客户端装上.

看看依赖的包

 

启动puppet

Puppet Master 运行在TCP的8140端口。以前iptables的命令打开一个端口很长,很难记忆,现在发现一个好工具 lokkit。打开的端口,重启机器也是不影响,非常方便。

 

查看打开的端口

 

查看证书

这个时候,已经自动把本机当成客户端,管理起来,证书已经自动签发.

 

客户端

单独安装一个客户端

 

大家可以看看,比较一下客户端和服务器依赖的包.

启动服务

puppet的基本默认配置,这里面的内容是不需要修改。

上面就是Puppet的默认设置,大家可以去掉注释,进行修改。这也是为啥puppet的agent,默认就到网络找一个puppet的机器,你可以在这里修改。

/var/lib/puppet 目录,是客户端一个比较重要的目录,agent的证书就是放在这个目录下。

 

Puppet agent 配置文件,是 /etc/puppet/puppet.conf , 基本编辑这个文件可以。

对于puppet.conf 来说,里面分成3部分[main], [master], [agent], 外面的文档,有些是把参数添加到[main], 有些是添加到[agent], 用初学者比较困惑,到底那个是正确。对于agent来说,你就在agent里修改就可以。如果你的设置和[main]冲突,就会保留[agent]设置。所以你基本就不需要管[main]设置就可以。

对于puppet 客户端,我们需要编辑 /etc/puppet/puppet.conf, 添加一行,指定master服务器名称。

重启agent就可以,这个时候,你就不需要加上服务器地址,就可以连接master。

常用命令

查看puppet版本

查看模块位置

查看报告

证书

Client申请证书

client需要向服务器端发出请求, 让服务器对客户端进行管理. 这其实是一个证书签发的过程. 第一次运行 puppet 客户端的时候会生成一个 SSL 证书并指定发给 Puppet 服务端, 服务器端如果同意管理客户端,就会对这个证书进行签发.

为了详细了解注册的过程和日后排错,可以增加参数,因为配置文件里

  1. –no-daemonize 前台输出日志
  2. –verbose 输入更加详细的日志
  3. –debug 更加详细的日志,排错的时候使用
  4. –test 表示测试,就带一个–test参数就可以

我的服务器端,如果iptables的端口没打开或者iptables没有关闭,你回看到下面错误

 

如果一切正常,你回看到下面输出

这个时候,你在服务器端就可以看到请求签发的证书

旁边有+ 号的,表示已经签发。

签发证书很简单

签发证书。

签发完成后,你再查看,就会发现

 

注销证书

让证书失效,真正操作,我建议使用clean的参数,发现revoke,仅仅是让证书失效。

这个时候,你查看证书

你需要重启puppetmaster服务,才能正式生效,你可以通过客户端连接来测试,没有重启服务前,一切正常,只有重启了master服务后,你再用node08去连接,就会提示下面的错误。

删除证书

在master上,清除证书后,需要重启服务才能生效.

重启puppetmaster服务,

在client上

或者整个目录删除,这样ca的证书,也删除。

这个时候,你再申请就可以

这个时候,你在master就可以正常签发。

自动签发证书

可以设置master自动签发所有的证书,我们只需要在/etc/puppet 目录下创建 autosign.conf 文件。(不需要修改 /etc/puppet/puppet.conf文件,因为我默认的autosign.conf 文件的位置没有修改)

这样就会对所有来自 chenshake.com 的机器的请求,都自动签名。

 

Pre-signing 证书

就是提前在服务器端签发证书,把证书复制到客户端,这样可以避免自动签名的危险。不过很麻烦,需要你手工copy证书。创建证书的命令,和以前版本的puppet 2.6有不同,大家注意就可以。

客户端操作

这时候你就可以在客户端运行

 

Puppet Dashboard

我其实是希望直接使用puppet来安装dashboard,不过目前阶段,我还是搞不定,这个留待日后慢慢挑战。

mysql

优化mysql设置

编辑 /etc/my.cnf, 在[mysqld]字段,增加最后一行.

 

启动服务

设置mysql密码,我这里使用是密码是password

创建一个dashboard数据库

Passenger+Apache+Dashboard

这是让Apache支持ruby,

看看包的依赖关系

 

 

配置Dashboard

编辑 /usr/share/puppet-dashboard/config/database.yml

修改时区 /usr/share/puppet-dashboard/config/environment.rb

初始化数据库

配置Apache

我们需要整合Passenger和apache

 

 

重启服务

打开80端口

 

配置puppet

让Dashboard使用Reports,现在默认agent是已经启用Report的功能,所以你就不需要设置agent,你只需要设置Server端就可以.

重启puppetmaster 服务

这时候就可以直接用 http://ip 访问puppet Dashboard

导入报告

这时候你访问Dashboard,可以看到导入的任务.

 

 

Delayed Job Workers

这个其实我理解就是一个脚本,用来分析report的。

 

查看启动的job

 

停止delay job

这个时候你才能在Dashbaord里看到数据.

 

 

Foreman

目前Puppet 3.0和Foreman 1.0还有问题,官方正在解决中

发表评论