链条传动

砥砺前行,不忘初心!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

简介

Puppet是开源的基于Ruby的系统配置管理工具,puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. 所有的puppet客户端同一个服务器端的puppet通讯. 每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息.

 

工作流程

 

(1)客户端puppetd调用facter,facter探测出主机的一些变量,例如主机名,内存大小,ip地址等。pupppetd 把这些信息通过ssl连接发送到服务器端;

 

(2)服务器端的puppetmaster 检测客户端的主机名,然后找到manifest里面对应的node配置, 并对该部分内容进行解析,facter送过来的信息可以作为变量处理,node牵涉到的代码才解析,其他没牵涉的代码不解析。解析分为几个阶段,语法检查,如果语法错误就报错。如果语法没错,就继续解析,解析的结果生成一个中间的“伪代码”,然后把伪代码发给客户端;

 

(3)客户端接收到“伪代码”,并且执行,客户端把执行结果发送给服务器;

 

(4)服务器端把客户端的执行结果写入日志。

 

准备

 

Master

Agent

系统

Centos 6.6

Centos 6.6

ip(自设)

192.168.2.40

192.168.2.42

主机名(自设)

master.kisspuppet.com

agent.kisspuppt.com

 

 

 

 

 

 

 

 

 

 

安装

Puppet 不在 CentOS 的基本源中,需要加入 PuppetLabs 提供的官方源:

wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm

yum install puppetlabs-release-6-1.noarch.rpm

yum update

 

Master端

yum install -y ruby facter puppet-server

 

# 启动

service puppet start

service puppetmaster start

 

# 设置开机自启动

chkconfig  puppet on

chkconfig  puppetmaster on

 

 

 

Agent端

yum install -y ruby facter puppet

 

启动

service puppet start

 

设置开机自启动

chkconfig  puppet on

 

配置

vim /etc/puppet/puppet.conf

添加下面一行

server=master.kisspuppet.com

重启puppet

service puppet restart

 

 

 

 

Agent申请证书

Master自动签发证书设置    

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

 

[ root @ master   ~ ] #   cat   >   / etc / puppet / autosign . conf   < < EOF  

>   * . redking . com

>   EOF

[ root @ master   ~ ] #   service   puppetmaster   restart  

Stopping   puppetmaster:                                                                           [     OK     ]

Starting   puppetmaster:                                                                           [     OK     ]

[ root @ master   ~ ] #

 

 

这样就会对所有来自fisteam2.com的机器的请求,都自动签名。Agent需要向服务器端发出请求, 让服务器对客户端进行管理. 这其实是一个证书签发的过程. 第一次运行 puppet 客户端的时候会生成一个 SSL 证书并指定发给 Puppet 服务端, 服务器端如果同意管理客户端,就会对这个证书进行签发,可以用这个命令来签发证书,由于我们已经在客户端设置了server地址,因此不需要跟服务端地址

Agent向Master请求认证

输入下列命令就可以申请证书了

[ root @ agent1   ~ ] #   puppet   agent   --test

 

由于我配置的自动签发证书,所以直接就签发了,在服务端执行下列命令进行查看是否认证成功。

[ root @ master   ~ ] #   puppet cert list --all

 

 

测试

现在可以在服务端写个小例子来测试一下。这个例子作用很简单,用来在客户端的 /tmp 目录下新建一个 helloworld.txt 文件,内容为 hello, world. 在Master端编写代码:

 

# vi /etc/puppet/manifests/site.pp

node default {

        file {

                "/tmp/helloworld.txt": content => "hello, world";

        }

}

 

 

在Agent端上执行 puppet,运行成功后会在 /tmp 看到新生成的 helloworld.txt:

 

$ puppet agent --test --server=master.vpsee.com

warning: peer certificate won't be verified in this SSL session

info: Caching certificate for client.vpsee.com

info: Caching certificate_revocation_list for ca

info: Caching catalog for client.vpsee.com

info: Applying configuration version '1330668451'

notice: /Stage[main]//Node[default]/File[/tmp/helloworld.txt]/ensure: defined content as '{md5}e4d7f1b4ed2e42d15898f4b27b019da4'

info: Creating state file /home/vpsee/.puppet/var/state/state.yaml

notice: Finished catalog run in 0.03 seconds

 

 

查看Agent端

$ cat /tmp/helloworld.txt

hello, world

 

这样就说明puppet能够正常运行。

posted on 2017-01-19 09:41  链条君  阅读(4358)  评论(0编辑  收藏  举报