Puppet集中配置管理系统详解


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" } 

(参考: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秒与服务器同步一次

Puppet 学习系列:

Puppet 学习一:安装及简单实例应用

Puppet学习二:简单模块配置和应用

有关Puppet agent端三种备份恢复方案探讨研究
选择更安全的方式注册你的Puppet节点
通过配置SSH深刻理解Puppet的语法及工作机制
Puppet利用Nginx多端口实现负载均衡
CentOS(5和6)下Puppet的C/S模式实例

Puppet 的详细介绍:请点这里
Puppet 的下载地址:请点这里

本文永久更新链接地址

相关内容