參考: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秒與服務器同步一次