Puppet 学习(简单的模块应用)
1.创建一个模块的目录和文件结构,,这个结构将位于/etc/puppet/modules 目录下,我们将模块命名为cron,模块名(类名)必须是普通的字符,只能包含字母、数字、下划线以及短横线
每一个模块都需要一个特定的目录结构和一个叫做init.pp 的文件,这个目录结构能帮助puppet自动载入模块。为了载入模块,puppet会检查一系列被称为模块路径的目录,模块路径是有配置文件puppet.conf中[main]段的modulepath 配置设定的,默认情况下,路径在/etc/puppet/modules下
模块结构:
mkdir -p /etc/puppet/modules/cron/{files,manifests,templates}
我们会将大多数的配置脚本文件放在/etc/puppet/modules/cron/manifests目录下, manifests是puppet的脚本目录文件目录
创建init.pp文件,init.pp文件时模块的核心,每个模块必须拥有一个init.pp文件,files目录用户存放哪些属于模块一部分的文件,templates则是放置模块可能会用到的模板
2. 配置文件
在路径:/etc/puppet/modules/cron/manifests下
Vi init.pp
###功能说明:初始化文件
class cron {
case $operatingsystem {
CentOS: {
include cron::base
include cron::crontabs
include cron::addcron
}
RedHat: {
include cron::base
include cron::crontabs
include cron::addcron
}
}
}
root@SHWT11 manifests]# vi base.pp
##功能说明:安装cron包并启动服务
class cron::base {
package { cron:
name => $operatingsystem ? {
Ubuntu => "cron",
redhat => "vixie-cron",
centos => "vixie-cron",
},
ensure => present,
}
service { crond:
name => $operatingsystem ? {
ubuntu => "cron",
redhat => "crond",
centos => "crond",
},
ensure => running,
enable => true,
pattern => cron,
require => Package["cron"], ##处理依赖关系
}
模块是清单、资源、文件、模板、类以及定义的容器,一个模块应该包含配置一个特定的 应用程序所需的所有配置
Vi crontabs.pp
####功能说明,安装crontabs包
class cron::crontabs {
package { crontabs:
name => $operatingsystem ? {
redhat => "crontabs",
centos => "crontabs",
},
ensure => present,
}
}
上面三个文件是安装cron,并确保cron 服务处于运行(running)状态
[root@SHWT11 manifests]# vi rsync_bash.pp
##功能说明:添加crontab定时任务(每天8点到晚上22点,每半小时执行一次)
class cron::rsync_bash {
cron {bash:
command => "/bin/bash /root/vol_disk_check.sh",
user => "root",
hour => "8-22",
minute => "*/30";
}
}