Puppet Class: scaleio::mdm_server

Defined in:
manifests/mdm_server.pp

Overview

Parameters:

  • ensure (Any) (defaults to: 'present')
  • is_manager (Any) (defaults to: undef)
  • master_mdm_name (Any) (defaults to: undef)
  • mdm_ips (Any) (defaults to: undef)
  • mdm_management_ips (Any) (defaults to: undef)


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
}