Puppet Class: dockerinstall::swarm::worker

Defined in:
manifests/swarm/worker.pp

Summary

A short summary of the purpose of this class

Overview

A description of what this class does

Examples:

include dockerinstall::swarm::worker

Parameters:

  • enable (Boolean) (defaults to: true)
  • manager_node (Optional[ Variant[ Stdlib::Fqdn, Stdlib::IP::Address ] ]) (defaults to: undef)


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
# File 'manifests/swarm/worker.pp', line 7

class dockerinstall::swarm::worker (
  Boolean $enable = true,
  Optional[
    Variant[
      Stdlib::Fqdn,
      Stdlib::IP::Address
    ]
  ]       $manager_node = undef,
)
{
  include dockerinstall::params
  $swarm_enabled = $dockerinstall::params::swarm_enabled
  $is_manager    = $dockerinstall::params::is_swarm_manager
  $swarm         = $dockerinstall::params::swarm

  $is_worker     = ! $is_manager

  $node_name = $::fqdn
  $nodeid = $swarm['NodeID']

  if $enable {
    if $swarm_enabled {
      if $is_manager {
        # demote manager https://docs.docker.com/engine/reference/commandline/node_demote/
        exec { "docker node demote ${nodeid}":
          path => '/bin:/usr/bin',
        }
      }
    }
    else {
      if $manager_node {
        # apply exported resource to join swarm as worker
        Dockerinstall::Swarm::Node <<| title == "worker/${manager_node}" |>>
      }
    }
  }
  # need to disable worker role (leave swarm)
  elsif $swarm_enabled {
    # can leave swarm if quorum remains available
    # or if node is worker
    if ($is_manager and $swarm['Managers'] > 2) or $is_worker {
      # check if it is allowed to leave swarm
      exec { 'docker swarm leave --force':
        path => '/bin:/usr/bin',
      }
    }
  }
}