参考:http://puppet.wikidot.com html
puppet是一个配置管理工具, 典型的, puppet是一个C/S结构, 固然,这里的C能够有不少,所以,也能够说是一个星型结构. 全部的puppet客户端同一个服务器端的puppet通信. 每一个puppet客户端每半小时(能够设置)链接一次服务器端, 下载最新的配置文件,而且严格按照配置文件来配置服务器. 配置完成之后,puppet客户端能够反馈给服务器端一个消息. 若是出错,也会给服务器端反馈一个消息,做为系统管理员的你能够更快的完成工做,由于你能够用puppet来处理全部的管理细节. 甚至你还能够下载其余管理员的puppet代码来让你的工做完成的更快 node
puppet的目的是让你只集中于你要管理的目标,而忽略实现的细节,例如命令名,参数或者文件格式. puppet把系统里面的用户,软件包,服务 看做是"资源", puppet的做用就是管理这些资源以及资源之间的相互联系. mysql
puppet既能够在单机上使用,也能够以c/s结构使用.在大规模使用puppet的状况下,一般使用c/s结构.在这种结构中puppet客户端只是指运行puppet的服务器,puppet服务器端是只运行puppetmaster的服务器. linux
puppet客户端首先会链接到puppet服务器端,而且经过facter 工具把客户端的配置信息发送给服务器端. 服务器端经过分析客户端的主机名,经过node 定义,找到该主机的配置代码,而后编译配置代码,把编译好的配置代码发回客户端. 客户端执行代码完成配置.而且把代码执行状况反馈给puppet服务器端. web
实验: sql
server:desktop93.example.com 数据库
client:desktop100.example.com(这里只有一个客户端) json
下载软件: ruby
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" }
(参考:http://puppet.wikidot.com / 资源管理类型指南)
client: puppet agent --server=desktop93.example.com --no-daemonize --onetime
(会自动下载最新的配置文件,并运行)
server: cat /var/www/html/index.html
www.example.com 表示成功
测试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 = http://192.168.0.93: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秒与服务器同步一次