CentOS6.5+Puppet3.7.3 安装、配置及测试

OS:CentOS-6.5-x86_64

Puppet 3.7.3

Puppet master: master.fisteam2.com

Puppet clients:node1-5.fisteam2.com

Puppet 要求所有机器有完整的域名(FQDN),如果没有 DNS 服务器提供域名的话,可以在两台机器上设置主机名(注意要先设置主机名再安装 Puppet,因为安装 Puppet 时会把主机名写入证书,客户端和服务端通信需要这个证书),因为我配置了DNS,所以就不用改hosts了,如果没有就需要改hosts文件指定。

1.关闭selinux,iptables,并设置ntp   
采用CentOS-6.5-x86_64.iso进行minimal最小化安装

关闭selinux
[root@master ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

[root@master ~]# sed -i '/SELINUX/ s/enforcing/disabled/g' /etc/selinux/config

[root@master ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

# targeted - Targeted processes are protected,

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

[root@master ~]# setenforce 0

停止iptables
[root@node1 ~]# chkconfig --list |grep tables

ip6tables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@node1 ~]# chkconfig ip6tables off

[root@node1 ~]# chkconfig iptables off

[root@node1 ~]# service ip6tables stop

ip6tables: Setting chains to policy ACCEPT: filter [ OK ]

ip6tables: Flushing firewall rules: [ OK ]

ip6tables: Unloading modules: [ OK ]

[root@node1 ~]# service iptables stop

iptables: Setting chains to policy ACCEPT: filter [ OK ]

iptables: Flushing firewall rules: [ OK ]

iptables: Unloading modules: [ OK ]

[root@node1 ~]#

设置ntp
[root@master ~]# ntpdate pool.ntp.org

[root@master ~]# chkconfig --list|grep ntp

ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off

ntpdate 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@master ~]# chkconfig ntpd on

[root@master ~]# service ntpd start

Starting ntpd: [ OK ]

[root@master ~]#

2.安装puppet服务 
puppet不在CentOS的基本源中,需要加入 PuppetLabs 提供的官方源:
[root@master ~]# wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-7.noarch.rpm

[root@master ~]# rpm -ivh puppetlabs-release-6-7.noarch.rpm

[root@master ~]#yum update

在 master上安装和启用 puppet 服务:
[root@master ~]# yum install puppet-server

[root@master ~]# chkconfig --list |grep puppet

puppet 0:off 1:off 2:off 3:off 4:off 5:off 6:off

puppetmaster 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@master ~]# chkconfig puppet on

[root@master ~]# service puppetmaster start

Starting puppetmaster: [ OK ]

[root@master ~]#

在clients上安装puppet客户端

[root@node1 ~]# yum install puppet

[root@node1 ~]# chkconfig --list |grep puppet

puppet 0:off 1:off 2:off 3:off 4:off 5:off 6:off

[root@node1 ~]# chkconfig puppet on

[root@node1 ~]# chkconfig --list |grep puppet

puppet 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@node1 ~]# service puppet start

Starting puppet agent: [ OK ]

[root@node1 ~]#

3.配置puppet

对于puppet 客户端,修改/etc/puppet/puppet.conf,指定master服务器
[main]

# The Puppet log directory.

# The default value is '$vardir/log'.

logdir = /var/log/puppet

# Where Puppet PID files are kept.

# The default value is '$vardir/run'.

rundir = /var/run/puppet

# Where SSL certificates are kept.

# The default value is '$confdir/ssl'.

ssldir = $vardir/ssl

[agent]

# The file in which puppetd stores a list of the classes

# associated with the retrieved configuratiion. Can be loaded in# the separate ``puppet`` executable using the ``--loadclasses``

# option.

# The default value is '$confdir/classes.txt'.

classfile = $vardir/classes.txt

# Where puppetd caches the local configuration. An

# extension indicating the cache format is added automatically.

# The default value is '$confdir/localconfig'.

localconfig = $vardir/localconfig

server = master.fisteam2.com

并重启puppet服务
[root@node1 ~]# service puppet restart

Stopping puppet agent: [ OK ]

Starting puppet agent: [ OK ]

[root@node1 ~]#

4.Client申请证书 
服务端自动签发证书设置 
设置master自动签发所有的证书,我们只需要在/etc/puppet 目录下创建 autosign.conf 文件。(不需要修改 /etc/puppet/puppet.conf文件,因为我默认的autosign.conf 文件的位置没有修改)
[root@master ~]# ll /etc/puppet/

total 28

-rw-r--r--. 1 root root 4178 Nov 4 06:24 auth.conf

drwxr-xr-x. 3 root root 4096 Dec 29 15:44 environments

-rw-r--r--. 1 root root 1462 Nov 4 06:23 fileserver.conf

drwxr-xr-x. 2 root root 4096 Nov 4 06:24 manifests

drwxr-xr-x. 2 root root 4096 Nov 4 06:24 modules

-rw-r--r--. 1 root root 853 Nov 4 06:23 puppet.conf

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

> *.fisteam2.com

> EOF

[root@master ~]# service puppetmaster restart

Stopping puppetmaster: [ OK ]

Starting puppetmaster: [ OK ]

[root@master ~]#

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

为了详细了解注册的过程和日后排错,可以增加参数,因为配置文件里 
–no-daemonize 前台输出日志 
–verbose 输入更加详细的日志 
–debug 更加详细的日志,排错的时候使用 
–test 表示测试,就带一个–test参数就可以
[root@node1 ~]# puppet agent --no-daemonize --onetime --verbose --debug

CentOS6.5+Puppet3.7.3 安装、配置及测试

就可以申请证书了,由于我配置的自动签发证书,所以直接就签发了,在服务端执行
[root@master ~]# puppet cert list --all

CentOS6.5+Puppet3.7.3 安装、配置及测试

就可以看到所有客户端已经都已签发证书,前面带”+”号的就是签发成功的,如果没有签名的,可以用
[root@master ~]# puppet cert --sign node1.localdomain

CentOS6.5+Puppet3.7.3 安装、配置及测试

即可看到证书已经签发。

Puppet 学习系列:

相关阅读:

相关推荐