Puppet3.0原理介绍与安装配置
一,puppet概述
Puppet用ruby语言开发,用于管理系统配置文件的工具集。简单易用,可移植性强。节约大量时间。
二,puppet操作模型,三层
Deployment层:指puppet的架构
Configuration language && resource abstract层:1,资源2,配置语言
Transactional layer层:侧重配置文件的具体实施,是puppet的工作过程。
三,puppet架构常用的一种。
四,Configuration language && resource abstract作用:
1,puppet给配置对象下的定义,文件,软件包,用户,用户组,虚拟主机等都可以成为资源
2,配置语言是puppet的一种规范,用以实现对资源的描述
五,Transactional layer层:侧重于配置文件的具体实施,是puppet的工作过程
1,master编译编写的配置
2,master与node连接,将编译的配置传递给agent
3,在agent上应用这些配置
4,agent将处理结果反馈给master
六,puppet安装配置及使用
1,源码安装与yum安装,下面选择yum安装
服务端
[root@master ~]# wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm
[root@master ~]# yum install puppetlabs-release-6-1.noarch.rpm
[root@master ~]# yum install puppet-server
[root@master ~]# chkconfig puppet on
[root@master ~]# /etc/init.d/puppet
puppet puppetmaster puppetqueue
[root@master ~]# /etc/init.d/puppetmaster start
Starting puppetmaster: [ OK ]
[root@master ~]# netstat -tunlp |grep 8140 监听8140端口
tcp 0 0 0.0.0.0:8140 0.0.0.0:* LISTEN 7859/ruby
客户端
[root@client ~]# wget http://yum.puppetlabs.com/el/6/products/x86_64/puppetlabs-release-6-1.noarch.rpm
[root@client ~]# yum install -y puppetlabs-release-6-1.noarch.rpm
[root@client ~]# yum install -y puppet
修改主机名
Puppet 要求所有机器有完整的域名(FQDN),如果没有 DNS 服务器提供域名的话,可以在两台机器上设置主机名(注意要先设置主机名再安装 Puppet,因为安装 Puppet 时会把主机名写入证书,客户端和服务端通信需要这个证书):
[root@master ~]# vim /etc/hosts
192.168.0.10 master
192.168.0.9 slave
[root@master ~]# scp /etc/hosts 192.168.0.9:/etc/
设置时间同步:
Puppet 要求所有机器上的时钟保持同步,master与client都需要执行下面步骤
[root@master ~]# yum install ntp
[root@master ~]# /etc/init.d/ntpd start
*/5 * * * * /usr/sbin/ntpdate ntp.api.bz &> /dev/null
签发证书:
[root@client ~]# puppet agent --no-daemonize --onetime --verbose --debug --server=master
客户端执行上面命令后,此时会在master端的/var/lib/puppet/ssl/ca/requests/client.pem 会生成一个证书请求
[root@master ~]# puppet cert list --all 显示有哪些证书请求
"client" (SHA256) 17:34:FF:1E:6E:1D:44:13:FA:38:AE:F6:3B:43:87:C7:61:F6:76:B8:66:97:74:38:B2:97:17:CA:1E:89:DA:31
+ "master" (SHA256) EE:76:BE:A8:87:D2:6E:7E:54:A4:06:35:42:09:2E:9D:4B:F6:1D:40:62:42:E3:C4:F5:39:71:0A:E7:AD:13:00
[root@master ~]# puppet cert --sign client 为client签发证书,Puppet cert --sign all
all表示对所有请求都签发一个证书,也可以单独指定客户端的主机名,如果签发完了之后,在requests中的.pem文件就不存在了。在/var/lib/puppet/ssl/ca/signed/下会生成签证好的文件。
Notice: Signed certificate request for client
Notice: Removing file Puppet::SSL::CertificateRequest client at '/var/lib/puppet/ssl/ca/requests/client.pem'
[root@master ~]# puppet cert list --all
+ "client" (SHA256) 8A:6D:5E:A0:E0:14:BF:32:41:78:42:D2:A9:81:B8:70:14:4D:C1:DB:90:DC:C0:CC:79:F3:43:39:4F:CB:43:31
+ "master" (SHA256) EE:76:BE:A8:87:D2:6E:7E:54:A4:06:35:42:09:2E:9D:4B:F6:1D:40:62:42:E3:C4:F5:39:71:0A:E7:AD:13:00
[root@master ~]# ll /var/lib/puppet/ssl/ca/signed/
total 8
-rw-r----- 1 puppet puppet 1887 Jul 29 17:40 client.pem
-rw-r----- 1 puppet puppet 1887 Jul 29 17:09 master.pem
七,master端的配置文件
[root@master ~]# vim /etc/puppet/puppet.conf 默认的配置比较简单
[main] 控制整体的配置文件中所有的项
[server] 控制master端行为。 添加
Certname=master
[agent]只控制客户端的行为,如果与main有冲突,则以agent中的为准。如果没有会继续main的值。
[root@master ~]# puppet master --genconfig >> /root/master.conf 可以用puppet master生成master的配置文件需要重定向
[root@client ~]# puppet agent --genconfig > agent.conf 生成client的配置文件
[root@client ~]# puppet agent --no-daemonize --onetime --verbose --debug --server=master 指定与server通信,可以在配置文件中添加,那么此时在命令行中可以省略--server参数。
[root@client ~]# vim /etc/init.d/puppet 在agent段添加一行
server=master
[root@client ~]#/etc/init.d/puppet start
[root@client ~]# nestat -tunlp |grep 8139 客户端监控的端口
tcp 0 0 0.0.0.0:8139 0.0.0.0:* LISTEN 6919/ruby