puppet運(yùn)維自動化之cron管理
【導(dǎo)讀】
運(yùn)維人員經(jīng)常需要定時計(jì)劃,執(zhí)行安裝,更新,備份等作業(yè),頻繁的調(diào)度作業(yè)時間,如何實(shí)現(xiàn)批量,統(tǒng)一的計(jì)劃任務(wù),本篇就為大家介紹puppet運(yùn)維自動化之cron資源管理。
【cron基礎(chǔ)】
cron計(jì)劃任務(wù),先簡單介紹下contab的格式,以及如何使用crontab示例作業(yè)。
crontab格式:
f1f2f3f4f5program
- 其中f1是表示分鐘,f2表示小時,f3表示一個月份中的第幾日,f4表示月份,f5表示一個星期中的第幾天。program表示要執(zhí)行的程序。
- 當(dāng)f1為*時表示每分鐘都要執(zhí)行program,f2為*時表示每小時都要執(zhí)行程序,其余類推
- 當(dāng)f1為a-b時表示從第a分鐘到第b分鐘這段時間內(nèi)要執(zhí)行,f2為a-b時表示從第a到第b小時都要執(zhí)行。
- 當(dāng)f1為*/n時表示每n分鐘個時間間隔執(zhí)行一次,f2為*/n表示每n小時個時間間隔執(zhí)行一次。
- 當(dāng)f1為a,b,c,…時表示第a,b,c,…分鐘要執(zhí)行,f2為a,b,c,…時表示第a,b,c…個小時要執(zhí)行。
- 用戶也可以將所有的設(shè)定先存放在檔案file中,用crontabfile的方式來設(shè)定時程表。
crontab使用示例:
0,3018-23***/etc/init.d/smbrestart
上面的例子表示在每天18:00至23:00之間每隔30分鐘重啟smb服務(wù)。
【puppetcron介紹】
安裝和管理crontab任務(wù)
平臺
支持所有有crontab的平臺
例子
cron{logrotate: command=>"/usr/sbin/logrotate", user=>root, hour=>2, minute=>0 }
注意,所有的cron值可以用數(shù)組表示,例如
cron{logrotate: command=>"/usr/sbin/logrotate", user=>root, hour=>[2,4] }
或者使用范圍,或者*/2這樣的語法,
cron{logrotate: command=>"/usr/sbin/logrotate", user=>root, hour=>['2-4'], minute=>'*/10' }
【puppetcron參數(shù)】
除了用戶和command兩個參數(shù)以外,其他的參數(shù)都是可選項(xiàng)。
command:crontab要執(zhí)行的命令,環(huán)境變量按照系統(tǒng)本地規(guī)則進(jìn)行管理,推薦使用絕對路徑。
ensure:指定該資源是否啟用,可設(shè)置成true或false。
environment:在crontab環(huán)境里面指定環(huán)境變量,例如PATH=/bin:/usr/bin:/usr/sbin.
hour:運(yùn)行crontab的小時,可設(shè)置成0-23
minute:運(yùn)行crontab的分鐘,可設(shè)置成0-59
month:設(shè)置crontab運(yùn)行的月份,1-12
monthday:一個月份中的日子,1-31
name:該crontab的名字,這個名字用于管理員區(qū)分不同的crontab,以及puppet管理各種資源關(guān)系.
provider:指定provider,可用的provider有crontab默認(rèn)的crontab程序。special特殊的管理程序,只能在freebsd上面用。
target:crontab作業(yè)存放的位置。
user:把該crontab加到那個用戶的crontab列表,默認(rèn)是運(yùn)行puppet的用戶
weekday:運(yùn)行crontab的星期數(shù),0-7,周日是為0
【puppetcron測試】
1.以crontab格式運(yùn)行,例:同步時間服務(wù)器代碼示例:
cron{ntpdate: command=>"/usr/sbin/ntpdate192.168.0.1", user=>root, minute=>'*/5', require=>Package["crontabs"]; }
2.以文件的方式運(yùn)行計(jì)劃任務(wù)
file{"/etc/cron.hourly/ntpdate": mode=>755, owner=>root, group=>root, require=>Package[ntp], content=>template("ntp/ntpdate.erb"), }
【puppetcron總結(jié)】
運(yùn)維自動化是長期的工作,希望通過本篇的學(xué)習(xí),大家都能夠熟悉并掌握使用puppet管理cron資源。充分利用puppet強(qiáng)大的功能,實(shí)現(xiàn)簡單有效的管理。下一篇為大家介紹puppet運(yùn)維自動化之tidy管理。
請注意:puppet創(chuàng)建的cron文件保存在了/var/spool/cron目錄下,而不是我們習(xí)慣用的/etc/crontab或是/etc/cron.*下面。