36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
|
# File 'manifests/init.pp', line 36
class powerman (
Enum['present', 'absent'] $ensure = 'present',
Boolean $manage_epel = true,
Boolean $server = true,
Stdlib::IP::Address $listen = '127.0.0.1',
Stdlib::Host $powerman_server = $::fqdn,
Stdlib::Port $powerman_port = 10101,
Optional[Boolean] $tcpwrappers = undef,
Stdlib::Absolutepath $cfgfile = '/etc/powerman/powerman.conf',
Stdlib::Absolutepath $driver_dir = '/etc/powerman',
Array $driver_list = ['powerman','ipmipower'],
Hash $aliases = {},
Hash $devices = {},
Hash $nodes = {},
Stdlib::Absolutepath $pid_dir = '/var/run/powerman',
String $user = 'daemon',
) {
if $ensure == 'present' {
$package_ensure = 'present'
$file_ensure = 'file'
if $server {
$service_ensure = 'running'
$service_enable = true
} else {
$service_ensure = 'stopped'
$service_enable = false
}
} else {
$package_ensure = 'absent'
$file_ensure = 'absent'
$service_ensure = 'stopped'
$service_enable = false
}
if dig($facts, 'os', 'family') == 'RedHat' {
if $manage_epel {
include ::epel
Yumrepo['epel'] -> Package['powerman']
}
}
package { 'powerman':
ensure => $package_ensure,
}
if $server {
file { $driver_dir:
ensure => 'directory',
owner => 'root',
group => 'root',
mode => '0755',
require => Package['powerman'],
}
concat { $cfgfile:
ensure => 'present',
owner => $user,
group => 'root',
mode => '0640',
show_diff => false,
require => Package['powerman'],
}
concat::fragment { 'powerman.conf.header':
target => $cfgfile,
content => template('powerman/etc/powerman/powerman.conf.header.erb'),
order => '01',
}
$aliases.each |$name, $alias| {
powerman::alias { $name: * => $alias }
}
$devices.each |$name, $device| {
powerman::device { $name: * => $device }
}
$nodes.each |$name, $node| {
powerman::node { $name: * => $node }
}
# Hack because EPEL RPM missing PID dir
file { $pid_dir:
ensure => 'directory',
owner => $user,
group => 'root',
mode => '0755',
require => Package['powerman'],
before => Service['powerman'],
}
service { 'powerman':
ensure => $service_ensure,
enable => $service_enable,
hasstatus => true,
hasrestart => true,
subscribe => Concat[$cfgfile],
}
} else {
service { 'powerman':
ensure => $service_ensure,
enable => $service_enable,
require => Package['powerman'],
}
file { '/etc/profile.d/powerman.sh':
ensure => $file_ensure,
content => template('powerman/etc/profile.d/powerman.sh.erb'),
owner => 'root',
group => 'root',
mode => '0644',
}
file { '/etc/profile.d/powerman.csh':
ensure => $file_ensure,
content => template('powerman/etc/profile.d/powerman.csh.erb'),
owner => 'root',
group => 'root',
mode => '0644',
}
}
}
|