puppet是一个配置管理工具, 典型的, puppet是一个C/S结构, 当然,这里的C可以有很多,因此,也可以说是一个星型结构. 所有的puppet客户端同一个服务器端的puppet通讯. 每个puppet客户端每半小时(可以设置)连接一次服务器端, 下载最新的配置文件,并且严格按照配置文件来配置服务器. 配置完成以后,puppet客户端可以反馈给服务器端一个消息. 如果出错,也会给服务器端反馈一个消息,作为系统管理员的你可以更快的完成工作,因为你可以用puppet来处理所有的管理细节. 甚至你还可以下载其他管理员的puppet代码来让你的工作完成的更快
puppet的目的是让你只集中于你要管理的目标,而忽略实现的细节,例如命令名,参数或者文件格式. puppet把系统里面的用户,软件包,服务 看作是"资源", puppet的作用就是管理这些资源以及资源之间的相互联系.
puppet既可以在单机上使用,也可以以c/s结构使用.在大规模使用puppet的情况下,通常使用c/s结构.在这种结构中puppet客户端只是指运行puppet的服务器,puppet服务器端是只运行puppetmaster的服务器.
puppet客户端首先会连接到puppet服务器端,并且通过facter 工具把客户端的配置信息发送给服务器端. 服务器端通过分析客户端的主机名,通过node 定义,找到该主机的配置代码,然后编译配置代码,把编译好的配置代码发回客户端. 客户端执行代码完成配置.并且把代码执行情况反馈给puppet服务器端.
实验:
server:desktop93.example.com
client:desktop100.example.com(这里只有一个客户端)
下载软件:
facter-1.6.13-1.el6.x86_64.rpm rubygem-json-1.4.6-1.el6.x86_64.rpm
hiera-1.1.0-1.el6.noarch.rpm rubygem-rake-0.8.7-2.1.el6.noarch.rpm
puppet-3.0.1-1.el6.noarch.rpm rubygems-1.3.7-1.el6.noarch.rpm
puppet-server-3.0.1-1.el6.noarch.rpm ruby-shadow-1.4.1-13.el6.x86_64.rpm
ruby-augeas-0.4.1-1.el6.x86_64.rpm
server端安装:puppet-server client端安装:puppet
1.客户端发起认证:
2.服务器端确认:
3.证书被确认:
4.服务器端:cd /etc/puppet/manifests/ ; touch size.pp
/etc/init.d/puppetmaster start
5.客户端: /etc/init.d/puppet start
6.测试1: server: vi /etc/puppet/manifests/size.pp
file { "/var/www/html/index.html": content => "www.example.com" }
(参考: / 资源管理类型指南)
client: puppet agent --server=desktop93.example.com --no-daemonize --onetime
(会自动下载最新的配置文件,并运行)
server: cat /var/www/html/index.html
表示成功
测试2:vi /etc/puppet/manifests/size.pp
file { "/public":
ensure => directory
}
mount { "/public":
device => "192.168.0.254:/var/ftp/pub",
fstype => "nfs",
options => "defaults",
ensure => mounted
}
client:
自动签证:在 server 端, 编辑 puppet.conf 文件:
[main]
autosign = true #允许所有客户端的认证
/etc/puppet 目录下创建 autosign.conf 文件,内容如下:
*.example.com #表示允许所有 example.com 域的主机
# service puppetmaster reload
web监控记录:
server:所需软件安装:
rpm -ivh ruby-mysql-2.8.2-1.el6.x86_64.rpm
rpm -ivh puppet-dashboard-1.2.12-1.el6.noarch.rpm
yum install mysql-server -y
/etc/init.d/mysqld start
cd /usr/share/puppet-dashboard/config/ ;
vi database.yml
production:
database: dashboard_production
username: dashboard
password: westos
encoding: utf8
adapter: mysql
vi test.sql
CREATE DATABASE dashboard_production CHARACTER SET utf8;
CREATE USER 'dashboard'@'localhost' IDENTIFIED BY 'westos';
GRANT ALL PRIVILEGES ON dashboard_production.* TO 'dashboard'@'localhost';
mysql < test.sql ---创建所需数据库
vi settings.yml
time_zone: 'Beijing' ---时区设置
cd /usr/share/puppet-dashboard/
rake RAILS_ENV=production db:migrate ---建立 dashboard 所需的数据库和表
/etc/init.d/puppet-dashboard start
/etc/init.d/puppet-dashboard-workers start ---有提示
chmod 0666 /usr/share/puppet-dashboard/log/production.log
/etc/init.d/puppet-dashboard-workers restart
vi /etc/puppet/puppet.conf
[main]
reports = http
reporturl = :3000/reports
/etc/init.d/puppetmaster reload
client端配置:
vi /etc/puppet/puppet.conf
[agent]
report = true
/etc/init.d/puppet reload
试着在服务器端增加一个条规则,在客户端执行更新,访问:http:desktop93.
example.com:3000
相关配置:
server: /etc/sysconfig/puppet
PUPPET_SERVER=puppet 主机地址
PUPPET_PORT=8140 监听端口
PUPPET_LOG=/var/lo
g/puppet/pupp
et.log 本地日志
PUPPET_EXTRA_OPTS=--waitforcert=500 默认同步时间
client:/etc/puppet/puppet.conf
[agent]
runinternal = 60 60秒与服务器同步一次
Puppet 学习系列:
相关阅读: