3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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
|
# File 'manifests/mdm_server.pp', line 3
class scaleio::mdm_server (
$ensure = 'present', # present|absent - Install or remove MDM service
$is_manager = undef, # 0|1 - Tiebreaker or Manager
$master_mdm_name = undef, # string - Name of the master node
$mdm_ips = undef, # string - MDM IPs
$mdm_management_ips = undef, # string - MDM management IPs
)
{
$mdm_package = $::osfamily ? {
'RedHat' => 'EMC-ScaleIO-mdm',
'Debian' => 'emc-scaleio-mdm',
}
$provider = "${::osfamily}${::operatingsystemmajrelease}" ? {
'RedHat6' => 'upstart',
default => undef,
}
if $ensure == 'absent' {
package { [$mdm_package]:
ensure => 'absent',
}
}
else {
firewall { '001 Open Ports 6611 and 9011 for ScaleIO MDM':
dport => [6611, 9011],
proto => tcp,
action => accept,
}
scaleio::common_server { 'install common packages for MDM': } ->
package { ['mutt', 'python', 'python-paramiko']:
ensure => installed,
} ->
package { [$mdm_package]:
ensure => $ensure,
}
service { 'mdm':
ensure => 'running',
enable => true,
hasstatus => true,
require => Package[$mdm_package],
provider => $provider
}
if $is_manager != undef {
file_line { 'mdm role':
path => '/opt/emc/scaleio/mdm/cfg/conf.txt',
line => "actor_role_is_manager=${is_manager}",
match => '^actor_role_is_manager',
require => Package[$mdm_package],
notify => Service['mdm'],
before => [Exec['create_cluster']],
}
}
# Cluster creation is here
$opts = '--approve_certificate --accept_license --create_mdm_cluster --use_nonsecure_communication'
$master_opts = "--master_mdm_name ${master_mdm_name} --master_mdm_ip ${mdm_ips}"
$management_ip_opts = $mdm_management_ips ? {
undef => '',
default => "--master_mdm_management_ip ${mdm_management_ips}"
}
exec { 'create_cluster':
onlyif => "test -n '${master_mdm_name}'",
require => Service['mdm'],
# Sleep is needed here because service in role changing can be still alive and not restarted
command => "sleep 2 ; scli --query_cluster --approve_certificate || scli ${opts} ${master_opts} ${management_ip_opts}",
path => '/bin:/usr/bin',
tries => 5,
try_sleep => 5,
}
}
# TODO:
# "absent" cleanup
# Configure ports
}
|