puppet/raid/manifests/init.pp
2015-05-04 11:03:26 +03:00

119 lines
2.7 KiB
Puppet

# Install tools for detected raid controllers.
#
class raid::tools {
if $::raid {
$controllers = split($::raid, ',')
if "smartarray" in $controllers {
include raid::tools::hpacucli
}
if "linux-md" in $controllers {
include raid::tools::mdadm
}
if "megaraid" in $controllers {
include raid::tools::megacli
}
}
}
# Install HP SmartArray tools.
#
class raid::tools::hpacucli {
case $::operatingsystem {
"centos","redhat": {
include yum::repo::hpspp
package { "hpacucli":
ensure => installed,
require => Yum::Repo["hpspp"],
}
}
default: {
fail("raid::tools::smartarray not supported in ${::operatingsystem}")
}
}
}
# Install Linux software raid tools (mdadm).
#
class raid::tools::mdadm {
if $::kernel != "Linux" {
fail("raid::tools::mdadm not supported in ${::operatingsystem}")
}
package { "mdadm":
ensure => installed,
}
case $::operatingsystem {
"centos", "fedora": {
file { "/etc/mdadm.conf":
ensure => present,
replace => false,
content => "MAILADDR root\n",
mode => "0644",
owner => "root",
group => "root",
require => Package["mdadm"],
notify => Service["mdadm"],
}
}
default: { }
}
service { "mdadm":
ensure => running,
name => $::operatingsystem ? {
"centos" => "mdmonitor",
"fedora" => "mdmonitor",
default => "mdadm",
},
enable => true,
hasstatus => true,
require => Package["mdadm"],
}
}
# Install MegaCli.
#
# Download MegaCli RPM from:
# http://www.lsi.com/support/Pages/Download-Results.aspx?keyword=MegaCli
#
# === Global variables
#
# $raid_megacli_package:
# Name of MegaCli package.
#
class raid::tools::megacli {
if ! $::raid_megacli_package {
fail("Must define \$raid_megacli_package")
}
if ! ($::operatingsystem in ["CentOS", "RedHat"]) {
fail("raid::tools::megacli not supported in ${::operatingsystem}")
}
file { "/usr/local/src/${::raid_megacli_package}":
ensure => present,
mode => "0644",
owner => "root",
group => "root",
source => "puppet:///files/packages/${::raid_megacli_package}",
before => Package["MegaCli"],
}
package { "MegaCli":
ensure => latest,
provider => "rpm",
source => "/usr/local/src/${::raid_megacli_package}",
}
}