用puppet管理cron,可以為N台伺服器大量新增cron作業。如定時同步時間伺服器的指令碼。
1、架構
192.168.0.200(redhat) 主機名稱master.gangpao.com
192.168.0.201(redhat) 主機名稱agent01.gangpao.com
2、目錄結構
/etc/puppet
|
|-->manifests
| |-->modules.pp
| |-->nodes.pp
| |-->site.pp
|-->modules
|-->cron
|-->manifests
|-->addcron.pp
|-->base.pp
|-->crontabs.pp
|-->init.pp
3、編寫指令碼
建創目錄結構
#mkdir -p /etc/puppet/manifests
#mkdir -p /etc/puppet/modules/cron/manifests
#cd /etc/puppet/modules/cron/manifests
(1)、編寫base.pp
功能說明:安裝cron包並啟動服務
#vim
class cron::base {
package { cron:
name => $operatingsystem ? { #facter 擷取用戶端作業系統確定包的名稱
ubuntu => "cron",
debian => "cron",
redhat => "vixie-cron",
centos => "vixie-cron",
},
ensure => present,
}
service { crond:
name => $operatingsystem ? { #確定啟動cron的名稱
ubuntu => "cron",
debian => "cron",
redhat => "crond",
centos => "crond",
},
ensure => running,
enable => true,
pattern => cron,
require => Package["cron"], #依賴關係
}
}
(2)、編寫crontabs.pp
功能說明:安裝crontabs包
#vim crontabs.pp
class cron::crontabs {
package { crontabs:
name => $operatingsystem ? {
redhat => "crontabs",
centos => "crontabs",
},
ensure => present,
}
}
(3)、編寫addcron.pp
功能說明:添加crontab定時任務(定時同步時間伺服器每4個小時同步的第1分鐘同步)
#vim addcron.pp
class cron::addcron {
cron { ntpdate:
command => "/usr/sbin/ntpdate time-b.timefreq.bldrdoc.gov",
user => root,
hour => */4,
minute => 1
}
}
(4)、編寫init.pp
功能說明:初始設定檔案
#vim init.php
class cron {
case $operatingsystem {
centos: {
include cron::base
include cron::crontabs
}
redhat: {
include cron::base
include cron::crontabs
include cron::addcron #這三行實現安裝添加cron功能
}
debian: { include cron::base }
ubuntu: { include cron::base }
freebsd: { }
}
}
(5)、編寫主manifests檔案實現讓用戶端安裝cron和添加一條crontab作業。
#cd /etc/puppet/manifests
#vim modules.pp #載入cron模組
import "cron"
#vim nodes.pp #用戶端節點管理檔案
node agent01.gangpao.com{
include cron
}
#vim site.pp #載入modules.pp 和nodes.pp
import "modules.pp"
import "nodes.pp"
4、執行指令碼
服務端
#puppetmasterd -d --no-daemonize -v --trace
用戶端
#puppet agent --server master.gangpao.com --test
info: Caching catalog for agent01.gangpao.com
info: Applying configuration version 1310314253
notice: /Stage[main]/Cron::Addcron/Cron[ntpdate]/minute: minute changed 0 to 1
notice: /Stage[main]/Cron::Addcron/Cron[ntpdate]/hour: hour changed */2 to */4
notice: Finished catalog run in 6.65 seconds
查看
[root@agent01 puppet]# crontab -l
# HEADER: This file was autogenerated at Mon Jul 11 00:10:19 +0800 2011 by puppet.
# HEADER: While it can still be managed manually, it is definitely not recommended.
# HEADER: Note particularly that the comments starting with Puppet Name should
# HEADER: not be deleted, as doing so could cause duplicate cron jobs.
# Puppet Name: ntpdate
1 */4 * * * /usr/sbin/ntpdate time-b.timefreq.bldrdoc.gov
可以看到用戶端的crontab改變了。