Puppet Class: dockerinstall::swarm::worker
- Defined in:
- manifests/swarm/worker.pp
Summary
A short summary of the purpose of this classOverview
A description of what this class does
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',
}
}
}
}
|