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